loadPathDataByHierarchy() абстрактный публичный Метод

The first entry in $hierarchyData corresponds to the top-most path element in the path, the second entry the child of the first path element and so on. This method is faster than self::getPath() since it can fetch all elements using only one query, but can be used only for autogenerated paths.
abstract public loadPathDataByHierarchy ( array $hierarchyData ) : array
$hierarchyData array
Результат array
 /**
  * Loads path data identified by given ordered array of hierarchy data.
  *
  * The first entry in $hierarchyData corresponds to the top-most path element in the path, the second entry the
  * child of the first path element and so on.
  * This method is faster than self::getPath() since it can fetch all elements using only one query, but can be used
  * only for autogenerated paths.
  *
  * @param array $hierarchyData
  *
  * @return array
  */
 public function loadPathDataByHierarchy(array $hierarchyData)
 {
     try {
         return $this->innerGateway->loadPathDataByHierarchy($hierarchyData);
     } catch (DBALException $e) {
         throw new \RuntimeException('Database error', 0, $e);
     } catch (PDOException $e) {
         throw new \RuntimeException('Database error', 0, $e);
     }
 }
Пример #2
0
 /**
  * Looks up a url alias for the given url.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException
  * @throws \RuntimeException
  * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
  *
  * @param string $url
  *
  * @return \eZ\Publish\SPI\Persistence\Content\UrlAlias
  */
 public function lookup($url)
 {
     $urlHashes = array();
     foreach (explode('/', $url) as $level => $text) {
         $urlHashes[$level] = $this->getHash($text);
     }
     $data = $this->gateway->loadUrlAliasData($urlHashes);
     if (empty($data)) {
         throw new NotFoundException('URLAlias', $url);
     }
     $pathDepth = count($urlHashes);
     $hierarchyData = array();
     $isPathHistory = false;
     for ($level = 0; $level < $pathDepth; ++$level) {
         $prefix = $level === $pathDepth - 1 ? '' : 'ezurlalias_ml' . $level . '_';
         $isPathHistory = $isPathHistory ?: $data[$prefix . 'link'] != $data[$prefix . 'id'];
         $hierarchyData[$level] = array('id' => $data[$prefix . 'id'], 'parent' => $data[$prefix . 'parent'], 'action' => $data[$prefix . 'action']);
     }
     $data['is_path_history'] = $isPathHistory;
     $data['raw_path_data'] = $data['action_type'] == 'eznode' && !$data['is_alias'] ? $this->gateway->loadPathDataByHierarchy($hierarchyData) : $this->gateway->loadPathData($data['id']);
     return $this->mapper->extractUrlAliasFromData($data);
 }
Пример #3
0
 /**
  * Looks up a url alias for the given url
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException
  * @throws \RuntimeException
  * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
  *
  * @param string $url
  *
  * @return \eZ\Publish\SPI\Persistence\Content\UrlAlias
  */
 public function lookup($url)
 {
     $urlHashes = array();
     foreach (explode("/", $url) as $level => $text) {
         $urlHashes[$level] = $this->getHash($text);
     }
     $data = $this->gateway->loadUrlAliasData($urlHashes);
     if (empty($data)) {
         throw new NotFoundException("URLAlias", $url);
     }
     $pathDepth = count($urlHashes);
     $hierarchyData = array();
     $isPathHistory = false;
     for ($level = 0; $level < $pathDepth; ++$level) {
         $prefix = $level === $pathDepth - 1 ? "" : "ezurlalias_ml" . $level . "_";
         $isPathHistory = $isPathHistory ?: $data[$prefix . "link"] != $data[$prefix . "id"];
         $hierarchyData[$level] = array("id" => $data[$prefix . "id"], "parent" => $data[$prefix . "parent"], "action" => $data[$prefix . "action"]);
     }
     $data["is_path_history"] = $isPathHistory;
     $data["raw_path_data"] = $data["action_type"] == "eznode" && !$data["is_alias"] ? $this->gateway->loadPathDataByHierarchy($hierarchyData) : $this->gateway->loadPathData($data["id"]);
     return $this->mapper->extractUrlAliasFromData($data);
 }