public function removeCriteria($filters, Revision $revision, $criteriaField) { $rawData = $revision->getRawData(); if (!isset($rawData[$criteriaField])) { $rawData[$criteriaField] = []; } $criteriaFieldType = $revision->getContentType()->getFieldType()->__get('ems_' . $criteriaField); $multipleField = $this->getMultipleField($criteriaFieldType); $found = false; foreach ($rawData[$criteriaField] as $index => $criteriaSet) { $found = true; foreach ($filters as $criterion => $value) { if ($criterion != $multipleField && $value != $criteriaSet[$criterion]) { $found = false; break; } } if ($found) { if ($multipleField) { $indexKey = array_search($filters[$multipleField], $criteriaSet[$multipleField]); if ($indexKey === FALSE) { $this->addFlash('notice', 'Criteria not found in multiple key'); } else { unset($rawData[$criteriaField][$index][$multipleField][$indexKey]); $rawData[$criteriaField][$index][$multipleField] = array_values($rawData[$criteriaField][$index][$multipleField]); if (count($rawData[$criteriaField][$index][$multipleField]) == 0) { unset($rawData[$criteriaField][$index]); $rawData[$criteriaField] = array_values($rawData[$criteriaField]); } if (!$revision->getDraft()) { $revision = $this->dataService->initNewDraft($revision->getContentType()->getName(), $revision->getOuuid(), $revision); } $revision->setRawData($rawData); $this->addFlash('notice', '<b>Remove</b> ' . $multipleField . ' with value ' . $filters[$multipleField] . ' from ' . $revision); return $revision; } } else { unset($rawData[$criteriaField][$index]); $rawData[$criteriaField][$index] = array_values($rawData[$criteriaField][$index]); if (!$revision->getDraft()) { $revision = $this->dataService->initNewDraft($revision->getContentType()->getName(), $revision->getOuuid(), $revision); } $revision->setRawData($rawData); $this->addFlash('notice', '<b>Remove</b> from ' . $revision); return $revision; } break; } } if (!$found) { $this->addFlash('notice', 'Criteria not found for ' . $revision); } return false; }
public function loadDataStructure(Revision $revision) { $data = new DataField(); $data->setFieldType($revision->getContentType()->getFieldType()); $data->setOrderKey($revision->getContentType()->getFieldType()->getOrderKey()); $revision->setDataField($data); $revision->getDataField()->updateDataStructure($revision->getContentType()->getFieldType()); $object = $revision->getRawData(); $data->updateDataValue($object); if (count($object) > 0) { $html = DataService::arrayToHtml($object); $this->session->getFlashBag()->add('warning', "Some data of this revision were not consumed by the content type:" . $html); } }