Пример #1
0
 /**
  * Filter menu items
  * 
  * @access public
  * @param array $data filter data
  */
 public function filterMenuItems($data)
 {
     $menuItemFilterFields = array("type", "title", "directUrl", "menu", "status");
     $menuItemFieldsFilterByLike = array("title", "directUrl");
     $data = array_intersect_key($data, array_flip($menuItemFilterFields));
     if (!empty($data["menu"])) {
         $data["menu"] = $this->query->find('CMS\\Entity\\Menu', $data["menu"]);
     }
     $criteria = Criteria::create();
     $expr = Criteria::expr();
     foreach ($data as $fieldName => $fieldValue) {
         // only submitted values are used in filter
         if ($fieldValue != "") {
             $expressionMethod = "eq";
             if (in_array($fieldName, $menuItemFieldsFilterByLike)) {
                 $expressionMethod = "contains";
             }
             $criteria->andWhere($expr->{$expressionMethod}($fieldName, $fieldValue));
         }
     }
     $this->setCriteria($criteria);
 }