| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 | 
							- <?php
 
- /*
 
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
-  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
-  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
-  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
-  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
-  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
-  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
-  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
-  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-  *
 
-  * This software consists of voluntary contributions made by many individuals
 
-  * and is licensed under the MIT license. For more information, see
 
-  * <http://www.doctrine-project.org>.
 
-  */
 
- namespace Doctrine\Common\Collections;
 
- use Doctrine\Common\Collections\Expr\Expression;
 
- use Doctrine\Common\Collections\Expr\CompositeExpression;
 
- /**
 
-  * Criteria for filtering Selectable collections.
 
-  *
 
-  * @author Benjamin Eberlei <kontakt@beberlei.de>
 
-  * @since 2.3
 
-  */
 
- class Criteria
 
- {
 
-     /**
 
-      * @var string
 
-      */
 
-     const ASC  = 'ASC';
 
-     /**
 
-      * @var string
 
-      */
 
-     const DESC = 'DESC';
 
-     /**
 
-      * @var \Doctrine\Common\Collections\ExpressionBuilder|null
 
-      */
 
-     private static $expressionBuilder;
 
-     /**
 
-      * @var \Doctrine\Common\Collections\Expr\Expression|null
 
-      */
 
-     private $expression;
 
-     /**
 
-      * @var string[]
 
-      */
 
-     private $orderings = array();
 
-     /**
 
-      * @var int|null
 
-      */
 
-     private $firstResult;
 
-     /**
 
-      * @var int|null
 
-      */
 
-     private $maxResults;
 
-     /**
 
-      * Creates an instance of the class.
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public static function create()
 
-     {
 
-         return new static();
 
-     }
 
-     /**
 
-      * Returns the expression builder.
 
-      *
 
-      * @return \Doctrine\Common\Collections\ExpressionBuilder
 
-      */
 
-     public static function expr()
 
-     {
 
-         if (self::$expressionBuilder === null) {
 
-             self::$expressionBuilder = new ExpressionBuilder();
 
-         }
 
-         return self::$expressionBuilder;
 
-     }
 
-     /**
 
-      * Construct a new Criteria.
 
-      *
 
-      * @param Expression    $expression
 
-      * @param string[]|null $orderings
 
-      * @param int|null      $firstResult
 
-      * @param int|null      $maxResults
 
-      */
 
-     public function __construct(Expression $expression = null, array $orderings = null, $firstResult = null, $maxResults = null)
 
-     {
 
-         $this->expression = $expression;
 
-         $this->setFirstResult($firstResult);
 
-         $this->setMaxResults($maxResults);
 
-         if (null !== $orderings) {
 
-             $this->orderBy($orderings);
 
-         }
 
-     }
 
-     /**
 
-      * Sets the where expression to evaluate when this Criteria is searched for.
 
-      *
 
-      * @param Expression $expression
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function where(Expression $expression)
 
-     {
 
-         $this->expression = $expression;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Appends the where expression to evaluate when this Criteria is searched for
 
-      * using an AND with previous expression.
 
-      *
 
-      * @param Expression $expression
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function andWhere(Expression $expression)
 
-     {
 
-         if ($this->expression === null) {
 
-             return $this->where($expression);
 
-         }
 
-         $this->expression = new CompositeExpression(CompositeExpression::TYPE_AND, array(
 
-             $this->expression, $expression
 
-         ));
 
-         return $this;
 
-     }
 
-     /**
 
-      * Appends the where expression to evaluate when this Criteria is searched for
 
-      * using an OR with previous expression.
 
-      *
 
-      * @param Expression $expression
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function orWhere(Expression $expression)
 
-     {
 
-         if ($this->expression === null) {
 
-             return $this->where($expression);
 
-         }
 
-         $this->expression = new CompositeExpression(CompositeExpression::TYPE_OR, array(
 
-             $this->expression, $expression
 
-         ));
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the expression attached to this Criteria.
 
-      *
 
-      * @return Expression|null
 
-      */
 
-     public function getWhereExpression()
 
-     {
 
-         return $this->expression;
 
-     }
 
-     /**
 
-      * Gets the current orderings of this Criteria.
 
-      *
 
-      * @return string[]
 
-      */
 
-     public function getOrderings()
 
-     {
 
-         return $this->orderings;
 
-     }
 
-     /**
 
-      * Sets the ordering of the result of this Criteria.
 
-      *
 
-      * Keys are field and values are the order, being either ASC or DESC.
 
-      *
 
-      * @see Criteria::ASC
 
-      * @see Criteria::DESC
 
-      *
 
-      * @param string[] $orderings
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function orderBy(array $orderings)
 
-     {
 
-         $this->orderings = array_map(
 
-             function ($ordering) {
 
-                 return strtoupper($ordering) === Criteria::ASC ? Criteria::ASC : Criteria::DESC;
 
-             },
 
-             $orderings
 
-         );
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the current first result option of this Criteria.
 
-      *
 
-      * @return int|null
 
-      */
 
-     public function getFirstResult()
 
-     {
 
-         return $this->firstResult;
 
-     }
 
-     /**
 
-      * Set the number of first result that this Criteria should return.
 
-      *
 
-      * @param int|null $firstResult The value to set.
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function setFirstResult($firstResult)
 
-     {
 
-         $this->firstResult = null === $firstResult ? null : (int) $firstResult;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets maxResults.
 
-      *
 
-      * @return int|null
 
-      */
 
-     public function getMaxResults()
 
-     {
 
-         return $this->maxResults;
 
-     }
 
-     /**
 
-      * Sets maxResults.
 
-      *
 
-      * @param int|null $maxResults The value to set.
 
-      *
 
-      * @return Criteria
 
-      */
 
-     public function setMaxResults($maxResults)
 
-     {
 
-         $this->maxResults = null === $maxResults ? null : (int) $maxResults;
 
-         return $this;
 
-     }
 
- }
 
 
  |