Exemple #1
0
 /**
  * @param $parentId
  * @param $languageToAdd
  */
 protected function addDocuments($parentId, $languageToAdd)
 {
     $list = new Listing();
     $list->setCondition('parentId = ?', $parentId);
     $list = $list->load();
     foreach ($list as $document) {
         // Create new document
         $targetParent = \Pimcore\Model\Document::getById(\Multilingual\Document::getDocumentIdInOtherLanguage($document->getParentId(), $languageToAdd));
         /** @var Document_Page $target */
         $target = clone $document;
         $target->id = null;
         $target->setParent($targetParent);
         // Only sync properties when it is allowed
         if (!$target->hasProperty('doNotSyncProperties') && !$document->hasProperty('doNotSyncProperties')) {
             $editableDocumentTypes = array('page', 'email', 'snippet');
             if (in_array($document->getType(), $editableDocumentTypes)) {
                 $target->setContentMasterDocument($document);
             }
             // Set the properties the same
             $sourceProperties = $document->getProperties();
             /** @var string $key
              * @var Property $value
              */
             foreach ($sourceProperties as $key => $value) {
                 if (!$target->hasProperty($key)) {
                     $propertyValue = $value->getData();
                     if ($value->getType() == 'document') {
                         $propertyValue = \Multilingual\Document::getDocumentIdInOtherLanguage($value->getData()->getId(), $languageToAdd);
                     }
                     $target->setProperty($key, $value->getType(), $propertyValue, false, $value->getInheritable());
                 }
             }
         }
         $target->save();
         // Add Link to other languages
         $t = new Keys();
         $t->insert(array("document_id" => $target->getId(), "language" => $languageToAdd, "sourcePath" => $document->getFullPath()));
         // Check for children
         if (count($document->getChilds()) >= 1) {
             // Add the kids
             $this->addDocuments($document->getId(), $languageToAdd);
         }
     }
 }
Exemple #2
0
 /**
  * @param $e \Zend_EventManager_Event
  * @throws Exception
  * @throws \Zend_Exception
  */
 public function createDocument($e)
 {
     // Check if this function is not in progress
     if (\Zend_Registry::isRegistered('Multilingual_add') && \Zend_Registry::get('Multilingual_add') == 1) {
         return;
     }
     // Lock this event-trigger
     \Zend_Registry::set('Multilingual_add', 1);
     /**@var Document $doc */
     $doc = $e->getTarget();
     // Get current language
     $sourceLanguage = $doc->getProperty('language');
     $sourceParent = $doc->getParent();
     $sourceHash = $doc->getFullPath();
     // Add Link to other languages
     $t = new Keys();
     $t->insert(array("document_id" => $doc->getId(), "language" => $sourceLanguage, "sourcePath" => $sourceHash));
     // Create folders for each Language
     $languages = Tool::getValidLanguages();
     foreach ($languages as $language) {
         if ($language != $sourceLanguage) {
             $targetParent = \Multilingual\Document::getDocumentInOtherLanguage($sourceParent, $language);
             if ($targetParent) {
                 /** @var Document\Page $target */
                 $target = clone $doc;
                 // Reset ID (so it will create a new document)
                 $target->id = null;
                 // Set new parent
                 $target->setParent($targetParent);
                 // Check if we can link a master document
                 $editableDocumentTypes = array('page', 'email', 'snippet');
                 if (in_array($doc->getType(), $editableDocumentTypes)) {
                     $target->setContentMasterDocument($doc);
                 }
                 // Save the new document
                 $target->save();
                 // Add Link to other languages
                 $t = new Keys();
                 $t->insert(array("document_id" => $target->getId(), "language" => $language, "sourcePath" => $sourceHash));
             }
         }
     }
     // Unlock this event-trigger
     \Zend_Registry::set('Multilingual_add', 0);
 }