コード例 #1
0
ファイル: ClassTest.php プロジェクト: ngocanh/pimcore
 /**
  * creates a field collection "collectionA" containing all available data types
  * @return void
  */
 public function testFieldCollectionCreate()
 {
     $fieldCollection = new Object_Fieldcollection_Definition();
     $fieldCollection->setKey("collectionA");
     $conf = new Zend_Config_Xml(TESTS_PATH . "/resources/objects/field-collection-import.xml");
     $importData = $conf->toArray();
     $layout = Object_Class_Service::generateLayoutTreeFromArray($importData["layoutDefinitions"]);
     $fieldCollection->setLayoutDefinitions($layout);
     $fieldCollection->save();
 }
コード例 #2
0
 public function delete(Object_Concrete $object)
 {
     // empty or create all relevant tables
     $fieldDef = $object->getClass()->getFieldDefinition($this->model->getFieldname());
     foreach ($fieldDef->getAllowedTypes() as $type) {
         try {
             $definition = Object_Fieldcollection_Definition::getByKey($type);
         } catch (Exception $e) {
             continue;
         }
         $tableName = $definition->getTableName($object->getClass());
         try {
             $this->db->delete($tableName, $this->db->quoteInto("o_id = ?", $object->getId()) . " AND " . $this->db->quoteInto("fieldname = ?", $this->model->getFieldname()));
         } catch (Exception $e) {
             // create definition if it does not exist
             $definition->createUpdateTable($object->getClass());
         }
     }
     // empty relation table
     $this->db->delete("object_relations_" . $object->getO_classId(), "ownertype = 'fieldcollection' AND " . $this->db->quoteInto("ownername = ?", $this->model->getFieldname()) . " AND " . $this->db->quoteInto("src_id = ?", $object->getId()));
 }
コード例 #3
0
 /**
  * Checks if data is valid for current data field
  *
  * @param mixed $data
  * @param boolean $omitMandatoryCheck
  * @throws Exception
  */
 public function checkValidity($data, $omitMandatoryCheck = false)
 {
     if (!$omitMandatoryCheck) {
         if ($data instanceof Object_Fieldcollection) {
             foreach ($data as $item) {
                 if (!$item instanceof Object_Fieldcollection_Data_Abstract) {
                     continue;
                 }
                 try {
                     $collectionDef = Object_Fieldcollection_Definition::getByKey($item->getType());
                 } catch (Exception $e) {
                     continue;
                 }
                 foreach ($collectionDef->getFieldDefinitions() as $fd) {
                     $key = $fd->getName();
                     $getter = "get" . ucfirst($key);
                     $fd->checkValidity($item->{$getter}());
                 }
             }
         }
     }
 }
コード例 #4
0
 public function addFieldCollection($type, $fieldname = null)
 {
     if (empty($type)) {
         throw new Exception("No fieldcollectiontype given");
     }
     Object_Fieldcollection_Definition::getByKey($type);
     $this->fieldCollectionConfigs[] = array("type" => $type, "fieldname" => $fieldname);
 }
コード例 #5
0
 public function fieldcollectionDeleteAction()
 {
     $fc = Object_Fieldcollection_Definition::getByKey($this->_getParam("id"));
     $fc->delete();
     $this->_helper->json(array("success" => true));
 }
コード例 #6
0
ファイル: ElementCreateTest.php プロジェクト: ngocanh/pimcore
 /**
  * @param  $fd
  * @return void
  */
 protected function setFieldData($object, $fd, $refDocument, $refAsset, $minAmountLazyRelations)
 {
     foreach ($fd as $field) {
         $name = $field->getName();
         $type = $field->getFieldType();
         $class = "Object_Class_Data_" . ucfirst($type);
         $this->assertTrue(class_exists($class));
         $data = new $class();
         $setter = "set" . ucfirst($name);
         if (!$field->isRelationType() or !$field->isRemoteOwner()) {
             $this->assertTrue(method_exists($object, $setter));
         }
         if ($data instanceof Object_Class_Data_Checkbox) {
             $object->{$setter}(true);
         } else {
             if ($data instanceof Object_Class_Data_Time) {
                 $object->{$setter}("18:00");
             } else {
                 if ($data instanceof Object_Class_Data_Password) {
                     $object->{$setter}("verySecret");
                 } else {
                     if ($data instanceof Object_Class_Data_Input) {
                         $object->{$setter}("simple input");
                     } else {
                         if ($data instanceof Object_Class_Data_Date) {
                             $object->{$setter}(new Zend_Date());
                         } else {
                             if ($data instanceof Object_Class_Data_Datetime) {
                                 $object->{$setter}(new Zend_Date());
                             } else {
                                 if ($data instanceof Object_Class_Data_Href) {
                                     $object->{$setter}(Object_Abstract::getById($object->getId() - 1));
                                 } else {
                                     if ($data instanceof Object_Class_Data_Objects and !$data->isRemoteOwner()) {
                                         $data = array();
                                         $o = Object_Abstract::getById($object->getId() - 1);
                                         if (!$o instanceof Object_Folder) {
                                             $data[] = $o;
                                         }
                                         $data[] = Object_Abstract::getById($object->getId());
                                         $object->{$setter}($data);
                                     } else {
                                         if ($data instanceof Object_Class_Data_Fieldcollections) {
                                             $items = new Object_Fieldcollection();
                                             $collectionA = Object_Fieldcollection_Definition::getByKey("collectionA");
                                             $itemDefinitions = $collectionA->getFieldDefinitions();
                                             $item = new Object_Fieldcollection_Data_CollectionA();
                                             $this->setFieldData($item, $itemDefinitions, $refDocument, $refAsset, $minAmountLazyRelations);
                                             $items->add($item);
                                             $object->{$setter}($items);
                                         } else {
                                             if ($data instanceof Object_Class_Data_Localizedfields) {
                                                 $getter = "get" . ucfirst($name);
                                                 $data = $object->getO_class()->getFieldDefinition("localizedfields");
                                                 $localizedData = array();
                                                 $validLanguages = Pimcore_Tool::getValidLanguages();
                                                 foreach ($validLanguages as $language) {
                                                     foreach ($data->getFieldDefinitions() as $fd) {
                                                         $fieldData = $this->getLocalizedFieldDataFor($fd, $language, $refAsset);
                                                         $localizedData[$language][$fd->getName()] = $fieldData;
                                                     }
                                                 }
                                                 $object->{$setter}(new Object_Localizedfield($localizedData));
                                             } else {
                                                 if ($data instanceof Object_Class_Data_Multihref) {
                                                     $data = array();
                                                     $data[] = Object_Abstract::getById($object->getId() - 1);
                                                     $data[] = $refAsset;
                                                     //dummy for checking if relation is saved twice
                                                     $data[] = Asset::getById($refAsset->getId());
                                                     $data[] = $refDocument;
                                                     $fd = $object->geto_Class()->getFieldDefinition($name);
                                                     if ($fd->getLazyLoading()) {
                                                         for ($i = 1; $i <= $minAmountLazyRelations; $i++) {
                                                             $data[] = $this->createRandomObject("unittest");
                                                         }
                                                     }
                                                     $object->{$setter}($data);
                                                 } else {
                                                     if ($data instanceof Object_Class_Data_Languagemultiselect) {
                                                         $object->{$setter}(array("de", "en"));
                                                     } else {
                                                         if ($data instanceof Object_Class_Data_Countrymultiselect) {
                                                             $object->{$setter}(array("AT", "AU"));
                                                         } else {
                                                             if ($data instanceof Object_Class_Data_Multiselect) {
                                                                 $object->{$setter}(array("cat", "cow"));
                                                             } else {
                                                                 if ($data instanceof Object_Class_Data_User) {
                                                                     //create a user to set
                                                                     $user = new User();
                                                                     $user->setUsername(uniqid());
                                                                     $user->setParentId(0);
                                                                     $user->setHasCredentials(true);
                                                                     $user->setPassword(md5("unitTestUser"));
                                                                     $user->save();
                                                                     $object->{$setter}($user->getId());
                                                                 } else {
                                                                     if ($data instanceof Object_Class_Data_Language) {
                                                                         $object->{$setter}("en");
                                                                     } else {
                                                                         if ($data instanceof Object_Class_Data_Country) {
                                                                             $object->{$setter}("AU");
                                                                         } else {
                                                                             if ($data instanceof Object_Class_Data_Select) {
                                                                                 $object->{$setter}(2);
                                                                             } else {
                                                                                 if ($data instanceof Object_Class_Data_Geobounds) {
                                                                                     $object->{$setter}(new Object_Data_Geobounds(new Object_Data_Geopoint(150.96588134765625, -33.704920213014425), new Object_Data_Geopoint(150.60333251953125, -33.893217379440884)));
                                                                                 } else {
                                                                                     if ($data instanceof Object_Class_Data_Geopoint) {
                                                                                         $object->{$setter}(new Object_Data_Geopoint(151.2111111, -33.8599722));
                                                                                     } else {
                                                                                         if ($data instanceof Object_Class_Data_Geopolygon) {
                                                                                             $data = array(new Object_Data_Geopoint(150.54428100585938, -33.464671118242684), new Object_Data_Geopoint(150.73654174804688, -33.913733814316245), new Object_Data_Geopoint(151.2542724609375, -33.9946115848146));
                                                                                             $object->{$setter}($data);
                                                                                         } else {
                                                                                             if ($data instanceof Object_Class_Data_Image) {
                                                                                                 $object->{$setter}($refAsset);
                                                                                             } else {
                                                                                                 if ($data instanceof Object_Class_Data_Slider) {
                                                                                                     $object->{$setter}(6);
                                                                                                 } else {
                                                                                                     if ($data instanceof Object_Class_Data_Numeric) {
                                                                                                         $object->{$setter}(12000);
                                                                                                     } else {
                                                                                                         if ($data instanceof Object_Class_Data_Table) {
                                                                                                             $object->{$setter}(array(array("eins", "zwei", "drei"), array(1, 2, 3), array("a", "b", "c")));
                                                                                                         } else {
                                                                                                             if ($data instanceof Object_Class_Data_Textarea) {
                                                                                                                 $object->{$setter}("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.");
                                                                                                             } else {
                                                                                                                 if ($data instanceof Object_Class_Data_Wysiwyg) {
                                                                                                                     $object->{$setter}("<p>This is some <strong>HTML</strong> content</p><ul><li>list one</li><li>list two</li></ul>");
                                                                                                                 } else {
                                                                                                                     if ($data instanceof Object_Class_Data_Link) {
                                                                                                                         $l = new Object_Data_Link();
                                                                                                                         $l->setPath("http://www.pimcore.org");
                                                                                                                         $l->setTitle("pimcore.org");
                                                                                                                         $l->setText("pimcore.org");
                                                                                                                         $object->{$setter}($l);
                                                                                                                     }
                                                                                                                 }
                                                                                                             }
                                                                                                         }
                                                                                                     }
                                                                                                 }
                                                                                             }
                                                                                         }
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #7
0
ファイル: MigrateCheckout.php プロジェクト: TPETb/pimcore-sak
        $classname = basename($file, ".json");
        unset($classes_array[$classname]);
        try {
            $class = Object_Fieldcollection_Definition::getByKey($classname);
            Object_Class_Service::importFieldCollectionFromJson($class, $string);
        } catch (Exception $e) {
            $newClass = new Object_Fieldcollection_Definition();
            $newClass->setKey($classname);
            Object_Class_Service::importFieldCollectionFromJson($newClass, $string);
        }
    }
}
// usuwanie kolekcji
/** @var Object_Fieldcollection_Definition $class */
foreach ($classes_array as $classname => $tmp) {
    $class = Object_Fieldcollection_Definition::getByKey($classname);
    $class->delete();
    echo "Delete collection: " . $classname . "\n";
}
// MIGRACJA KLAS
$classesList = new Object_Class_List();
$classesList->setOrderKey("name");
$classesList->setOrder("asc");
$classes = $classesList->load();
$classes_array = array();
// array of existing classes
/** @var Object_Class $class */
foreach ($classes as $class) {
    $classes_array[$class->getName()] = true;
}
$files = glob(PIMCORE_DOCUMENT_ROOT . '/data/classes/*');
コード例 #8
0
 /**
  * @return mixed
  */
 public function getDefinition()
 {
     $definition = Object_Fieldcollection_Definition::getByKey($this->getType());
     return $definition;
 }
コード例 #9
0
ファイル: Data.php プロジェクト: shanky0110/pimcore-custom
 /**
  * @param  Element_Interface  $element
  * @return void
  */
 public function setDataFromElement($element)
 {
     $this->data = null;
     $this->id = new Search_Backend_Data_Id($element);
     $this->fullPath = $element->getFullPath();
     $this->creationDate = $element->getCreationDate();
     $this->modificationDate = $element->getModificationDate();
     $this->userModification = $element->getUserModification();
     $this->userOwner = $element->getUserOwner();
     $this->type = $element->getType();
     if ($element instanceof Object_Concrete) {
         $this->subtype = $element->getO_className();
     } else {
         $this->subtype = $this->type;
     }
     $this->properties = "";
     $properties = $element->getProperties();
     if (is_array($properties)) {
         foreach ($properties as $nextProperty) {
             if ($nextProperty->getType() == 'text') {
                 $this->properties .= $nextProperty->getData() . " ";
             }
         }
     }
     $this->data = "";
     if ($element instanceof Document) {
         if ($element instanceof Document_Folder) {
             $this->data = $element->getKey();
             $this->published = true;
         } else {
             if ($element instanceof Document_Link) {
                 $this->published = $element->isPublished();
                 $this->data = $element->getName() . " " . $element->getTitle() . " " . $element->getHref();
             } else {
                 if ($element instanceof Document_PageSnippet) {
                     $this->published = $element->isPublished();
                     $elements = $element->getElements();
                     if (is_array($elements) && !empty($elements)) {
                         foreach ($elements as $tag) {
                             if ($tag instanceof Document_Tag_Interface) {
                                 ob_start();
                                 $this->data .= strip_tags($tag->frontend()) . " ";
                                 $this->data .= ob_get_clean();
                             }
                         }
                     }
                     if ($element instanceof Document_Page) {
                         $this->published = $element->isPublished();
                         $this->data .= " " . $element->getName() . " " . $element->getTitle() . " " . $element->getDescription() . " " . $element->getKeywords();
                     }
                 }
             }
         }
     } else {
         if ($element instanceof Asset) {
             $this->data = $element->getFilename();
             $this->published = true;
         } else {
             if ($element instanceof Object_Abstract) {
                 if ($element instanceof Object_Concrete) {
                     $getInheritedValues = Object_Abstract::doGetInheritedValues();
                     Object_Abstract::setGetInheritedValues(true);
                     $this->published = $element->isPublished();
                     foreach ($element->getClass()->getFieldDefinitions() as $key => $value) {
                         // Object_Class_Data_Fieldcollections, Object_Class_Data_Localizedfields and Object_Class_Data_Objectbricks is special because it doesn't support the csv export
                         if ($value instanceof Object_Class_Data_Fieldcollections) {
                             $getter = "get" . $value->getName();
                             $fcData = $element->{$getter}();
                             if ($fcData instanceof Object_Fieldcollection) {
                                 foreach ($fcData as $item) {
                                     if (!$item instanceof Object_Fieldcollection_Data_Abstract) {
                                         continue;
                                     }
                                     try {
                                         $collectionDef = Object_Fieldcollection_Definition::getByKey($item->getType());
                                     } catch (Exception $e) {
                                         continue;
                                     }
                                     foreach ($collectionDef->getFieldDefinitions() as $fd) {
                                         $this->data .= $fd->getForCsvExport($item) . " ";
                                     }
                                 }
                             }
                             //$this->data .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->$getter(), $element))." ";
                         } else {
                             if ($value instanceof Object_Class_Data_Localizedfields) {
                                 // only for text-values at the moment, because the CSV doesn't work for localized fields (getter-problem)
                                 $getter = "get" . $value->getName();
                                 $lfData = $element->{$getter}();
                                 if ($lfData instanceof Object_Localizedfield) {
                                     foreach ($lfData->getItems() as $language => $values) {
                                         foreach ($values as $lData) {
                                             if (is_string($lData)) {
                                                 $this->data .= $lData . " ";
                                             }
                                         }
                                     }
                                 }
                                 //$this->data .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->$getter(), $element))." ";
                             } else {
                                 if ($value instanceof Object_Class_Data_Objectbricks) {
                                     $getter = "get" . $value->getName();
                                     $obData = $element->{$getter}();
                                     if ($obData instanceof Object_Objectbrick) {
                                         $items = $obData->getItems();
                                         foreach ($items as $item) {
                                             if (!$item instanceof Object_Objectbrick_Data_Abstract) {
                                                 continue;
                                             }
                                             try {
                                                 $collectionDef = Object_Objectbrick_Definition::getByKey($item->getType());
                                             } catch (Exception $e) {
                                                 continue;
                                             }
                                             foreach ($collectionDef->getFieldDefinitions() as $fd) {
                                                 $this->data .= $fd->getForCsvExport($item) . " ";
                                             }
                                         }
                                     }
                                     //$this->data .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->$getter(), $element))." ";
                                 } else {
                                     $this->data .= $value->getForCsvExport($element) . " ";
                                 }
                             }
                         }
                     }
                     Object_Abstract::setGetInheritedValues($getInheritedValues);
                 } else {
                     if ($element instanceof Object_Folder) {
                         $this->data = $element->getKey();
                         $this->published = true;
                     }
                 }
             } else {
                 Logger::crit("Search_Backend_Data received an unknown element!");
             }
         }
     }
     if ($element instanceof Element_Interface) {
         $this->data = "ID: " . $element->getId() . "  \nPath: " . $this->getFullPath() . "  \n" . $this->cleanupData($this->data);
     }
 }