public function __construct( $params, $outputType, $blockName, $applicationName ) { parent::__construct( $params, $outputType, $blockName, $applicationName ); $parts = $params['Parameters']; array_shift($parts); $this->app = ApplicationFactory::fetchByUri( implode('/',$parts) ); if ( $this->app->applicationName() == 'error' ) unset($this->app); }
/** * * @param string $nodePath * @param ApplicationDefault $app * @return null */ static public function findNodeFromPath ($nodePath, $app ) { $uri = explode( '/', ltrim( $nodePath, '/' ) ); $rootNodes = array(); $applicationName = $app->applicationName(); if( count( $uri ) > 1 && is_numeric($uri[0]) ) { $publisherFolderId = $uri[0]; array_shift($uri); $uriArticle = implode ('/', $uri); } else $uriArticle = ltrim( $nodePath, '/' ); $uriArticle = urldecode($uriArticle); if($applicationName) { $publishers = $app->applicationLocalized()->publisherFolders; /* @var $publisher PublisherFolder */ foreach ($publishers as $publisher) { $pfids = PublisherFolderTool::getPathToIDMapping( $publisher->attribute('path') ); // If PublisherFolderId is included in url, we only take care about this publisher folder if ( isset($publisherFolderId) && $pfids['pfid'] == $publisherFolderId ) { $rootNodes[] = eZContentObjectTreeNode::fetch($pfids['nid']); $articlePath = $uriArticle; break; } elseif( !isset($publisherFolderId) ) { $node = eZContentObjectTreeNode::fetch($pfids['nid']); if($node) { $rootNodes[] = $node; $articlePath = $uriArticle; } } } } if ( isset($publisherFolderId) != false && trim($uriArticle) == '' ) return $app; if ( !isset($articlePath) || count($rootNodes) == 0 ) return null; $node = self::getNodeFromPath ($articlePath, $rootNodes); if ( !$node ) return null; $cluster = $app->applicationLocalized()->attribute( 'cluster_identifier' ); $isVisible = ObjectVisibilityManager::isVisible( $node->attribute('contentobject_id'), $cluster ); if ( !$isVisible ) return null; return $node; }