Beispiel #1
0
 /**
  * test fetchByIdentifier function
  */
 public function testFetchByIdentifier()
 {
     global $eZContentSectionObjectCache;
     $section = new eZSection(array());
     $section->setAttribute('name', 'Test Section');
     $section->setAttribute('identifier', 'test_section');
     $section->store();
     $sectionID = $section->attribute('id');
     // assert that if the cache is set after fetching
     $section2 = eZSection::fetchByIdentifier('test_section');
     $this->assertEquals($sectionID, $section2->attribute('id'));
     // assert that object is cached
     $this->assertNotNull($eZContentSectionObjectCache['test_section']);
     $this->assertNotNull($eZContentSectionObjectCache[$sectionID]);
     // assert that the two object refer to same object
     $this->assertSame($eZContentSectionObjectCache[$sectionID], $section2);
     $this->assertSame(eZSection::fetch($sectionID), $section2);
     // fetchByID and fetchByIdentifier, assert that the result is the same
     $section3 = new eZSection(array());
     $section3->setAttribute('name', 'Test Section3');
     $section3->setAttribute('identifier', 'test_section3');
     $section3->store();
     $objectByID = eZSection::fetch($section3->attribute('id'));
     $objectByIdentifier = eZSection::fetchByIdentifier('test_section3');
     $this->assertSame($objectByID, $objectByIdentifier);
     $arrayByIdentifier = eZSection::fetch($section3->attribute('id'), false);
     $this->assertTrue(is_array($arrayByIdentifier));
 }
 /**
  * Fetch section object given either section id or section identifier. There should be one and only one parameter.
  * @param integer $sectionID
  * @param string $sectionIdentifier
  * @return object
  */
 function fetchSectionObject( $sectionID = false, $sectionIdentifier = false )
 {
     if( $sectionID !== false )
     {
         if( $sectionIdentifier !== false )
         {
             $sectionObject = null;
         }
         else
         {
             $sectionObject = eZSection::fetch( $sectionID );
         }
     }
     else
     {
         if( $sectionIdentifier === false )
         {
             $sectionObject = null;
         }
         else
         {
             $sectionObject = eZSection::fetchByIdentifier( $sectionIdentifier );
         }
     }
     if ( $sectionObject === null )
         return array( 'error' => array( 'error_type' => 'kernel',
                                         'error_code' => eZError::KERNEL_NOT_FOUND ) );
     return array( 'result' => $sectionObject );
 }
    function execute( $xmlNode )
    {
        // ezcontentnavigationpart
        $sectionName    = $xmlNode->getAttribute( 'sectionName' );
        $sectionIdentifier    = $xmlNode->getAttribute( 'sectionIdentifier' );
        $navigationPart = $xmlNode->getAttribute( 'navigationPart' );
        $referenceID    = $xmlNode->getAttribute( 'referenceID' );

        if( $sectionIdentifier )
        {
            $sectionID = eZSection::fetchByIdentifier( $sectionIdentifier );
        }

        if( !$sectionID )
        {
            $sectionID = $this->sectionIDbyName( $sectionName );
        }

        if( $sectionID )
        {
            $this->writeMessage( "\tSection '$sectionName' already exists." , 'notice' );
        }
        else
        {
            $section = new eZSection( array() );
            $section->setAttribute( 'name', $sectionName );
            $section->setAttribute( 'identifier', $sectionIdentifier );
            $section->setAttribute( 'navigation_part_identifier', $navigationPart );
            $section->store();
            $sectionID = $section->attribute( 'id' );
        }
        $refArray = array();
        if ( $referenceID )
        {
            $refArray[$referenceID] = $sectionID;
        }
        $this->addReference( $refArray );
    }
 /**
  * Returns a valid limitation value to be saved in database
  *
  * @since 1.2.0
  * @param string $limitationType	Limitation type
  * @param string $limitationValue	Human readable input value
  * @return string	Value to be saved in database
  */
 private function getLimitationValue($limitationType, $limitationValue)
 {
     $limitationValue = $this->getReferenceID($limitationValue);
     switch ($limitationType) {
         case 'Class':
         case 'ParentClass':
             if (!is_int($limitationValue)) {
                 $class = eZContentClass::fetchByIdentifier($limitationValue);
                 if ($class) {
                     $limitationValue = $class->ID;
                 }
             }
             break;
         case 'Subtree':
             //Subtree limitations need to store path_string instead of node_id
             $val = (int) $limitationValue;
             if ($val > 0) {
                 $node = eZContentObjectTreeNode::fetch($val);
                 $limitationValue = $node->attribute('path_string');
             }
             break;
         case 'SiteAccess':
             //siteaccess name must be crc32'd
             if (!is_int($limitationValue)) {
                 $limitationValue = eZSys::ezcrc32($limitationValue);
             }
             break;
         case 'Section':
             if (!is_int($limitationValue)) {
                 $section = eZSection::fetchByIdentifier($limitationValue);
                 if ($section) {
                     $limitationValue = $section->attribute('id');
                 }
             }
             break;
     }
     return $limitationValue;
 }