/** * @param string $mapping * @return array */ private static function buildPublisherFolderMappings($mapping) { $db = eZDB::instance(); $nodeToPathMapping = array(); $pathToIDMapping = array(); $publisherFolderList = PublisherFolder::fetchObjectList( PublisherFolder::definition(),array('path', 'id'), null, null, null, false ); $pfRemotes = array(); $pfByPath = array(); foreach(array_keys($publisherFolderList) as $key ) { $pf = $publisherFolderList[$key]; $pfByPath[$pf['path']] = $pf['id']; $pfRemotes[] = "\"publisher_folder-{$pf['path']}\""; } $pfRemotesString = implode( ',', $pfRemotes ); $query = " SELECT c.remote_id as remote, ct.main_node_id as main_node FROM ezcontentobject c, ezcontentobject_tree ct WHERE c.remote_id IN ( $pfRemotesString ) and c.id = ct.contentobject_id and ct.node_id = ct.main_node_id"; $results = $db->arrayQuery($query); foreach ( $results as $line ) { $m = array(); if (preg_match("#^publisher_folder-(.*)$#", $line['remote'], $m)) $pfPath = $m[1]; else continue; $nodeId = $line['main_node']; $pathToIDMapping[$pfPath] = array( 'nid' => $nodeId, 'pfid' => $pfByPath[$pfPath] ); $nodeToPathMapping[$nodeId] = array( 'path' => $pfPath , 'pfid' => $pfByPath[$pfPath] ); } GlobalCacheTool::dailyValue( 'publisherFolderPathToIDMapping', $pathToIDMapping ); GlobalCacheTool::dailyValue( 'publisherFolderNodeIdToPathMapping', $nodeToPathMapping ); switch ($mapping) { case 'publisherFolderPathToIDMapping' : return $pathToIDMapping; case 'publisherFolderNodeIdToPathMapping' : return $nodeToPathMapping; } return array(); }