Skip to content

Commit 1051abc

Browse files
bigfoot90jmikola
authored andcommitted
Support filter parameters in Configuration
1 parent 9eb0f73 commit 1051abc

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

lib/Doctrine/ODM/MongoDB/Configuration.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,10 +354,14 @@ public function setDefaultCommitOptions($defaultCommitOptions)
354354
*
355355
* @param string $name The name of the filter.
356356
* @param string $className The class name of the filter.
357+
* @param array $parameters The parameters of the filter.
357358
*/
358-
public function addFilter($name, $className)
359+
public function addFilter($name, $className, array $parameters = array())
359360
{
360-
$this->attributes['filters'][$name] = $className;
361+
$this->attributes['filters'][$name] = array(
362+
'className' => $className,
363+
'parameters' => $parameters
364+
);
361365
}
362366

363367
/**
@@ -371,7 +375,22 @@ public function addFilter($name, $className)
371375
public function getFilterClassName($name)
372376
{
373377
return isset($this->attributes['filters'][$name])
374-
? $this->attributes['filters'][$name]
378+
? $this->attributes['filters'][$name]['className']
379+
: null;
380+
}
381+
382+
/**
383+
* Gets the parameters for a given filter name.
384+
*
385+
* @param string $name The name of the filter.
386+
*
387+
* @return string The array containig the filter parameters, or null of it is not
388+
* defined.
389+
*/
390+
public function getFilterParameters($name)
391+
{
392+
return isset($this->attributes['filters'][$name])
393+
? $this->attributes['filters'][$name]['parameters']
375394
: null;
376395
}
377396
}

lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,14 @@ public function enable($name)
9292

9393
if ( ! $this->isEnabled($name)) {
9494
$filterClass = $this->config->getFilterClassName($name);
95-
$this->enabledFilters[$name] = new $filterClass($this->dm);
95+
$filterParameters = $this->config->getFilterParameters($name);
96+
$filter = new $filterClass($this->dm);
97+
98+
foreach ($filterParameters as $param => $value) {
99+
$filter->setParameter($param, $value);
100+
}
101+
102+
$this->enabledFilters[$name] = $filter;
96103
}
97104

98105
return $this->enabledFilters[$name];

0 commit comments

Comments
 (0)