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; }
public function getCreateDeck($user_id = false, $deck_id = false, $start, $end, $keywords = '') { if ($user_id != false || $deck_id != false) { $this->initConnection(); $activities = array(); $result = array(); if ($user_id) { $user = new User(); $user->id = $user_id; $user->getUsername(); if (strlen($keywords)) { $result = $this->dbQuery('SELECT * FROM deck_revision WHERE user_id=:user_id AND MATCH (deck_revision.title) AGAINST (\'' . $keywords . '*\' IN BOOLEAN MODE)', array('user_id' => $user_id)); } else { $result = $this->dbQuery('SELECT * FROM deck_revision WHERE user_id=:user_id AND timestamp >= "' . $start . '" AND timestamp < "' . $end . '"', array('user_id' => $user_id)); } if (count($result)) { foreach ($result as $row) { $deck = new Deck(); $deck->id = $row['id']; $deck->deck_id = $row['deck_id']; $deck->title = $deck->getTitle(); $deck->language = $deck->getLanguage(); if ($deck->title == "") { $deck->title = "Untitled"; } $deck->slug_title = $deck->sluggify($deck->title); if (!$row['translated_from_revision']) { if ($row['based_on']) { $based_on = new Deck(); $based_on->id = $row['based_on']; $based_on->title = $based_on->getTitle(); if ($based_on->title == "") { $based_on->title = "Untitled"; } $based_on->slug_title = $based_on->sluggify($based_on->title); $activity = new Activity($row['timestamp'], $user, 'created_deck_revision', $deck, $based_on); } else { $activity = new Activity($row['timestamp'], $user, 'created_deck', $deck); } } else { $based_on = new Deck(); $based_on->id = $row['translated_from_revision']; $based_on->title = $based_on->getTitle(); if ($based_on->title == "") { $based_on->title = "Untitled"; } $based_on->slug_title = $based_on->sluggify($based_on->title); $activity = new Activity($row['timestamp'], $user, 'translated_deck', $deck, $based_on); } $activities[] = $activity; } } } else { $result = $this->dbQuery('SELECT * FROM deck_revision WHERE deck_id=:deck_id AND timestamp >= "' . $start . '" AND timestamp < "' . $end . '"', array('deck_id' => $deck_id)); if (count($result)) { foreach ($result as $row) { $deck = new Deck(); $deck->deck_id = $deck_id; $deck->id = $row['id']; $deck->title = $deck->getTitle(); $deck->language = $deck->getLanguage(); if ($deck->title == "") { $deck->title = "Untitled"; } $deck->slug_title = $deck->sluggify($deck->title); $user = new User(); $user->id = $row['user_id']; $user->getUsername(); if ($row['translated_from_revision']) { $based_on = new Deck(); $based_on->id = $row['translated_from_revision']; $based_on->deck_id = $based_on->getBasicID(); $based_on->language = $based_on->getLanguage(); $based_on->title = $based_on->getTitle(); $based_on->slug_title = $based_on->sluggify($based_on->title); $activity = new Activity($row['timestamp'], $user, 'translated_deck_from', $deck, $based_on); } else { if (!$row['based_on']) { $activity = new Activity($row['timestamp'], $user, 'created_deck', $deck); } else { $based_on = new Deck(); $based_on->id = $row['based_on']; $based_on->deck_id = $based_on->getBasicID(); $based_on->language = $based_on->getLanguage(); $based_on->title = $based_on->getTitle(); $based_on->slug_title = $based_on->sluggify($based_on->title); $activity = new Activity($row['timestamp'], $user, 'created_deck_revision', $deck, $based_on); } } $activities[] = $activity; } } } if (count($activities)) { foreach ($activities as $activity) { $this->activities[] = $activity; } } } }