/** * Test for issue #15230: php fatal error in fetch reverse_related_object * * This tests checks that eZContentFunctionCollection::fetchReverseRelatedObjects * and eZContentFunctionCollection::fetchRelatedObjectsCount won't throw a * fatal error if provided with a non-existing object ID * * @link http://issues.ez.no/15230 */ public function testIssue15230() { $nonExistingArticleID = 100000000; $this->assertFalse(eZContentFunctionCollection::fetchRelatedObjects($nonExistingArticleID, false, true, false, false), "eZContentFunctionCollection::fetchRelatedObjects({$nonExistingArticleID}) should have returned false"); $this->assertFalse(eZContentFunctionCollection::fetchRelatedObjectsCount($nonExistingArticleID, false, true, false, false), "eZContentFunctionCollection::fetchRelatedObjectsCount({$nonExistingArticleID}) should have returned false"); $this->assertFalse(eZContentFunctionCollection::fetchReverseRelatedObjects($nonExistingArticleID, false, true, false, false, false), "eZContentFunctionCollection::fetchReverseRelatedObjects({$nonExistingArticleID}) should have returned false"); $this->assertFalse(eZContentFunctionCollection::fetchReverseRelatedObjectsCount($nonExistingArticleID, false, true, false, false, false), "eZContentFunctionCollection::fetchReverseRelatedObjectsCount({$nonExistingArticleID}) should have returned false"); }
/** * Unit test for eZContentFunctionCollection::fetchRelatedObjects */ public function testFetchRelatedObjects() { $object1 = new ezpObject('article', 2); $object1->title = __FUNCTION__ . ' A'; $object1->publish(); $object2 = new ezpObject('article', 2); $object2->title = __FUNCTION__ . ' B'; $object2->addContentObjectRelation($object1->attribute('id')); $object2->publish(); $ret = eZContentFunctionCollection::fetchRelatedObjects($object2->attribute('id'), false, true, false, false); $this->assertInternalType('array', $ret); $this->assertArrayHasKey('result', $ret); $this->assertInternalType('array', $ret['result']); $this->assertTrue(count($ret['result']) == 1); $this->assertInstanceOf('eZContentObject', $ret['result'][0]); $this->assertEquals($object1->attribute('id'), $ret['result'][0]->attribute('id')); }
public static function fetchRelatedObjectsID($objectID, $attributeID, $allRelations) { if (!is_array($allRelations) || $allRelations === array()) { $allRelations = array('common', 'xml_embed', 'attribute'); if (eZContentObject::isObjectRelationTyped()) { $allRelations[] = 'xml_link'; } } $relatedObjectsTyped = array(); foreach ($allRelations as $relationType) { $relatedObjectsTyped[$relationType] = eZContentFunctionCollection::fetchRelatedObjects($objectID, $attributeID, array($relationType), false, array()); } $relatedObjectsTypedIDArray = array(); foreach ($relatedObjectsTyped as $relationTypeName => $relatedObjectsByType) { $relatedObjectsTypedIDArray[$relationTypeName] = array(); foreach ($relatedObjectsByType['result'] as $relatedObjectByType) { $relatedObjectsTypedIDArray[$relationTypeName][] = $relatedObjectByType->ID; } } return array('result' => $relatedObjectsTypedIDArray); }