/** * 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; }