mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-13 05:44:24 +00:00
make aggregators take role into accoutn
This commit is contained in:
parent
b7f92a71cf
commit
8726f6faee
@ -26,13 +26,11 @@ use Doctrine\ORM\QueryBuilder;
|
|||||||
*
|
*
|
||||||
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
||||||
*/
|
*/
|
||||||
interface AggregatorInterface
|
interface AggregatorInterface extends ExportElementInterface
|
||||||
{
|
{
|
||||||
public function applyOn();
|
public function applyOn();
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder);
|
public function buildForm(FormBuilderInterface $builder);
|
||||||
|
|
||||||
public function alterQuery(QueryBuilder $qb, $data);
|
public function alterQuery(QueryBuilder $qb, $data);
|
||||||
|
|
||||||
public function getTitle();
|
|
||||||
}
|
}
|
||||||
|
@ -247,6 +247,10 @@ class ExportManager
|
|||||||
* Return a \Generator containing filter which support type. If `$centers` is
|
* Return a \Generator containing filter which support type. If `$centers` is
|
||||||
* not null, restrict the given filters to the center the user have access to.
|
* not null, restrict the given filters to the center the user have access to.
|
||||||
*
|
*
|
||||||
|
* if $centers is null, the function will returns all filters where the user
|
||||||
|
* has access in every centers he can reach (if the user can use the filter F in
|
||||||
|
* center A, but not in center B, the filter F will not be returned)
|
||||||
|
*
|
||||||
* @param string[] $types
|
* @param string[] $types
|
||||||
* @param \Chill\MainBundle\Entity\Center[] $centers the centers where the user have access to
|
* @param \Chill\MainBundle\Entity\Center[] $centers the centers where the user have access to
|
||||||
* @return FilterInterface[] a \Generator that contains filters. The key is the filter's alias
|
* @return FilterInterface[] a \Generator that contains filters. The key is the filter's alias
|
||||||
@ -266,7 +270,7 @@ class ExportManager
|
|||||||
* center, false if the user hasn't access to element for at least one center.
|
* center, false if the user hasn't access to element for at least one center.
|
||||||
*
|
*
|
||||||
* @param \Chill\MainBundle\Export\ExportElementInterface $element
|
* @param \Chill\MainBundle\Export\ExportElementInterface $element
|
||||||
* @param array|null $centers, if null, the function take into account all the reachables centers for the current user
|
* @param array|null $centers, if null, the function take into account all the reachables centers for the current user and the role given by element::requiredRole
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function isGrantedForElement(ExportElementInterface $element, array $centers = null)
|
public function isGrantedForElement(ExportElementInterface $element, array $centers = null)
|
||||||
@ -317,10 +321,11 @@ class ExportManager
|
|||||||
* @param string[] $types
|
* @param string[] $types
|
||||||
* @return AggregatorInterface[] a \Generator that contains aggretagors. The key is the filter's alias
|
* @return AggregatorInterface[] a \Generator that contains aggretagors. The key is the filter's alias
|
||||||
*/
|
*/
|
||||||
public function &getAggregatorsApplyingOn(array $types)
|
public function &getAggregatorsApplyingOn(array $types, array $centers = null)
|
||||||
{
|
{
|
||||||
foreach ($this->aggregators as $alias => $aggregator) {
|
foreach ($this->aggregators as $alias => $aggregator) {
|
||||||
if (in_array($aggregator->applyOn(), $types)) {
|
if (in_array($aggregator->applyOn(), $types) &&
|
||||||
|
$this->isGrantedForElement($aggregator, $centers)) {
|
||||||
yield $alias => $aggregator;
|
yield $alias => $aggregator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,8 @@ class ExportType extends AbstractType
|
|||||||
|
|
||||||
//add aggregators
|
//add aggregators
|
||||||
$aggregators = $this->exportManager
|
$aggregators = $this->exportManager
|
||||||
->getAggregatorsApplyingOn($export->supportsModifiers());
|
->getAggregatorsApplyingOn($export->supportsModifiers(),
|
||||||
|
$options['picked_centers']);
|
||||||
$aggregatorBuilder = $builder->create('aggregators', 'form',
|
$aggregatorBuilder = $builder->create('aggregators', 'form',
|
||||||
array('compound' => true));
|
array('compound' => true));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user