/** * Depending on the new parent node visibility, recompute "is_invisible" attribute for the given node and * its children. (used after content/move or content/copy) * * @param eZContentObjectTreeNodeNoLanguage $node * @param eZContentObjectTreeNodeNoLanguage $parentNode * @param bool $recursive */ static function updateNodeVisibility($node, $parentNode, $recursive = true) { if (!$node) { eZDebug::writeWarning('No such node to update visibility for.'); return; } if (!$parentNode) { eZDebug::writeWarning('No parent node found when updating node visibility'); return; } if ($node->attribute('is_hidden') == 0 && $parentNode->attribute('is_invisible') != $node->attribute('is_invisible')) { $parentNodeIsVisible = $parentNode->attribute('is_invisible'); $nodeID = $node->attribute('node_id'); $db = eZDB::instance(); $db->begin(); $db->query("UPDATE ezcontentobject_tree SET is_invisible={$parentNodeIsVisible} WHERE node_id={$nodeID}"); if ($recursive) { // update visibility for children of the node if ($parentNodeIsVisible) { eZContentObjectTreeNodeNoLanguage::hideSubTree($node, $modifyRootNode = false); } else { eZContentObjectTreeNodeNoLanguage::unhideSubTree($node, $modifyRootNode = false); } } $db->commit(); } }