/** * Loads the workflow into the manager * @throws \Exception */ private function initWorkflow() { $config = Workflow\Config::getElementWorkflowConfig($this->element); $this->workflow = Workflow\Factory::getWorkflowFromConfig($config); if (!$this->workflow) { throw new \Exception("Cannot load workflow configuration for object [{$this->element->getId()}] of type [{$this->element->getType()}]"); } }
/** * @static * @param Document $doc * @return Document */ public static function upperCastDocument(Document $doc) { $to_class = "Pimcore\\Model\\Document\\Hardlink\\Wrapper\\" . ucfirst($doc->getType()); $old_serialized_prefix = "O:" . strlen(get_class($doc)); $old_serialized_prefix .= ":\"" . get_class($doc) . "\":"; // unset eventually existing children, because of performance reasons when serializing the document $doc->setChilds(null); $old_serialized_object = Serialize::serialize($doc); $new_serialized_object = 'O:' . strlen($to_class) . ':"' . $to_class . '":'; $new_serialized_object .= substr($old_serialized_object, strlen($old_serialized_prefix)); $document = Serialize::unserialize($new_serialized_object); return $document; }
/** * @see Object\ClassDefinition\Data::getDataForEditmode * @param Asset|Document|Object\AbstractObject $data * @param null|Model\Object\AbstractObject $object * @return array */ public function getDataForEditmode($data, $object = null) { if ($data instanceof Element\ElementInterface) { $r = array("id" => $data->getId(), "path" => $data->getFullPath(), "subtype" => $data->getType(), "type" => Element\Service::getElementType($data)); return $r; } return; }
/** * Static helper to get a Document by it's id, only type Document is returned, not Document\Page, ... (see getConcreteById() ) * * @param integer $id * @return Document */ public static function getById($id) { $id = intval($id); if ($id < 1) { return null; } $cacheKey = "document_" . $id; try { $document = \Zend_Registry::get($cacheKey); if (!$document) { throw new \Exception("Document in registry is null"); } } catch (\Exception $e) { try { if (!($document = Cache::load($cacheKey))) { $document = new Document(); $document->getResource()->getById($id); $mappingClass = "\\Pimcore\\Model\\Document\\" . ucfirst($document->getType()); // this is the fallback for custom document types using prefixes // so we need to check if the class exists first if (!\Pimcore\Tool::classExists($mappingClass)) { $oldStyleClass = "Document_" . ucfirst($document->getType()); if (\Pimcore\Tool::classExists($oldStyleClass)) { $mappingClass = $oldStyleClass; } } $typeClass = Tool::getModelClassMapping($mappingClass); if (Tool::classExists($typeClass)) { $document = new $typeClass(); \Zend_Registry::set($cacheKey, $document); $document->getResource()->getById($id); Cache::save($document, $cacheKey); } } else { \Zend_Registry::set($cacheKey, $document); } } catch (\Exception $e) { \Logger::warning($e->getMessage()); return null; } } if (!$document) { return null; } return $document; }