本文整理汇总了PHP中eZContentObject::mainNode方法的典型用法代码示例。如果您正苦于以下问题:PHP eZContentObject::mainNode方法的具体用法?PHP eZContentObject::mainNode怎么用?PHP eZContentObject::mainNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZContentObject
的用法示例。
在下文中一共展示了eZContentObject::mainNode方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getSourceString
/**
*
* Returns the Node from which the Source attribute is gotten
* @param eZContentObject $object
* @return string
*/
public static function getSourceString($object)
{
$mainNode = $object->mainNode();
$continue = true;
$parent = null;
if(!$mainNode)
return false;
while($continue)
{
/* @type $mainNode eZContentObjectTreeNode */
/* @type $parent eZContentObjectTreeNode */
$parent = is_null($parent) ? $mainNode->fetchParent() : $parent->fetchParent();
if($parent->ClassIdentifier == 'publisher_folder')
{
/* @var $parentDatamap eZContentObjectAttribute[] */
$parentDatamap = $parent->dataMap();
$publisherAttribute = $parentDatamap['publisher'];
if($publisherAttribute->hasContent())
{
/* @var $publisherUser eZContentObject */
/* @var $publisherDatamap eZContentObjectAttribute[] */
$publisherUser = $publisherAttribute->content();
$publisherDatamap = $publisherUser->dataMap();
$publisherFirstName = '';
$publisherLastName = '';
if($publisherDatamap['first_name']->hasContent())
$publisherFirstName = $publisherDatamap['first_name']->content();
if($publisherDatamap['last_name']->hasContent())
$publisherLastName = $publisherDatamap['last_name']->content();
if($publisherDatamap['user_account']->hasContent())
{
/* @var $publisherUser eZUser */
$publisherUser = $publisherDatamap['user_account']->content();
$publisherUsername = $publisherUser->attribute('login');
}
if( empty($publisherFirstName) && empty($publisherLastName))
$publisherString = $publisherUsername;
else
$publisherString = implode(' ', array($publisherFirstName, $publisherLastName));
return $publisherString;
}
}
$continue = count($parent->pathArray()) > 2;
}
return false;
}
示例2: generateNodeViewData
//.........这里部分代码省略.........
}
$res = eZTemplateDesignResource::instance();
$res->setKeys($keyArray);
if ($languageCode) {
$oldLanguageCode = $node->currentLanguage();
$node->setCurrentLanguage($languageCode);
}
$tpl->setVariable('node', $node);
$tpl->setVariable('viewmode', $viewMode);
$tpl->setVariable('language_code', $languageCode);
if (isset($viewParameters['_custom'])) {
foreach ($viewParameters['_custom'] as $customVarName => $customValue) {
$tpl->setVariable($customVarName, $customValue);
}
unset($viewParameters['_custom']);
}
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('collection_attributes', $collectionAttributes);
$tpl->setVariable('validation', $validation);
$tpl->setVariable('persistent_variable', false);
$parents = $node->attribute('path');
$path = array();
$titlePath = array();
foreach ($parents as $parent) {
$path[] = array('text' => $parent->attribute('name'), 'url' => '/content/view/full/' . $parent->attribute('node_id'), 'url_alias' => $parent->attribute('url_alias'), 'node_id' => $parent->attribute('node_id'));
}
$titlePath = $path;
$path[] = array('text' => $object->attribute('name'), 'url' => false, 'url_alias' => false, 'node_id' => $node->attribute('node_id'));
$titlePath[] = array('text' => $object->attribute('name'), 'url' => false, 'url_alias' => false);
$tpl->setVariable('node_path', $path);
$event = ezpEvent::getInstance();
$event->notify('content/pre_rendering', array($node, $tpl, $viewMode));
$Result = array();
$Result['content'] = $tpl->fetch('design:node/view/' . $viewMode . '.tpl');
$Result['view_parameters'] = $viewParameters;
$Result['path'] = $path;
$Result['title_path'] = $titlePath;
$Result['section_id'] = $object->attribute('section_id');
$Result['node_id'] = $node->attribute('node_id');
$Result['navigation_part'] = $navigationPartIdentifier;
$contentInfoArray = array();
$contentInfoArray['object_id'] = $object->attribute('id');
$contentInfoArray['node_id'] = $node->attribute('node_id');
$contentInfoArray['parent_node_id'] = $node->attribute('parent_node_id');
$contentInfoArray['class_id'] = $object->attribute('contentclass_id');
$contentInfoArray['class_identifier'] = $node->attribute('class_identifier');
$contentInfoArray['remote_id'] = $object->attribute('remote_id');
$contentInfoArray['node_remote_id'] = $node->attribute('remote_id');
$contentInfoArray['offset'] = $offset;
$contentInfoArray['viewmode'] = $viewMode;
$contentInfoArray['navigation_part_identifier'] = $navigationPartIdentifier;
$contentInfoArray['node_depth'] = $node->attribute('depth');
$contentInfoArray['url_alias'] = $node->attribute('url_alias');
$contentInfoArray['current_language'] = $object->attribute('current_language');
$contentInfoArray['language_mask'] = $object->attribute('language_mask');
$contentInfoArray['main_node_id'] = $node->attribute('main_node_id');
$contentInfoArray['main_node_url_alias'] = false;
// Add url alias for main node if it is not current node and user has access to it
if (!$node->isMain()) {
$mainNode = $object->mainNode();
if ($mainNode->canRead()) {
$contentInfoArray['main_node_url_alias'] = $mainNode->attribute('url_alias');
}
}
$contentInfoArray['persistent_variable'] = false;
if ($tpl->variable('persistent_variable') !== false) {
$contentInfoArray['persistent_variable'] = $tpl->variable('persistent_variable');
$keyArray[] = array('persistent_variable', $contentInfoArray['persistent_variable']);
$res->setKeys($keyArray);
}
$contentInfoArray['class_group'] = $object->attribute('match_ingroup_id_list');
$contentInfoArray['state'] = $object->attribute('state_id_array');
$contentInfoArray['state_identifier'] = $object->attribute('state_identifier_array');
$contentInfoArray['parent_class_id'] = $parentClassID;
$contentInfoArray['parent_class_identifier'] = $parentClassIdentifier;
$contentInfoArray['parent_node_remote_id'] = $parentNodeRemoteID;
$contentInfoArray['parent_object_remote_id'] = $parentObjectRemoteID;
$Result['content_info'] = $contentInfoArray;
// Store which templates were used to make this cache.
$Result['template_list'] = $tpl->templateFetchList();
// Check if time to live is set in template
if ($tpl->hasVariable('cache_ttl')) {
$cacheTTL = $tpl->variable('cache_ttl');
}
if (!isset($cacheTTL)) {
$cacheTTL = -1;
}
$Result['cache_ttl'] = $cacheTTL;
// if cache_ttl is set to 0 from the template, we need to add a no-cache advice
// to the node's data. That way, the retrieve callback on the next calls
// will be able to determine earlier that no cache generation should be started
// for this node
if ($cacheTTL == 0) {
$Result['no_cache'] = true;
}
if ($languageCode) {
$node->setCurrentLanguage($oldLanguageCode);
}
return $Result;
}
示例3: alignArticle
/**
* Aligns articles published under given publisher folder
* @param eZContentObject $publisherObject
*/
function alignArticle( $publisherObject, $checkModified = false, $checkLocations = false, $checkLanguages = false, $checkHidden = false, $timingDelay = 0, $forceLast = 0, $sleepTime = 1 )
{
echo "Starting treatment of publisher folder : " . $publisherObject->name() . "\n";
echo "Fetching solr informations\n";
$eZSolr = eZSearch::getEngine();
$offset = 0;
$forced = 0;
$limit = 200;
$publisherNode = $publisherObject->mainNode();
$doCheck = $checkModified || $checkLocations || $checkLanguages || $checkHidden;
$solrInfos = fetchSolrPublisherFolder ( $publisherNode, $checkModified, $checkLocations, $checkLanguages, $checkHidden, $sleepTime );
echo "Solr count : " . count($solrInfos) . "\n";
while ( true )
{
$params = array(
'Offset' => $offset,
'Limit' => $limit,
'ClassFilterType' => 'include',
'ClassFilterArray' => array( 'article' ),
'LoadDataMap' => false,
'AsObject' => false,
'MainNodeOnly' => true,
);
if ($forceLast > 0)
$params['SortBy'] = array ( array('published', false ) );
$nodeList = $publisherNode->subtree( $params );
echo "\neZ Offset : $offset\n";
if ( count( $nodeList ) == 0 )
{
break;
}
foreach ( $nodeList as $mainNode )
{
$nodeId = $mainNode['node_id'];
$objectId = $mainNode['contentobject_id'];
$toUpdate = false;
if ( $forceLast > 0 && $forced < $forceLast )
$toUpdate = true;
elseif ( isset($solrInfos[$nodeId]) )
{
if ( $doCheck )
{
if ( $checkLanguages )
{
$eZLanguages = eZContentObject::fetch($objectId)->languages();
$toUpdate = compareLanguages( array_keys($eZLanguages), $solrInfos[$nodeId]['languages'] );
showInvalidTranslations(array_keys($eZLanguages), $solrInfos[$nodeId]['languages'], $objectId);
}
if (!$toUpdate && $checkModified)
$toUpdate = compareDates($mainNode['modified'], $solrInfos[$nodeId]['modified'], $timingDelay);
if (!$toUpdate && $checkLocations)
$toUpdate = compareLocations($objectId, $solrInfos[$nodeId]['locations']);
if (!$toUpdate && $checkHidden)
$toUpdate = compareHidden($objectId, $solrInfos[$nodeId]['hiddenCount'], $solrInfos[$nodeId]['notHiddenCount']);
}
unset($solrInfos[$nodeId]);
}
else
$toUpdate = true;
if ( $toUpdate )
{
$return = $eZSolr->addObject( eZContentObject::fetch($objectId), false );
echo ( !$return ? '!' . $objectId . '!' : '+' );
}
else
echo '-';
$forced++;
}
$offset += $limit;
eZContentObject::clearCache();
if ( $sleepTime > 0 )
sleep ($sleepTime);
}
echo "\nArticles in solr but unknown from eZPublish : " . count($solrInfos) . " articles\n";
}
示例4: updateGlobalLimitation
/**
* @param eZContentObject $contentObject
* @param bool|null $parentIsInvisible Only defined as boolean true|false if we are recursively going in a child
*/
public static function updateGlobalLimitation ( $contentObject, $parentIsInvisible = null )
{
/* @type $contentMainNode eZContentObjectTreeNode */
$db = eZDB::instance();
$contentObjectID = $contentObject->attribute('id');
$contentMainNode = $contentObject->mainNode();
if ( !($contentMainNode instanceof eZContentObjectTreeNode) )
return;
/* @type $dm eZContentObjectAttribute[] */
$contentDepth = $contentMainNode->attribute('depth');
$merckINI = eZINI::instance('merck.ini');
$onlineDateAttribute = $merckINI->variable("ArticleVisibility","OnlineDate");
$offlineDateAttribute = $merckINI->variable("ArticleVisibility","OfflineDate");
$dm = $contentObject->attribute("data_map");
if ( !is_array($dm) )
return;
/* @type $onlineDateContent eZDateTime */
/* @type $offlineDateContent eZDateTime */
$onlineDateContent = $dm[$onlineDateAttribute]->content();
$onlineDate = $onlineDateContent->timeStamp();
$offlineDateContent = $dm[$offlineDateAttribute]->content();
$offlineDate = $offlineDateContent->timeStamp();
$visibility = MMEventManager::visibilityDates($contentObject);
$isInvisible = !$visibility;
// We have a parent article, we check its visibility
if ( !$isInvisible && $parentIsInvisible === null && $contentDepth > 4 )
{
$parentNode = $contentMainNode->fetchParent();
$isInvisible = self::isGloballyLimited( $parentNode->attribute('contentobject_id') );
}
elseif ( !$isInvisible )
{
if ( $parentIsInvisible !== null && $parentIsInvisible === true )
$isInvisible = true;
}
$db->beginQuery();
$visibilityChange = self::updateGlobalLimitationEntry( $contentObjectID, $offlineDate, $onlineDate, $visibility, $isInvisible);
if ( $visibilityChange && $visibility && !$isInvisible )
{
eZSearch::updateNodeVisibility($contentObject->mainNodeID(), 'show');
}
elseif ( $visibilityChange && ( !$visibility || $isInvisible ) )
{
eZSearch::updateNodeVisibility($contentObject->mainNodeID(), 'hide');
}
if ( $visibilityChange )
self::spreadGlobalLimitationChange( $contentMainNode, $isInvisible );
$db->commitQuery();
}
示例5: alignArticleLocation
/**
* Aligns location of the articles published under given publisher folder
* @param eZContentObject $publisherObject
*/
function alignArticleLocation( $publisherObject, $offset = 0 )
{
$limit = 200;
$continue = true;
$publisherNode = $publisherObject->mainNode();
$globalVarName = 'contentServiceMainNodeID';
if ( !isset( $GLOBALS[$globalVarName] ) )
{
$GLOBALS[$globalVarName] = array();
}
echo "Starting treatment of publisher folder : " . $publisherObject->name() . "\n";
while ( true )
{
$params = array(
'Offset' => $offset,
'Limit' => $limit,
'ClassFilterType' => 'include',
'ClassFilterArray' => array(
'article'
),
'LoadDataMap' => false,
'AsObject' => false,
'MainNodeOnly' => true,
);
$nodeList = $publisherNode->subtree( $params );
echo " // Offset : $offset // ";
if ( count( $nodeList ) == 0 )
{
break;
}
foreach ( $nodeList as $mainNode )
{
$object = eZContentObject::fetch( $mainNode["contentobject_id"] );
deploymentType::addListNodesIdToAddLocation($object);
}
$offset += $limit;
eZContentObject::clearCache();
}
}
示例6: modify
/**
* The modify method gets the current content object AND the list of
* Solr Docs (for each available language version).
*
* @param eZContentObject $contentObject
* @param eZSolrDoc[] $docList
*/
public function modify( eZContentObject $contentObject, &$docList )
{
/* @var eZContentObjectTreeNode $contentMainNode */
$contentMainNode = $contentObject->mainNode();
$contentObjectLanguages = $contentObject->allLanguages();
$articleLanguageArray = array_keys($contentObjectLanguages);
$publisherFolderNodeId = PublisherFolderTool::getPublisherNodeIdFromArticleNode($contentMainNode);
$isMerckManualShowcase = false;
// Depth : 0 => father article, 1+ => child article
$articleRelativeDepth = $contentMainNode->attribute('depth') - 4;
if ( is_null($publisherFolderNodeId) )
return;
$publisherFolderInfos = PublisherFolderTool::getPublisherFolderInfosFromNodeId($publisherFolderNodeId);
if ( !$publisherFolderInfos )
return;
$publisherFolderRelations = PublisherFolderTool::getPublisherFolderRelations($publisherFolderInfos['path']);
if ( !$publisherFolderRelations || count($publisherFolderRelations['clusters']) === 0 )
return;
// node remote
$remote = $contentMainNode->attribute("remote_id");
$this->addValueToDoc( $docList, 'attr_node_remote_s', $remote);
$this->addValueToDoc( $docList, 'attr_relative_depth_i', $articleRelativeDepth);
foreach ( $publisherFolderRelations['clusters'] as $cluster => $applications )
{
ClusterTool::setCurrentCluster( $cluster );
$applicationIdentifier = $applications[0];
/* @var $applicationLocalized ApplicationLocalized */
$applicationLocalized = CacheApplicationTool::buildLocalizedApplicationByIdentifier( $applicationIdentifier );
if ( !($applicationLocalized instanceof ApplicationLocalized) )
{
if (count($applications) == 1)
{
unset($publisherFolderRelations['clusters'][$cluster]);
continue;
}
$applicationIdentifier = $applications[1];
$applicationLocalized = CacheApplicationTool::buildLocalizedApplicationByIdentifier( $applicationIdentifier );
if ( !($applicationLocalized instanceof ApplicationLocalized) )
{
unset($publisherFolderRelations['clusters'][$cluster]);
continue;
}
$publisherFolderRelations['clusters'][$cluster] = array ($applicationIdentifier);
}
// visibility per cluster
$isVisible = ObjectVisibilityManager::isVisible($contentMainNode->attribute('contentobject_id'), $cluster);
$this->addValueToDoc( $docList, 'attr_is_invisible_' . $cluster . '_b', !$isVisible );
if (!isset(self::$_applicationIdentifierToId[$applicationIdentifier]))
self::$_applicationIdentifierToId[$applicationIdentifier] = $applicationLocalized->applicationObject()->attribute ('id');
$publisherFolder = $applicationLocalized->getPublisherFolderFromPath($publisherFolderInfos['path']);
$publisherLanguages = $publisherFolder->getLanguages();
$publisherAndArticleLanguages = array_intersect($publisherLanguages, $articleLanguageArray);
if ( count($publisherAndArticleLanguages) == 0 )
continue;
$primaryLanguage = reset($publisherAndArticleLanguages);
$contentMainNode->setCurrentLanguage($primaryLanguage);
// publisher folder languages
$languageKey = 'subattr_language_' . $cluster . '____s';
$formatedLanguages = array_map(
array('kezfSolrArticleIndex', 'languageCode') ,
$publisherAndArticleLanguages
);
$indexLanguages = array_unique( $formatedLanguages );
$this->addValueToDoc( $docList, $languageKey, $indexLanguages, true, false );
// Meck manual sections
if( $applicationIdentifier == MerckManualShowcase::mainApplicationIdentifier() )
$isMerckManualShowcase = true;
// url computation
/* @var eZContentObjectAttribute[] $dataMap */
//.........这里部分代码省略.........