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; }
function setAttribute($attr, $val) { switch ($attr) { case 'is_enabled': if (!$val) { $user = eZUser::fetch($this->UserID); if ($user) { eZUser::removeSessionData($this->UserID); } } eZUser::purgeUserCacheByUserId($this->UserID); break; } parent::setAttribute($attr, $val); }
/** * Swap a node with another one * * @param int $nodeID * @param int $selectedNodeID * @param array $nodeIdList * * @return array An array with operation status, always true */ public static function swapNode($nodeID, $selectedNodeID, $nodeIdList = array()) { $userClassIDArray = eZUser::contentClassIDs(); $node = eZContentObjectTreeNode::fetch($nodeID); $selectedNode = eZContentObjectTreeNode::fetch($selectedNodeID); $object = $node->object(); $nodeParentNodeID = $node->attribute('parent_node_id'); $nodeParent = $node->attribute('parent'); $objectID = $object->attribute('id'); $objectVersion = $object->attribute('current_version'); $selectedObject = $selectedNode->object(); $selectedObjectID = $selectedObject->attribute('id'); $selectedObjectVersion = $selectedObject->attribute('current_version'); $selectedNodeParentNodeID = $selectedNode->attribute('parent_node_id'); $selectedNodeParent = $selectedNode->attribute('parent'); $db = eZDB::instance(); $db->begin(); $node->setAttribute('contentobject_id', $selectedObjectID); $node->setAttribute('contentobject_version', $selectedObjectVersion); $selectedNode->setAttribute('contentobject_id', $objectID); $selectedNode->setAttribute('contentobject_version', $objectVersion); // fix main node id if ($node->isMain() && !$selectedNode->isMain()) { $node->setAttribute('main_node_id', $selectedNode->attribute('main_node_id')); $selectedNode->setAttribute('main_node_id', $selectedNode->attribute('node_id')); } else { if ($selectedNode->isMain() && !$node->isMain()) { $selectedNode->setAttribute('main_node_id', $node->attribute('main_node_id')); $node->setAttribute('main_node_id', $node->attribute('node_id')); } } $node->store(); $selectedNode->store(); // clear user policy cache if this was a user object if (in_array($object->attribute('contentclass_id'), $userClassIDArray)) { eZUser::purgeUserCacheByUserId($object->attribute('id')); } if (in_array($selectedObject->attribute('contentclass_id'), $userClassIDArray)) { eZUser::purgeUserCacheByUserId($selectedObject->attribute('id')); } // modify path string $changedOriginalNode = eZContentObjectTreeNode::fetch($nodeID); $changedOriginalNode->updateSubTreePath(); $changedTargetNode = eZContentObjectTreeNode::fetch($selectedNodeID); $changedTargetNode->updateSubTreePath(); // modify section if ($changedOriginalNode->isMain()) { $changedOriginalObject = $changedOriginalNode->object(); $parentObject = $nodeParent->object(); if ($changedOriginalObject->attribute('section_id') != $parentObject->attribute('section_id')) { eZContentObjectTreeNode::assignSectionToSubTree($changedOriginalNode->attribute('main_node_id'), $parentObject->attribute('section_id'), $changedOriginalObject->attribute('section_id')); } } if ($changedTargetNode->isMain()) { $changedTargetObject = $changedTargetNode->object(); $selectedParentObject = $selectedNodeParent->object(); if ($changedTargetObject->attribute('section_id') != $selectedParentObject->attribute('section_id')) { eZContentObjectTreeNode::assignSectionToSubTree($changedTargetNode->attribute('main_node_id'), $selectedParentObject->attribute('section_id'), $changedTargetObject->attribute('section_id')); } } eZContentObject::fixReverseRelations($objectID, 'swap'); eZContentObject::fixReverseRelations($selectedObjectID, 'swap'); $db->commit(); // clear cache for new placement. eZContentCacheManager::clearContentCacheIfNeeded($objectID); eZSearch::swapNode($nodeID, $selectedNodeID, $nodeIdList = array()); return array('status' => true); }
$user = eZUser::currentUser(); $operationResult = eZOperationHandler::execute('content', 'publish', array('object_id' => $objectID, 'version' => $version->attribute('version'))); if (array_key_exists('status', $operationResult) && $operationResult['status'] != eZModuleOperationInfo::STATUS_CONTINUE) { switch ($operationResult['status']) { case eZModuleOperationInfo::STATUS_HALTED: case eZModuleOperationInfo::STATUS_CANCELLED: $module->redirectToView('trash'); } } $objectID = $object->attribute('id'); $object = eZContentObject::fetch($objectID); $mainNodeID = $object->attribute('main_node_id'); eZContentObjectTrashNode::purgeForObject($objectID); if ($locationAdded) { if ($object->attribute('contentclass_id') == $userClassID) { eZUser::purgeUserCacheByUserId($object->attribute('id')); } } eZContentObject::fixReverseRelations($objectID, 'restore'); $db->commit(); $module->redirectToView('view', array('full', $mainNodeID)); return; } $tpl = eZTemplate::factory(); $res = eZTemplateDesignResource::instance(); $designKeys = array(array('object', $object->attribute('id')), array('remote_id', $object->attribute('remote_id')), array('class', $class->attribute('id')), array('class_identifier', $class->attribute('identifier'))); // Class identifier $res->setKeys($designKeys); $Result = array(); $tpl->setVariable("object", $object); $tpl->setVariable("version", $version);
function removeThis() { $ini = eZINI::instance(); $object = $this->object(); $nodeID = $this->attribute('node_id'); $objectID = $object->attribute('id'); if (eZAudit::isAuditEnabled()) { // Set audit params. $objectName = $object->attribute('name'); eZAudit::writeAudit('content-delete', array('Node ID' => $nodeID, 'Object ID' => $objectID, 'Content Name' => $objectName, 'Comment' => 'Removed the current node: eZContentObjectTreeNode::removeNode()')); } $db = eZDB::instance(); $db->begin(); $nodePath = $this->attribute('path_string'); $childrensPath = $nodePath; $pathString = " path_string like '{$childrensPath}%' "; $urlAlias = $this->attribute('url_alias'); // Remove static cache if ($ini->variable('ContentSettings', 'StaticCache') == 'enabled') { $optionArray = array('iniFile' => 'site.ini', 'iniSection' => 'ContentSettings', 'iniVariable' => 'StaticCacheHandler'); $options = new ezpExtensionOptions($optionArray); $staticCacheHandler = eZExtension::getHandlerClass($options); $staticCacheHandler->removeURL("/" . $urlAlias); $staticCacheHandler->generateAlwaysUpdatedCache(); $parent = $this->fetchParent(); } $db->query("DELETE FROM ezcontentobject_tree\n WHERE {$pathString} OR\n path_string = '{$nodePath}'"); // Re-cache parent node if ($ini->variable('ContentSettings', 'StaticCache') == 'enabled') { if ($parent) { $staticCacheHandler->cacheURL("/" . $parent->urlAlias()); } } // Clean up URL alias entries eZURLAliasML::removeByAction('eznode', $nodeID); // Clean up content cache eZContentCacheManager::clearContentCacheIfNeeded($this->attribute('contentobject_id')); // clean up user cache if (in_array($object->attribute('contentclass_id'), eZUser::contentClassIDs())) { eZUser::removeSessionData($objectID); eZUser::purgeUserCacheByUserId($objectID); } $parentNode = $this->attribute('parent'); if (is_object($parentNode)) { eZContentCacheManager::clearContentCacheIfNeeded($parentNode->attribute('contentobject_id')); $parentNode->updateAndStoreModified(); eZNodeAssignment::purgeByParentAndContentObjectID($parentNode->attribute('node_id'), $objectID); } // Clean up policies and limitations eZRole::cleanupByNode($this); // Clean up recent items eZContentBrowseRecent::removeRecentByNodeID($nodeID); // Clean up bookmarks eZContentBrowseBookmark::removeByNodeID($nodeID); // Clean up tip-a-friend counter eZTipafriendCounter::removeForNode($nodeID); // Clean up view counter eZViewCounter::removeCounter($nodeID); $db->commit(); }
public function tearDown() { eZUser::purgeUserCacheByUserId($this->userId); eZDir::cleanupEmptyDirectories(eZUser::getCacheDir($this->userId)); parent::tearDown(); }