Esempio n. 1
0
 public function getAllTranslations($slide_rev_id = 0)
 {
     $this->initConnection();
     $result = array();
     $complete_result = array();
     $language_ids = array();
     $node = array();
     $slide_translations = array();
     $node['id'] = $this->deck_id;
     $node['language'] = $this->getLanguage();
     $node['last'] = $this->id;
     $node['slug_title'] = $this->slug_title;
     $result = $this->getTranslatedTo(true);
     foreach ($result as $lang) {
         $language_ids[] = $lang['language']['id'];
     }
     if (!in_array($node['language']['id'], $language_ids)) {
         $language_ids[] = $node['language']['id'];
         $result[] = $node;
     }
     $visited = array();
     foreach ($result as $node) {
         $visited[] = $node['id'];
     }
     $parent = $this->translated_from;
     while ($parent) {
         $parent_deck = new Deck();
         $parent_deck->id = $this->getTranslatedFromRevision();
         $parent_deck->deck_id = $parent;
         $parent_deck->language = $parent_deck->getLanguage();
         $parent_deck->translated_from = $parent_deck->getTranslatedFrom();
         $parent_deck->title = $parent_deck->getTitle();
         $parent_deck->slug_title = $parent_deck->sluggify($parent_deck->title);
         if (!in_array($parent_deck->language['id'], $language_ids)) {
             $parent_arr = array();
             $parent_arr['id'] = $parent;
             $parent_arr['language'] = $parent_deck->language;
             $parent_arr['first'] = $parent_deck->id;
             $parent_arr['last'] = $parent_deck->getLastRevisionID();
             $parent_arr['slug_title'] = $parent_deck->slug_title;
             $result[] = $parent_arr;
             $language_ids[] = $parent_arr['language']['id'];
         }
         foreach ($parent_deck->getTranslatedTo(true) as $node) {
             if (!in_array($node['id'], $visited) && !in_array($node['language']['id'], $language_ids)) {
                 $visited[] = $node['id'];
                 $result[] = $node;
                 $language_ids[] = $node['language']['id'];
             }
         }
         $parent = $parent_deck->translated_from;
     }
     if ($slide_rev_id) {
         $slide = new Slide();
         $slide->createFromID($slide_rev_id);
         $slide_translations = $slide->getAllTranslations();
         foreach ($result as $node) {
             $language = $node['language']['id'];
             $deck = new Deck();
             $deck->createFromID($node['last']);
             foreach ($slide_translations as $slide) {
                 if ($slide['language']['id'] == $language) {
                     $slide_all_revisions = new Slide();
                     $slide_all_revisions->slide_id = $slide['id'];
                     $all_revisions = array();
                     $all_revisions = $slide_all_revisions->getThisSlideRevisions();
                     foreach ($all_revisions as $slide_rev) {
                         if ($deck->isSlideIn($slide_rev['id'])) {
                             $node['slide'] = $deck->getSlidePropertiesById($slide_rev['id']);
                             $node['slideLink'] = $node['slide']['link'];
                         }
                     }
                     $complete_result[] = $node;
                 }
             }
         }
     } else {
         foreach ($result as $node) {
             $deck = new Deck();
             $node['slide'] = $deck->getSlidePropertiesById(0);
             $complete_result[] = $node;
         }
     }
     return $complete_result;
 }