Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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);
     }
 }