本文整理汇总了PHP中eZSearch::removeNodeAssignment方法的典型用法代码示例。如果您正苦于以下问题:PHP eZSearch::removeNodeAssignment方法的具体用法?PHP eZSearch::removeNodeAssignment怎么用?PHP eZSearch::removeNodeAssignment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZSearch
的用法示例。
在下文中一共展示了eZSearch::removeNodeAssignment方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: move
static function move($nodeID, $newParentNodeID)
{
$result = false;
if (!is_numeric($nodeID) || !is_numeric($newParentNodeID)) {
return false;
}
$node = eZContentObjectTreeNode::fetch($nodeID);
if (!$node) {
return false;
}
$object = $node->object();
if (!$object) {
return false;
}
$objectID = $object->attribute('id');
$oldParentNode = $node->fetchParent();
$oldParentObject = $oldParentNode->object();
// clear user policy cache if this is a user object
if (in_array($object->attribute('contentclass_id'), eZUser::contentClassIDs())) {
eZUser::purgeUserCacheByUserId($object->attribute('id'));
}
// clear cache for old placement.
// If child count exceeds threshold, do nothing here, and instead clear all view cache at the end.
$childCountInThresholdRange = eZContentCache::inCleanupThresholdRange($node->childrenCount(false));
if ($childCountInThresholdRange) {
eZContentCacheManager::clearContentCacheIfNeeded($objectID);
}
$db = eZDB::instance();
$db->begin();
$node->move($newParentNodeID);
$newNode = eZContentObjectTreeNode::fetchNode($objectID, $newParentNodeID);
if ($newNode) {
$newNode->updateSubTreePath(true, true);
if ($newNode->attribute('main_node_id') == $newNode->attribute('node_id')) {
// If the main node is moved we need to check if the section ID must change
$newParentNode = $newNode->fetchParent();
$newParentObject = $newParentNode->object();
if ($object->attribute('section_id') != $newParentObject->attribute('section_id')) {
eZContentObjectTreeNode::assignSectionToSubTree($newNode->attribute('main_node_id'), $newParentObject->attribute('section_id'), $oldParentObject->attribute('section_id'));
}
}
// modify assignment
$curVersion = $object->attribute('current_version');
$nodeAssignment = eZNodeAssignment::fetch($objectID, $curVersion, $oldParentNode->attribute('node_id'));
if ($nodeAssignment) {
$nodeAssignment->setAttribute('parent_node', $newParentNodeID);
$nodeAssignment->setAttribute('op_code', eZNodeAssignment::OP_CODE_MOVE);
$nodeAssignment->store();
// update search index specifying we are doing a move operation
$nodeIDList = array($nodeID);
eZSearch::removeNodeAssignment($node->attribute('main_node_id'), $newNode->attribute('main_node_id'), $object->attribute('id'), $nodeIDList);
eZSearch::addNodeAssignment($newNode->attribute('main_node_id'), $object->attribute('id'), $nodeIDList, true);
}
$result = true;
} else {
eZDebug::writeError("Node {$nodeID} was moved to {$newParentNodeID} but fetching the new node failed");
}
$db->commit();
// clear cache for new placement.
// If child count exceeds threshold, clear all view cache instead.
if ($childCountInThresholdRange) {
eZContentCacheManager::clearContentCacheIfNeeded($objectID);
} else {
eZContentCacheManager::clearAllContentCache();
}
return $result;
}
示例2: removeAssignment
/**
* Removes a nodeAssignment or a list of nodeAssigments
*
* @deprecated since 4.3
*
* @param int $nodeID
* @param int $objectID
* @param array $removeList
* @param bool $moveToTrash
*
* @return array An array with operation status, always true
*/
public static function removeAssignment($nodeID, $objectID, $removeList, $moveToTrash)
{
$mainNodeChanged = false;
$nodeIDList = array();
$mainNodeID = $nodeID;
$userClassIDArray = eZUser::contentClassIDs();
$object = eZContentObject::fetch($objectID);
$nodeAssignmentIDList = array();
$db = eZDB::instance();
$db->begin();
foreach ($removeList as $key => $node) {
$removeObjectID = $node->attribute('contentobject_id');
$removeObject = eZContentObject::fetch($removeObjectID);
$nodeAssignmentList = eZNodeAssignment::fetchForObject($removeObjectID, $removeObject->attribute('current_version'), 0, false);
foreach ($nodeAssignmentList as $nodeAssignmentKey => $nodeAssignment) {
if ($nodeAssignment['parent_node'] == $node->attribute('parent_node_id')) {
$nodeAssignmentIDList[] = $nodeAssignment['id'];
unset($nodeAssignmentList[$nodeAssignmentKey]);
}
}
if ($node->attribute('node_id') == $node->attribute('main_node_id')) {
$mainNodeChanged = true;
}
$node->removeThis();
$nodeIDList[] = $node->attribute('node_id');
}
eZNodeAssignment::purgeByID(array_unique($nodeAssignmentIDList));
if ($mainNodeChanged) {
$allNodes = $object->assignedNodes();
$mainNode = $allNodes[0];
$mainNodeID = $mainNode->attribute('node_id');
eZContentObjectTreeNode::updateMainNodeID($mainNodeID, $objectID, false, $mainNode->attribute('parent_node_id'));
}
// Give other search engines that the default one a chance to reindex
// when removing locations.
if (!eZSearch::getEngine() instanceof eZSearchEngine) {
eZContentOperationCollection::registerSearchObject($objectID);
}
$db->commit();
//call appropriate method from search engine
eZSearch::removeNodeAssignment($nodeID, $mainNodeID, $objectID, $nodeIDList);
eZContentCacheManager::clearObjectViewCacheIfNeeded($objectID);
// clear user policy cache if this was a user object
if (in_array($object->attribute('contentclass_id'), $userClassIDArray)) {
eZUser::purgeUserCacheByUserId($object->attribute('id'));
}
// we don't clear template block cache here since it's cleared in eZContentObjectTreeNode::removeNode()
return array('status' => true);
}
示例3: move
static function move( $nodeID, $newParentNodeID )
{
$result = false;
if ( !is_numeric( $nodeID ) || !is_numeric( $newParentNodeID ) )
return false;
$node = eZContentObjectTreeNode::fetch( $nodeID );
if ( !$node )
return false;
$object = $node->object();
if ( !$object )
return false;
$objectID = $object->attribute( 'id' );
$oldParentNode = $node->fetchParent();
$oldParentObject = $oldParentNode->object();
// clear user policy cache if this is a user object
if ( in_array( $object->attribute( 'contentclass_id' ), eZUser::contentClassIDs() ) )
{
eZUser::purgeUserCacheByUserId( $object->attribute( 'id' ) );
}
// clear cache for old placement.
eZContentCacheManager::clearContentCacheIfNeeded( $objectID );
$db = eZDB::instance();
$db->begin();
$node->move( $newParentNodeID );
$newNode = eZContentObjectTreeNode::fetchNode( $objectID, $newParentNodeID );
if ( $newNode )
{
$newNode->updateSubTreePath( true, true );
if ( $newNode->attribute( 'main_node_id' ) == $newNode->attribute( 'node_id' ) )
{
// If the main node is moved we need to check if the section ID must change
$newParentNode = $newNode->fetchParent();
$newParentObject = $newParentNode->object();
if ( $object->attribute( 'section_id' ) != $newParentObject->attribute( 'section_id' ) )
{
eZContentObjectTreeNode::assignSectionToSubTree( $newNode->attribute( 'main_node_id' ),
$newParentObject->attribute( 'section_id' ),
$oldParentObject->attribute( 'section_id' ) );
}
}
// modify assignment
$curVersion = $object->attribute( 'current_version' );
$nodeAssignment = eZNodeAssignment::fetch( $objectID, $curVersion, $oldParentNode->attribute( 'node_id' ) );
if ( $nodeAssignment )
{
$nodeAssignment->setAttribute( 'parent_node', $newParentNodeID );
$nodeAssignment->setAttribute( 'op_code', eZNodeAssignment::OP_CODE_MOVE );
$nodeAssignment->store();
// update search index
$nodeIDList = array( $nodeID );
eZSearch::removeNodeAssignment( $node->attribute( 'main_node_id' ), $newNode->attribute( 'main_node_id' ), $object->attribute( 'id' ), $nodeIDList );
eZSearch::addNodeAssignment( $newNode->attribute( 'main_node_id' ), $object->attribute( 'id' ), $nodeIDList );
}
$result = true;
}
else
{
eZDebug::writeError( "Node $nodeID was moved to $newParentNodeID but fetching the new node failed" );
}
$db->commit();
// clear cache for new placement.
eZContentCacheManager::clearContentCacheIfNeeded( $objectID );
return $result;
}