updateSection() public static method

Assigns a node to a section
public static updateSection ( integer $nodeID, integer $selectedSectionID ) : array
$nodeID integer
$selectedSectionID integer
return array An array with operation status, always true
function sectionEditActionCheck( $module, $class, $object, $version, $contentObjectAttributes, $editVersion, $editLanguage, $fromLanguage )
{
    if ( $module->isCurrentAction( 'SectionEdit' ) )
    {
        $http = eZHTTPTool::instance();
        if ( $http->hasPostVariable( 'SelectedSectionId' ) )
        {
            $selectedSectionID = (int) $http->postVariable( 'SelectedSectionId' );
            $selectedSection = eZSection::fetch( $selectedSectionID );
            if ( is_object( $selectedSection ) )
            {
                $currentUser = eZUser::currentUser();
                if ( $currentUser->canAssignSectionToObject( $selectedSectionID, $object ) )
                {
                    $db = eZDB::instance();
                    $db->begin();
                    $assignedNodes = $object->attribute( 'assigned_nodes' );
                    if ( count( $assignedNodes ) > 0 )
                    {
                        foreach ( $assignedNodes as $node )
                        {
                            if ( eZOperationHandler::operationIsAvailable( 'content_updatesection' ) )
                            {
                                $operationResult = eZOperationHandler::execute( 'content',
                                                                                'updatesection',
                                                                                array( 'node_id'             => $node->attribute( 'node_id' ),
                                                                                       'selected_section_id' => $selectedSectionID ),
                                                                                null,
                                                                                true );

                            }
                            else
                            {
                                eZContentOperationCollection::updateSection( $node->attribute( 'node_id' ), $selectedSectionID );
                            }
                        }
                    }
                    else
                    {
                        // If there are no assigned nodes we should update db for the current object.
                        $objectID = $object->attribute( 'id' );
                        $db->query( "UPDATE ezcontentobject SET section_id='$selectedSectionID' WHERE id = '$objectID'" );
                        $db->query( "UPDATE ezsearch_object_word_link SET section_id='$selectedSectionID' WHERE  contentobject_id = '$objectID'" );
                    }
                    $object->expireAllViewCache();
                    $db->commit();
                }
                else
                {
                    eZDebug::writeError( "You do not have permissions to assign the section <" . $selectedSection->attribute( 'name' ) .
                                         "> to the object <" . $object->attribute( 'name' ) . ">." );
                }
                $module->redirectToView( 'edit', array( $object->attribute( 'id' ), $editVersion, $editLanguage, $fromLanguage ) );
            }
        }
    }
}
Beispiel #2
0
 public function applyTo(eZContentObject $object)
 {
     $sectionID = $this->attribute("id");
     $currentUser = eZUser::currentUser();
     if (!$currentUser->canAssignSectionToObject($sectionID, $object)) {
         eZDebug::writeError("You do not have permissions to assign the section <" . $selectedSection->attribute("name") . "> to the object <" . $object->attribute("name") . ">.");
         return false;
     }
     $db = eZDB::instance();
     $db->begin();
     $assignedNodes = $object->attribute("assigned_nodes");
     if (!empty($assignedNodes)) {
         if (eZOperationHandler::operationIsAvailable("content_updatesection")) {
             foreach ($assignedNodes as $node) {
                 eZOperationHandler::execute("content", "updatesection", array("node_id" => $node->attribute("node_id"), "selected_section_id" => $sectionID), null, true);
             }
         } else {
             foreach ($assignedNodes as $node) {
                 eZContentOperationCollection::updateSection($node->attribute("node_id"), $sectionID);
             }
         }
     } else {
         // If there are no assigned nodes we should update db for the current object.
         $objectID = $object->attribute("id");
         $db->query("UPDATE ezcontentobject SET section_id='{$sectionID}' WHERE id = '{$objectID}'");
         $db->query("UPDATE ezsearch_object_word_link SET section_id='{$sectionID}' WHERE  contentobject_id = '{$objectID}'");
     }
     eZContentCacheManager::clearContentCacheIfNeeded($object->attribute("id"));
     $object->expireAllViewCache();
     $db->commit();
 }