/** * 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 = \Pimcore\Cache::load($cacheKey))) { $document = new Document(); $document->getDao()->getById($id); $className = "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 (!Tool::classExists($className)) { $oldStyleClass = "Document_" . ucfirst($document->getType()); if (Tool::classExists($oldStyleClass)) { $className = $oldStyleClass; } } $document = \Pimcore::getDiContainer()->make($className); \Zend_Registry::set($cacheKey, $document); $document->getDao()->getById($id); \Pimcore\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; }
/** * @static * @param $path * @return bool */ public static function pathExists($path, $type = null) { $path = Element\Service::correctPath($path); try { $document = new Document(); // validate path if (\Pimcore\Tool::isValidPath($path)) { $document->getDao()->getByPath($path); return true; } } catch (\Exception $e) { } return false; }