/**
     * @group issue18249
     */
    public function testIssue18249()
    {

        // setup a class C1 with objectrelationlist and pattern name
        $classIdentifier = strtolower( __FUNCTION__ );
        $class1 = new ezpClass(
            __FUNCTION__, $classIdentifier, '<test_name><test_relation>'
        );
        $class1->add( 'Test name', 'test_name', 'ezstring' );
        $class1->add( 'Test Relation', 'test_relation', 'ezobjectrelationlist' );
        $class1->store();

        $o1 = new ezpObject( 'article', 2, 14, 1, 'eng-GB' );
        $o1->title = 'Test_ENG';
        $o1->publish();
        $o1->addTranslation( 'xxx-XX', array( 'title' => 'Test_XXX' ) );

        $o2 = new ezpObject( $classIdentifier, 2, 14, 1, 'xxx-XX' );
        $o2->test_name = 'name_';
        $o2->test_relation = array( $o1->attribute( 'id' ) );
        $o2->publish();

        // test O2's name
        $this->assertEquals( 'name_Test_XXX', $o2->name );
    }
 /**
  * Test scenario for issue #13492: Links are lost after removing version
  *
  * Test Outline
  * ------------
  * 1. Create a Folder in English containing a link (in the short_description attribute).
  * 2. Translate Folder into Norwegian containing another link (not the same link as above.)
  * 3. Remove Folder version 1. (Version 2 is created when translating).
  *
  * @result: short_description in version 2 will have an empty link.
  * @expected: short_description should contain same link as in version 1.
  * @link http://issues.ez.no/13492
  */
 public function testLinksAcrossTranslations()
 {
     ezpINIHelper::setINISetting('site.ini', 'RegionalSettings', 'ContentObjectLocale', 'eng-GB');
     $xmlDataEng = '<link href="/some-where-random">a link</link>';
     $xmlDataNor = '<link href="/et-tilfeldig-sted">en link</link>';
     // Step 1: Create folder
     $folder = new ezpObject("folder", 2);
     $folder->name = "Folder Eng";
     $folder->short_description = $xmlDataEng;
     $folder->publish();
     $version1Xml = $folder->short_description->attribute('output')->attribute('output_text');
     // Step 2: Translate folder
     $trData = array("name" => "Folder Nor", "short_description" => $xmlDataNor);
     $folder->addTranslation("nor-NO", $trData);
     // addTranslation() publishes too.
     // Step 3: Remove version 1
     $version1 = eZContentObjectVersion::fetchVersion(1, $folder->id);
     $version1->removeThis();
     // Grab current versions data and make sure it's fresh.
     $folder->refresh();
     $version2Xml = $folder->short_description->attribute('output')->attribute('output_text');
     $folder->remove();
     ezpINIHelper::restoreINISettings();
     self::assertEquals($version1Xml, $version2Xml);
 }
 /**
  * Regression test for issue {@see #19174 http://issues.ez.no/19174}
  */
 public function testIssue19174()
 {
     $bkpLanguages = eZContentLanguage::prioritizedLanguageCodes();
     // add a secondary language
     $locale = eZLocale::instance('fre-FR');
     $translation = eZContentLanguage::addLanguage($locale->localeCode(), $locale->internationalLanguageName());
     // create related objects
     $relatedObjectsIds = array($this->createObjectForRelation(), $this->createObjectForRelation(), $this->createObjectForRelation(), $this->createObjectForRelation());
     $xmlTextEn = "<embed href=\"ezobject://{$relatedObjectsIds[0]}\" /><link href=\"ezobject://{$relatedObjectsIds[1]}\">link</link>";
     $xmlTextFr = "<embed href=\"ezobject://{$relatedObjectsIds[2]}\" /><link href=\"ezobject://{$relatedObjectsIds[3]}\">link</link>";
     // Create an article in eng-GB, and embed related object one in the intro
     $article = new ezpObject('article', 2, 14, 1, 'eng-GB');
     $article->title = __METHOD__ . ' eng-GB';
     $article->intro = $xmlTextEn;
     $articleId = $article->publish();
     // Workaround as setting folder->name directly doesn't produce the expected result
     $article->addTranslation('fre-FR', array('title' => __METHOD__ . ' fre-FR', 'intro' => $xmlTextFr));
     $relatedObjects = eZContentObject::fetch($articleId)->relatedObjects(false, false, 0, false, array('AllRelations' => eZContentObject::RELATION_LINK | eZContentObject::RELATION_EMBED));
     self::assertEquals(4, count($relatedObjects));
     $expectedRelations = array_flip($relatedObjectsIds);
     foreach ($relatedObjects as $relatedObject) {
         if (isset($expectedRelations[$relatedObject->ID])) {
             unset($expectedRelations[$relatedObject->ID]);
         }
     }
     self::assertEquals(0, count($expectedRelations));
     $article->remove();
     $translation->removeThis();
     eZContentLanguage::setPrioritizedLanguages($bkpLanguages);
 }
 public function testIssue18249()
 {
     // setup a class C1 with objectrelationlist and pattern name
     $class1 = new ezpClass('TestClass1', 'testclass1', '<test_name><test_relation>');
     $class1->add('Test name', 'test_name', 'ezstring');
     $class1->add('Test Relation', 'test_relation', 'ezobjectrelationlist');
     $class1->store();
     // create an object O1 with eng and nor
     $o1 = new ezpObject('article', false, 14, 1, 'nor-NO');
     $o1->title = 'Test_NOR';
     $o1->publish();
     $o1->addTranslation('nor-NO', array('title' => 'Test_NOR'));
     // create an object O2 based on C1 with Nor
     $o2 = new ezpObject('testclass1', false, 14, 1, 'nor-NO');
     $o2->test_name = 'name_';
     $o2->test_relation = array($o1->attribute('id'));
     $o2->publish();
     // test O2's name
     $this->assertEquals('name_Test_NOR', $o2->name);
 }
    /**
     * Regression test for issue {@see #17632 http://issues.ez.no/17632}
     *
     * In a multi language environment, a node fetched with a language other than the prioritized one(s) will return the
     * URL alias in the prioritized language
     */
    public function testIssue17632()
    {
        $bkpLanguages = eZContentLanguage::prioritizedLanguageCodes();

        $strNameEngGB = __FUNCTION__ . " eng-GB";
        $strNameFreFR = __FUNCTION__ . " fre-FR";

        // add a secondary language
        $locale = eZLocale::instance( 'fre-FR' );
        $translation = eZContentLanguage::addLanguage( $locale->localeCode(), $locale->internationalLanguageName() );

        // set the prioritize language list to contain english
        // ezpINIHelper::setINISetting( 'site.ini', 'RegionalSettings', 'SiteLanguageList', array( 'fre-FR' ) );
        eZContentLanguage::setPrioritizedLanguages( array( 'fre-FR' ) );

        // Create an object with data in fre-FR and eng-GB
        $folder = new ezpObject( 'folder', 2, 14, 1, 'eng-GB' );
        $folder->publish();

        // Workaround as setting folder->name directly doesn't produce the expected result
        $folder->addTranslation( 'eng-GB', array( 'name' => $strNameEngGB ) );
        $folder->addTranslation( 'fre-FR', array( 'name' => $strNameFreFR ) );

        $nodeId = $folder->main_node_id;

        // fetch the node with no default parameters. Should return the french URL Alias
        $node = eZContentObjectTreeNode::fetch( $nodeId );
        self::assertEquals( 'testIssue17632-fre-FR' , $node->attribute( 'url_alias' ) );

        // fetch the node in english. Should return the english URL Alias
        $node = eZContentObjectTreeNode::fetch( $nodeId, 'eng-GB' );
        self::assertEquals( 'testIssue17632-eng-GB' , $node->attribute( 'url_alias' ) );

        ezpINIHelper::restoreINISettings();
        eZContentLanguage::setPrioritizedLanguages( $bkpLanguages );
    }
Esempio n. 6
0
 /**
  * Ensures that eZURLAliasML::fetchPathByActionList() always uses prioritized languages,
  * even if a locale is enforced (3rd param) and always available flag is false.
  *
  * @see http://issues.ez.no/19055
  * @group issue19055
  * @covers eZURLAliasML::fetchPathByActionList
  */
 public function testFetchPathByActionListWithFallback()
 {
     $frenchLocale = $this->frenchLanguage->attribute('locale');
     ezpINIHelper::setINISettings(array(array('site.ini', 'RegionalSettings', 'ContentObjectLocale', $frenchLocale), array('site.ini', 'RegionalSettings', 'Locale', $frenchLocale), array('site.ini', 'RegionalSettings', 'SiteLanguageList', array($frenchLocale, 'eng-GB')), array('site.ini', 'RegionalSettings', 'ShowUntranslatedObjects', 'disabled')));
     eZContentOperationCollection::updateAlwaysAvailable(1, false);
     /*
      * - Create a content object in Norsk
      * - Remove AlwaysAvailable flag
      * - Add a translation in english
      * - Try to fetch path for this content in French (fallback is eng-GB as configured above)
      */
     $folder = new ezpObject('folder', 2, 14, 1, $this->norskLanguage->attribute('locale'));
     $folder->name = 'norsk folder';
     $folder->publish();
     eZContentOperationCollection::updateAlwaysAvailable($folder->object->attribute('id'), false);
     $folder->refresh();
     $folder->addTranslation('eng-GB', array('name' => 'english translation'));
     $folder->publish();
     $generatedPath = eZURLAliasML::fetchPathByActionList('eznode', array($folder->mainNode->node_id), $frenchLocale);
     self::assertNotNull($generatedPath);
     self::assertEquals('english-translation', $generatedPath);
     eZContentOperationCollection::updateAlwaysAvailable(1, true);
     ezpINIHelper::restoreINISettings();
     $folder->remove();
 }
 /**
  * Test mainNode()
  *
  * create object like this structure:
  *
  * rootnode(folder) - objectNode1(folder) - obj(article, language: default and nor-NO)
  *                  \ objectNode2(folder) /
  */
 public function testIssue016395()
 {
     //create two nodes with one object
     $parentNode = new ezpObject('folder', 2);
     $parentNode->publish();
     $objectNode1 = new ezpObject('folder', $parentNode->mainNode->node_id);
     $objectNode1->publish();
     $objectNode2 = new ezpObject('folder', $parentNode->mainNode->node_id);
     $objectNode2->publish();
     $obj = new ezpObject('article', $objectNode1->mainNode->node_id);
     $obj->title = 'English article';
     $obj->body = 'This an English article';
     $obj->publish();
     $obj->addNode($objectNode2->mainNode->node_id);
     //create a translation
     $languageData = array();
     $languageData['title'] = 'Norsk artikkel';
     $languageData['body'] = 'Dette er en norsk artikkel.';
     $obj->addTranslation('nor-NO', $languageData);
     //assert the main language and translation language
     $objectMainNode = $obj->object->mainNode();
     $this->assertEquals('English article', $objectMainNode->getName());
     $this->assertEquals('Norsk artikkel', $objectMainNode->getName('nor-NO'));
     $tempLanguage = $objectMainNode->currentLanguage();
     $objectMainNode->setCurrentLanguage('nor-NO');
     $this->assertEquals('Norsk artikkel', $objectMainNode->attribute('name'));
     $objectMainNode->setCurrentLanguage($tempLanguage);
 }
 /**
  * Tests a problem which arose when a combined URL entry,
  * representing several translations are split up, by one translation being
  * changed to to an earlier history entry, of that same entry.
  *
  */
 function testURLAliasSplitParentTranslation()
 {
     $db = eZDB::instance();
     // STEP 1: Add test folder
     $folder = new ezpObject("folder", 2);
     $folder->name = __FUNCTION__;
     $folder->publish();
     // STEP 2: Add child below folder
     $child = new ezpObject("folder", $folder->mainNode->node_id);
     $child->name = "Child";
     $child->publish();
     // Sub-sub children disabled for now, might be used in future, for
     // further assertions.
     // // STEP 2a: Add a sub-sub child
     // $subChild1 = new ezpObject( 'article', $child->mainNode->node_id );
     // $subChild1->title = "SubChild";
     // $subChild1->publish();
     //
     // // STEP 2b: Add a sub-sub child
     // $subChild2 = new ezpObject( 'article', $child->mainNode->node_id );
     // $subChild2->title = "SubChildOther";
     // $subChild2->publish();
     //
     // // STEP 2ba: Adding sub-sub child translation
     // $norSubChild2Trans = array( "title" => "SubChildOtherNor" );
     // $subChild2->addTranslation( "nor-NO", $norSubChild2Trans );
     //
     // // STEP 2c: Add a sub-sub child
     // $subChild3 = new ezpObject( 'article', $child->mainNode->node_id );
     // $subChild3->title = "SubChildThird";
     // $subChild3->publish();
     //
     // // STEP 2ca: Addubg sub-sub child translation
     // $norSubChild3Trans = array( "title" => "SubChildThird" );
     // $subChild3->addTranslation( "nor-NO", $norSubChild3Trans );
     // STEP 3: Add translation to child with the same name
     $translationAttributes = array("name" => "Child");
     $child->addTranslation("nor-NO", $translationAttributes);
     // STEP 4: Update the translation
     $child->refresh();
     $newVersion = $child->createNewVersion(false, true, 'nor-NO');
     $norDataMap = $child->fetchDataMap($newVersion->attribute('version'), "nor-NO");
     $norDataMap['name']->setAttribute('data_text', 'NorChildChanged');
     $norDataMap['name']->store();
     ezpObject::publishContentObject($child->object, $newVersion);
     // STEP 5:
     $child->refresh();
     $child->name = "Renamed child";
     $child->publish();
     // STEP 6:
     $child->refresh();
     $child->name = "Child changed";
     $child->publish();
     // STEP 7:
     $child->refresh();
     $newVersion = $child->createNewVersion(false, true, 'nor-NO');
     $norDataMap = $child->fetchDataMap($newVersion->attribute('version'), "nor-NO");
     $norDataMap['name']->setAttribute('data_text', 'NorChildChanged again');
     $norDataMap['name']->store();
     ezpObject::publishContentObject($child->object, $newVersion);
     // STEP 8:
     $child->refresh();
     $newVersion = $child->createNewVersion(false, true, 'nor-NO');
     $norDataMap = $child->fetchDataMap($newVersion->attribute('version'), "nor-NO");
     $norDataMap['name']->setAttribute('data_text', 'Child changed');
     $norDataMap['name']->store();
     ezpObject::publishContentObject($child->object, $newVersion);
     // STEP 9:
     $child->refresh();
     $newVersion = $child->createNewVersion(false, true, 'nor-NO');
     $norDataMap = $child->fetchDataMap($newVersion->attribute('version'), "nor-NO");
     $norDataMap['name']->setAttribute('data_text', 'NorChildChanged again');
     $norDataMap['name']->store();
     ezpObject::publishContentObject($child->object, $newVersion);
     $query = self::buildSql(array($child->mainNode->node_id));
     $result = $db->arrayQuery($query);
     $initialTranslationChild = self::urlEntryForName("Child-changed", $result);
     $translationChild = self::urlEntryForName('NorChildChanged-again', $result);
     self::assertEquals((int) $initialTranslationChild['id'], (int) $translationChild['id'], "Current translations of the same node need to have the same id.");
 }
 /**
  * Regression test for issue {@see #23753 http://issues.ez.no/23753}
  *
  * In a multi language environment, an untranslated node fetched with default language will return the
  * full URL alias in the language of the node.
  */
 public function testIssue23753()
 {
     $bkpLanguages = eZContentLanguage::prioritizedLanguageCodes();
     $strNameEngGB = __FUNCTION__ . " eng-GB";
     $strNameFreFR = __FUNCTION__ . " fre-FR";
     // add a secondary language
     $locale = eZLocale::instance('fre-FR');
     $translation = eZContentLanguage::addLanguage($locale->localeCode(), $locale->internationalLanguageName());
     // set the prioritize language list to contain english
     eZContentLanguage::setPrioritizedLanguages(array('fre-FR', 'eng-GB'));
     // Create an object with data in fre-FR and eng-GB
     $folder = new ezpObject('folder', 2, 14, 1, 'eng-GB');
     $folder->publish();
     // Workaround as setting folder->name directly doesn't produce the expected result
     $folder->addTranslation('eng-GB', array('name' => $strNameEngGB));
     $folder->addTranslation('fre-FR', array('name' => $strNameFreFR));
     $article = new ezpObject('article', $folder->main_node_id, 14, 1, 'eng-GB');
     $article->publish();
     // Workaround as setting article->name directly doesn't produce the expected result
     $article->addTranslation('eng-GB', array('title' => $strNameEngGB));
     $nodeId = $article->main_node_id;
     // fetch the node with no default parameters. Should return the french URL Alias when applicable
     $node = eZContentObjectTreeNode::fetch($nodeId);
     self::assertEquals('testIssue23753-fre-FR/testIssue23753-eng-GB', $node->attribute('url_alias'));
     // fetch the node in english. Should return the full english URL Alias
     $node = eZContentObjectTreeNode::fetch($nodeId, 'eng-GB');
     self::assertEquals('testIssue23753-eng-GB/testIssue23753-eng-GB', $node->attribute('url_alias'));
     // Test that PathPrefix is correctly removed from UrlAlias
     ezpINIHelper::setINISetting('site.ini', 'SiteAccessSettings', 'PathPrefix', 'testIssue23753-fre-FR');
     $node = eZContentObjectTreeNode::fetch($nodeId);
     self::assertEquals('testIssue23753-eng-GB', $node->attribute('url_alias'));
     $folder->remove();
     $translation->removeThis();
     ezpINIHelper::restoreINISettings();
     eZContentLanguage::setPrioritizedLanguages($bkpLanguages);
 }