protected function createFilter($name, $conjunction, $context, $private, $user = null) { $filter = new Filter(); $filter->setConjunction($conjunction); $filter->setContext($context); $filter->setChanged(new \DateTime()); $filter->setCreated(new \DateTime()); $filter->setPrivate($private); $filter->setUser($user); $filter->setCreator($this->getTestUser()); $filter->setChanger($this->getTestUser()); $trans = new FilterTranslation(); $trans->setLocale('de'); $trans->setName($name); $trans->setFilter($filter); $filter->addTranslation($trans); $conditionGroup1 = new ConditionGroup(); $conditionGroup1->setFilter($filter); $conditionGroup1->addCondition($this->createCondition($conditionGroup1, DataTypes::STRING_TYPE, 'test', 'LIKE', 'name')); $conditionGroup2 = new ConditionGroup(); $conditionGroup2->setFilter($filter); $conditionGroup2->addCondition($this->createCondition($conditionGroup2, DataTypes::NUMBER_TYPE, '2', '=', 'id')); $conditionGroup3 = new ConditionGroup(); $conditionGroup3->setFilter($filter); $conditionGroup3->addCondition($this->createCondition($conditionGroup3, DataTypes::DATETIME_TYPE, '2015-01-01', '>', 'created')); $conditionGroup3->addCondition($this->createCondition($conditionGroup3, DataTypes::DATETIME_TYPE, '2015-02-02', '<', 'created')); $filter->addConditionGroup($conditionGroup1); $filter->addConditionGroup($conditionGroup2); $filter->addConditionGroup($conditionGroup3); $this->em->persist($filter); $this->em->persist($trans); $this->em->persist($conditionGroup1); $this->em->persist($conditionGroup2); $this->em->persist($conditionGroup3); return $filter; }
/** * Adds a condition group to the given filter. * * @param Filter $filter The filter to add the condition group to * @param array $conditionGroupData The array containing the data for the additional condition group * * @return bool * * @throws EntityIdAlreadySetException * @throws FilterDependencyNotFoundException */ protected function addConditionGroup(Filter $filter, $conditionGroupData) { if (array_key_exists('id', $conditionGroupData)) { throw new EntityIdAlreadySetException(self::$conditionGroupEntityName, $conditionGroupData['id']); } elseif (array_key_exists('conditions', $conditionGroupData)) { $conditionGroup = new ConditionGroupEntity(); $conditionGroup->setFilter($filter->getEntity()); foreach ($conditionGroupData['conditions'] as $conditionData) { if (array_key_exists('id', $conditionData)) { throw new EntityIdAlreadySetException(self::$conditionEntityName, $conditionData['id']); } elseif ($this->isValidConditionData($conditionData)) { $condition = new ConditionEntity(); $condition->setType($conditionData['type']); $value = $this->getValueForCondition($conditionData['value'], $conditionData['type']); $condition->setValue($value); $condition->setOperator($conditionData['operator']); $condition->setField($conditionData['field']); $condition->setConditionGroup($conditionGroup); $conditionGroup->addCondition($condition); $conditionGroup->setFilter($filter->getEntity()); $this->em->persist($condition); } } $filter->getEntity()->addConditionGroup($conditionGroup); $this->em->persist($conditionGroup); } return true; }