getElementType() public static method

public static getElementType ( Pimcore\Model\Element\ElementInterface $element ) : string
$element Pimcore\Model\Element\ElementInterface $element
return string
Esempio n. 1
0
 public function extractRelations($element, $apiElementKeys, $recursive, $includeRelations)
 {
     $foundRelations = array();
     if ($includeRelations) {
         $dependency = $element->getDependencies();
         if ($dependency) {
             foreach ($dependency->getRequires() as $r) {
                 if ($e = Element\Service::getDependedElement($r)) {
                     if ($element->getId() != $e->getId() and !in_array(Element\Service::getElementType($e) . "_" . $e->getId(), $apiElementKeys)) {
                         $foundRelations[Element\Service::getElementType($e) . "_" . $e->getId()] = array("elementType" => Element\Service::getType($e), "element" => $e->getId(), "recursive" => false);
                     }
                 }
             }
         }
     }
     $childs = $element->getChilds();
     if ($recursive and $childs) {
         foreach ($childs as $child) {
             if (!in_array(Element\Service::getType($child) . "_" . $child->getId(), $apiElementKeys)) {
                 $foundRelations[Element\Service::getType($child) . "_" . $child->getId()] = array("elementType" => Element\Service::getType($child), "element" => $child->getId(), "recursive" => $recursive);
             }
         }
     }
     return $foundRelations;
 }
Esempio n. 2
0
 /**
  * gets workflow config for element. always returns first valid workflow config
  *
  * @param Asset|Document|ConcreteObject $element
  * @return array
  */
 public static function getElementWorkflowConfig(AbstractElement $element)
 {
     $config = self::getWorkflowManagementConfig();
     if (!is_array($config)) {
         return null;
     }
     $elementType = Service::getElementType($element);
     $elementSubType = $element->getType();
     foreach ($config['workflows'] as $workflow) {
         //workflow is not enabled, continue with next
         if (isset($workflow['enabled']) && !$workflow['enabled']) {
             continue;
         }
         if (isset($workflow['workflowSubject']) && in_array($elementType, $workflow['workflowSubject']['types'])) {
             switch ($elementType) {
                 case 'asset':
                     if (isset($workflow['workflowSubject']['assetTypes']) && is_array($workflow['workflowSubject']['assetTypes'])) {
                         if (in_array($elementSubType, $workflow['workflowSubject']['assetTypes'])) {
                             return $workflow;
                         }
                     } else {
                         \Logger::warning('WorkflowManagement::getClassWorkflowConfig workflow does not feature a valid array of available asset types');
                     }
                     break;
                 case 'document':
                     if (isset($workflow['workflowSubject']['documentTypes']) && is_array($workflow['workflowSubject']['documentTypes'])) {
                         if (in_array($elementSubType, $workflow['workflowSubject']['documentTypes'])) {
                             return $workflow;
                         }
                     } else {
                         \Logger::warning('WorkflowManagement::getClassWorkflowConfig workflow does not feature a valid array of available document types');
                     }
                     break;
                 case 'object':
                     if ($element instanceof ConcreteObject) {
                         if (isset($workflow['workflowSubject']['classes']) && is_array($workflow['workflowSubject']['classes'])) {
                             $classId = $element->getClassId();
                             if (in_array($classId, $workflow['workflowSubject']['classes'])) {
                                 return $workflow;
                             }
                         } else {
                             \Logger::warning('WorkflowManagement::getClassWorkflowConfig workflow does not feature a valid array of available class ID\'s');
                         }
                     }
                     break;
                 default:
                     //unknown element type, return null
                     return null;
             }
         }
     }
     return null;
 }
Esempio n. 3
0
 public static function interpret($value, $config = null)
 {
     $result = array();
     if (is_array($value)) {
         foreach ($value as $v) {
             $result[] = array("dest" => $v->getId(), "type" => \Pimcore\Model\Element\Service::getElementType($v));
         }
     } else {
         if ($value instanceof \Pimcore\Model\Element\AbstractElement) {
             $result[] = array("dest" => $value->getId(), "type" => \Pimcore\Model\Element\Service::getElementType($value));
         }
     }
     return $result;
 }
Esempio n. 4
0
 /**
  * Clear all relations in the database
  * @param Element\ElementInterface $element
  */
 public function cleanAllForElement($element)
 {
     try {
         $id = $element->getId();
         $type = Element\Service::getElementType($element);
         //schedule for sanity check
         $data = $this->db->fetchAll("SELECT * FROM dependencies WHERE targetid = ? AND targettype = ?", array($id, $type));
         if (is_array($data)) {
             foreach ($data as $row) {
                 $sanityCheck = new Element\Sanitycheck();
                 $sanityCheck->setId($row['sourceid']);
                 $sanityCheck->setType($row['sourcetype']);
                 $sanityCheck->save();
             }
         }
         $this->db->delete("dependencies", $this->db->quoteInto("sourceid = ?", $id) . " AND " . $this->db->quoteInto("sourcetype = ?", $type));
         $this->db->delete("dependencies", $this->db->quoteInto("targetid = ?", $id) . " AND " . $this->db->quoteInto("targettype = ?", $type));
     } catch (\Exception $e) {
         \Logger::error($e);
     }
 }
Esempio n. 5
0
 /**
  * @param $data
  * @return array
  */
 public function resolveDependencies($data)
 {
     $dependencies = [];
     if (is_array($data) && count($data) > 0) {
         foreach ($data as $e) {
             if ($e instanceof Element\ElementInterface) {
                 $elementType = Element\Service::getElementType($e);
                 $dependencies[$elementType . "_" . $e->getId()] = ["id" => $e->getId(), "type" => $elementType];
             }
         }
     }
     return $dependencies;
 }
Esempio n. 6
0
 /**
  * @param $element
  * @return string
  */
 public function getStorageFileBinary($element)
 {
     return PIMCORE_RECYCLEBIN_DIRECTORY . "/" . $this->getId() . "_" . Element\Service::getElementType($element) . "-" . $element->getId() . ".bin";
 }
Esempio n. 7
0
 /**
  * @return array
  */
 public function resolveDependencies()
 {
     $dependencies = [];
     if ($this->getData() instanceof ElementInterface) {
         $elementType = Element\Service::getElementType($this->getData());
         $key = $elementType . "_" . $this->getData()->getId();
         $dependencies[$key] = ["id" => $this->getData()->getId(), "type" => $elementType];
     }
     return $dependencies;
 }
Esempio n. 8
0
 /**
  * @param $object
  * @param string $ownertype
  * @param $ownername
  * @param $position
  */
 public function save($object, $ownertype = "object", $ownername, $position)
 {
     $element = $this->getElement();
     $type = Model\Element\Service::getElementType($element);
     $this->getDao()->save($object, $ownertype, $ownername, $position, $type);
 }
 /**
  * Rewrites id from source to target, $idMapping contains
  * array(
  *  "document" => array(
  *      SOURCE_ID => TARGET_ID,
  *      SOURCE_ID => TARGET_ID
  *  ),
  *  "object" => array(...),
  *  "asset" => array(...)
  * )
  * @param mixed $object
  * @param array $idMapping
  * @param array $params
  * @return Element\ElementInterface
  */
 public function rewriteIds($object, $idMapping, $params = array())
 {
     $data = $this->getDataFromObjectParam($object, $params);
     if (is_array($data)) {
         foreach ($data as &$metaObject) {
             $eo = $metaObject->getObject();
             if ($eo instanceof Element\ElementInterface) {
                 $id = $eo->getId();
                 $type = Element\Service::getElementType($eo);
                 if (array_key_exists($type, $idMapping) && array_key_exists($id, $idMapping[$type])) {
                     $newElement = Element\Service::getElementById($type, $idMapping[$type][$id]);
                     $metaObject->setObject($newElement);
                 }
             }
         }
     }
     return $data;
 }
Esempio n. 10
0
 /**
  * @param $item
  * @return $this
  */
 public function setItem($item)
 {
     $this->setItemId($item->getId());
     $this->setType(Model\Element\Service::getElementType($item));
     $this->item = $item;
     return $this;
 }
 public function addAction()
 {
     $element = Element\Service::getElementById($this->getParam("type"), $this->getParam("id"));
     if ($element) {
         $type = Element\Service::getElementType($element);
         $listClass = "\\Pimcore\\Model\\" . ucfirst($type) . "\\Listing";
         $list = new $listClass();
         $list->setCondition(($type == "object" ? "o_" : "") . "path LIKE '" . $element->getFullPath() . "/%'");
         $children = $list->getTotalCount();
         if ($children <= 100) {
             Recyclebin\Item::create($element, $this->getUser());
         }
         $this->_helper->json(array("success" => true));
     } else {
         $this->_helper->json(array("success" => false));
     }
 }
Esempio n. 12
0
 /**
  * @param mixed $data
  * @return static
  */
 public function setData($data)
 {
     if ($data instanceof ElementInterface) {
         $this->setType(Service::getElementType($data));
         $data = $data->getId();
     }
     $this->data = $data;
     return $this;
 }
Esempio n. 13
0
 /**
  * @return array
  */
 public function resolveDependencies()
 {
     $this->setElements();
     $dependencies = [];
     if (is_array($this->elements) && count($this->elements) > 0) {
         foreach ($this->elements as $element) {
             if ($element instanceof Element\ElementInterface) {
                 $elementType = Element\Service::getElementType($element);
                 $key = $elementType . "_" . $element->getId();
                 $dependencies[$key] = ["id" => $element->getId(), "type" => $elementType];
             }
         }
     }
     return $dependencies;
 }
Esempio n. 14
0
 /**
  * @return null|WorkflowState
  */
 public function getWorkflowStateForElement()
 {
     $elementType = Service::getElementType($this->element);
     $workflowState = WorkflowState::getByPrimary($this->element->getId(), $elementType, $this->workflow->getId());
     if (empty($workflowState)) {
         $workflowState = new WorkflowState();
         $workflowState->setCid($this->element->getId());
         $workflowState->setCtype($elementType);
         $workflowState->setWorkflowId($this->workflow->getId());
     }
     return $workflowState;
 }
Esempio n. 15
0
 /**
  *
  */
 public function maintenanceCleanUp()
 {
     $conf["document"] = Config::getSystemConfig()->documents->versions;
     $conf["asset"] = Config::getSystemConfig()->assets->versions;
     $conf["object"] = Config::getSystemConfig()->objects->versions;
     $elementTypes = array();
     foreach ($conf as $elementType => $tConf) {
         if (intval($tConf->days) > 0) {
             $versioningType = "days";
             $value = intval($tConf->days);
         } else {
             $versioningType = "steps";
             $value = intval($tConf->steps);
         }
         if ($versioningType) {
             $elementTypes[] = array("elementType" => $elementType, $versioningType => $value);
         }
     }
     $ignoredIds = array();
     while (true) {
         $versions = $this->getDao()->maintenanceGetOutdatedVersions($elementTypes, $ignoredIds);
         if (count($versions) == 0) {
             break;
         }
         $counter = 0;
         \Logger::debug("versions to check: " . count($versions));
         if (is_array($versions) && !empty($versions)) {
             $totalCount = count($versions);
             foreach ($versions as $index => $id) {
                 try {
                     $version = Version::getById($id);
                 } catch (\Exception $e) {
                     $ignoredIds[] = $id;
                     \Logger::debug("Version with " . $id . " not found\n");
                     continue;
                 }
                 $counter++;
                 // do not delete public versions
                 if ($version->getPublic()) {
                     $ignoredIds[] = $version->getId();
                     continue;
                 }
                 if ($version->getCtype() == "document") {
                     $element = Document::getById($version->getCid());
                 } elseif ($version->getCtype() == "asset") {
                     $element = Asset::getById($version->getCid());
                 } elseif ($version->getCtype() == "object") {
                     $element = Object::getById($version->getCid());
                 }
                 if ($element instanceof ElementInterface) {
                     \Logger::debug("currently checking Element-ID: " . $element->getId() . " Element-Type: " . Element\Service::getElementType($element) . " in cycle: " . $counter . "/" . $totalCount);
                     if ($element->getModificationDate() >= $version->getDate()) {
                         // delete version if it is outdated
                         \Logger::debug("delete version: " . $version->getId() . " because it is outdated");
                         $version->delete();
                     } else {
                         $ignoredIds[] = $version->getId();
                         \Logger::debug("do not delete version (" . $version->getId() . ") because version's date is newer than the actual modification date of the element. Element-ID: " . $element->getId() . " Element-Type: " . Element\Service::getElementType($element));
                     }
                 } else {
                     // delete version if the corresponding element doesn't exist anymore
                     \Logger::debug("delete version (" . $version->getId() . ") because the corresponding element doesn't exist anymore");
                     $version->delete();
                 }
                 // call the garbage collector if memory consumption is > 100MB
                 if (memory_get_usage() > 100000000) {
                     \Pimcore::collectGarbage();
                 }
             }
         }
     }
 }
Esempio n. 16
0
 /**
  * @return array
  */
 public function resolveDependencies()
 {
     $this->load();
     $dependencies = array();
     if ($this->o instanceof Element\ElementInterface) {
         $elementType = Element\Service::getElementType($this->o);
         $key = $elementType . "_" . $this->o->getId();
         $dependencies[$key] = array("id" => $this->o->getId(), "type" => $elementType);
     }
     return $dependencies;
 }
Esempio n. 17
0
 /**
  * Rewrites id from source to target, $idMapping contains
  * array(
  *  "document" => array(
  *      SOURCE_ID => TARGET_ID,
  *      SOURCE_ID => TARGET_ID
  *  ),
  *  "object" => array(...),
  *  "asset" => array(...)
  * )
  * @param mixed $data
  * @param array $idMapping
  * @return array
  */
 public function rewriteIdsService($data, $idMapping)
 {
     if (is_array($data)) {
         foreach ($data as &$element) {
             $id = $element->getId();
             $type = Element\Service::getElementType($element);
             if (array_key_exists($type, $idMapping) && array_key_exists($id, $idMapping[$type])) {
                 $element = Element\Service::getElementById($type, $idMapping[$type][$id]);
             }
         }
     }
     return $data;
 }
Esempio n. 18
0
 /**
  * @param $item
  * @return $this
  */
 public function setItem($item)
 {
     $this->setItemId($item->getId());
     if ($item instanceof Model\Element\ElementInterface) {
         $this->setType(Model\Element\Service::getElementType($item));
     } elseif ($item instanceof Model\Object\ClassDefinition) {
         $this->setType("class");
     }
     $this->item = $item;
     return $this;
 }
Esempio n. 19
0
 /**
  * Adds a Pimcore Object/Asset/Document to the cache
  *
  * @param $element
  */
 public static function loadElementToCache($element)
 {
     $cacheKey = Element\Service::getElementType($element) . "_" . $element->getId();
     Cache::storeToCache($element, $cacheKey, [], null, null, true);
 }
Esempio n. 20
0
 /**
  * @return array
  */
 public function getUserPermissions()
 {
     $elementType = Service::getElementType($this);
     $vars = get_class_vars("\\Pimcore\\Model\\User\\Workspace\\" . ucfirst($elementType));
     $ignored = array("userId", "cid", "cpath", "dao");
     $permissions = array();
     foreach ($vars as $name => $defaultValue) {
         if (!in_array($name, $ignored)) {
             $permissions[$name] = $this->isAllowed($name);
         }
     }
     return $permissions;
 }
Esempio n. 21
0
 /**
  * @param AbstractListing $list
  */
 protected static function loadToCache(AbstractListing $list)
 {
     $totalCount = $list->getTotalCount();
     $iterations = ceil($totalCount / self::getPerIteration());
     \Logger::info("New list of elements queued for storing into the cache with " . $iterations . " iterations and " . $totalCount . " total items");
     for ($i = 0; $i < $iterations; $i++) {
         \Logger::info("Starting iteration " . $i . " with offset: " . self::getPerIteration() * $i);
         $list->setLimit(self::getPerIteration());
         $list->setOffset(self::getPerIteration() * $i);
         $elements = $list->load();
         foreach ($elements as $element) {
             $cacheKey = Element\Service::getElementType($element) . "_" . $element->getId();
             Cache::storeToCache($element, $cacheKey, [], null, null, true);
         }
         \Pimcore::collectGarbage();
         sleep(self::getTimoutBetweenIteration());
     }
 }
Esempio n. 22
0
 /**
  * @param $data
  * @return array
  */
 public function resolveDependencies($data)
 {
     $dependencies = array();
     if ($data instanceof Element\ElementInterface) {
         $elementType = Element\Service::getElementType($data);
         $dependencies[$elementType . "_" . $data->getId()] = array("id" => $data->getId(), "type" => $elementType);
     }
     return $dependencies;
 }
Esempio n. 23
0
 public function xliffImportElementAction()
 {
     include_once "simple_html_dom.php";
     $id = $this->getParam("id");
     $step = $this->getParam("step");
     $importFile = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/" . $id . ".xliff";
     $xliff = simplexml_load_file($importFile, null, LIBXML_NOCDATA);
     $file = $xliff->file[(int) $step];
     $target = $file["target-language"];
     if (!Tool::isValidLanguage($target)) {
         $locale = new \Zend_Locale($target);
         $target = $locale->getLanguage();
         if (!Tool::isValidLanguage($target)) {
             $this->_helper->json(array("success" => false));
         }
     }
     list($type, $id) = explode("-", $file["original"]);
     $element = Element\Service::getElementById($type, $id);
     if (true || $element) {
         foreach ($file->body->{"trans-unit"} as $transUnit) {
             list($fieldType, $name) = explode("~-~", $transUnit["id"]);
             $content = $transUnit->target->asXml();
             $content = $this->unescapeXliff($content);
             if ($element instanceof Document) {
                 if ($fieldType == "tag" && method_exists($element, "getElement")) {
                     $tag = $element->getElement($name);
                     if ($tag) {
                         $tag->setDataFromEditmode($content);
                         $tag->setInherited(false);
                         $element->setElement($tag->getName(), $tag);
                     }
                 }
                 if ($fieldType == "settings" && $element instanceof Document\Page) {
                     $setter = "set" . ucfirst($name);
                     if (method_exists($element, $setter)) {
                         $element->{$setter}($content);
                     }
                 }
             } else {
                 if ($element instanceof Object\Concrete) {
                     if ($fieldType == "localizedfield") {
                         $setter = "set" . ucfirst($name);
                         if (method_exists($element, $setter)) {
                             $element->{$setter}($content, $target);
                         }
                     }
                 }
             }
             if ($fieldType == "property") {
                 $property = $element->getProperty($name, true);
                 if ($property) {
                     $property->setData($content);
                 } else {
                     $element->setProperty($name, "text", $content);
                 }
             }
         }
         try {
             // allow to save objects although there are mandatory fields
             if ($element instanceof Object\AbstractObject) {
                 $element->setOmitMandatoryCheck(true);
             }
             $element->save();
         } catch (\Exception $e) {
             throw new \Exception("Unable to save " . Element\Service::getElementType($element) . " with id " . $element->getId() . " because of the following reason: " . $e->getMessage());
         }
     }
     $this->_helper->json(array("success" => true));
 }