示例#1
0
 function deck()
 {
     $deck_id = $_GET['id'];
     $deck = new Deck();
     $deck->createFromIDLite($deck_id);
     $deck->last_revision_id = $deck->getLastRevisionID();
     $usage = $deck->getUsage();
     $deck->comments = $deck->getComments();
     $translations = $deck->getTranslatedTo();
     $this->set('deck', $deck);
     $this->set('translations', $translations);
     $this->set('usage', $usage);
     $this->set('page_title', $deck->title . ' - SlideWiki');
     $this->set('page_keywords', join(',', $deck->getTags($deck->id)));
 }
示例#2
0
 function __construct()
 {
     $this->initConnection();
     $decks = $this->dbquery('SELECT * FROM deck WHERE language IS NULL OR language="" OR language="-"');
     echo 'decks:' . count($decks);
     foreach ($decks as $task) {
         $deck = new Deck();
         $deck->deck_id = $task['id'];
         $deck->createFromID($deck->getLastRevisionID());
         $language = $deck->detectLanguage();
         $deck->setLanguageFull($language);
     }
     $slides = $this->dbquery('SELECT * FROM slide WHERE language IS NULL OR language="" OR language="-"');
     echo 'slides:' . count($slides);
     $decks = array();
     foreach ($slides as $task) {
         $slide = new Slide();
         $slide->slide_id = $task['id'];
         $id = $slide->getLastRevisionID();
         $decks_array = $this->dbGetOne('SELECT deck_revision_id FROM deck_content WHERE item_id =:id AND item_type="slide" LIMIT 1', array('id' => $id));
         if ($decks_array) {
             if (!in_array($decks_array, $decks)) {
                 $decks[] = $decks_array;
             }
         }
     }
     echo 'decks:' . count($decks) . '<br>';
     foreach ($decks as $task) {
         echo $task;
         $deck = new Deck();
         $deck->createFromID($task);
         $language = $deck->detectLanguage();
         $deck->setLanguageFull($language);
         echo ' done ';
     }
 }
示例#3
0
文件: User.php 项目: TBoonX/SlideWiki
 public function getSubscribedDecks($page)
 {
     $extent = $this->feed_page_size;
     $offset = $page * $extent;
     $res = array();
     foreach ($this->dbQuery('SELECT * FROM subscription WHERE item_type="deck" AND user_id=' . $this->id . ' LIMIT ' . $offset . ',' . $extent) as $row) {
         $deck = new Deck();
         $deck->deck_id = $row['item_id'];
         $last = $deck->getLastRevisionID();
         $deck->createFromID($last);
         $res[] = $deck;
     }
     return $res;
 }
示例#4
0
文件: Deck.php 项目: TBoonX/SlideWiki
 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;
 }
示例#5
0
 function item()
 {
     $item_id = $_GET['id'];
     $item_type = $_GET['type'];
     $item_user = @$_GET['user'];
     $redirect_link = "";
     $hash = "";
     switch ($item_type) {
         case 'slide':
             $slide = new Slide();
             $slide->createFromID($item_id);
             if (isset($item_user)) {
                 $last_revision = $slide->getLastRevisionID($item_user);
             } else {
                 $last_revision = $slide->last_revision_id;
             }
             $slide2 = new Slide();
             $slide2->createFromID($last_revision);
             $slide_usage = $slide2->getUsage();
             if (is_array($slide_usage) && count($slide_usage) == 1) {
                 $hash = 'tree-' . $slide_usage[0]->id . '-slide-' . $slide2->id . '-' . $slide2->getPosition() . '-view';
                 $parent_deck = $slide2->getLastOuterParent($slide_usage[0]->id);
                 $deck = new Deck();
                 $deck->id = $parent_deck;
                 $deck->title = $deck->getTitle();
                 $deck->slug_title = $deck->sluggify($deck->title);
                 $redirect_link = BASE_PATH . 'deck/' . $parent_deck . '_' . $deck->slug_title . '#' . $hash;
             } else {
                 $redirect_link = BASE_PATH . 'slide/' . $last_revision;
             }
             break;
         case 'deck':
             $deck = new Deck();
             $deck->createFromID($item_id);
             if (isset($item_user)) {
                 $last_revision = $deck->getLastRevisionID($item_user);
             } else {
                 $last_revision = $deck->last_revision_id;
             }
             $deck_for_title = new Deck();
             $deck_for_title->id = $last_revision;
             $deck_for_title->title = $deck_for_title->getTitle();
             $deck_for_title->slug_title = $deck_for_title->sluggify($deck->title);
             $deck2 = new Deck();
             $deck2->createFromID($last_revision);
             $deck_usage = $deck2->getUsage();
             if (is_array($deck_usage) && count($deck_usage) == 1) {
                 $hash = 'tree-' . $deck_usage[0]->id . '-deck-' . $deck2->id . '-' . $deck2->getPosition() . '-view';
                 $parent_deck = $deck2->getLastOuterParent($deck_usage[0]->id);
                 $deck_for_title = new Deck();
                 $deck_for_title->id = $parent_deck;
                 $deck_for_title->title = $deck->getTitle();
                 $deck_for_title->slug_title = $deck->sluggify($deck->title);
                 $redirect_link = BASE_PATH . 'deck/' . $parent_deck . '_' . $deck_for_title->slug_title . '#' . $hash;
             } else {
                 $redirect_link = BASE_PATH . 'deck/' . $last_revision . '_' . $deck_for_title->slug_title;
             }
             break;
     }
     header('Location: ' . $redirect_link);
 }
示例#6
0
 public function getTranslateDeck($user_id = false, $deck_id = false, $start, $end, $keywords = '')
 {
     if ($user_id != false || $deck_id != false) {
         $this->initConnection();
         $activities = array();
         $result = array();
         if ($deck_id) {
             $deck = new Deck();
             $deck->deck_id = $deck_id;
             $deck->id = $deck->getLastRevisionID();
             $deck->title = $deck->getTitle();
             $deck->language = $deck->getLanguage();
             if ($deck->title == "") {
                 $deck->title = "Untitled";
             }
             $deck->slug_title = $deck->sluggify($deck->title);
             $result = $this->dbQuery('SELECT * FROM deck WHERE translated_from=:deck_id AND timestamp >= "' . $start . '" AND timestamp < "' . $end . '"', array('deck_id' => $deck_id));
             if (count($result)) {
                 foreach ($result as $row) {
                     $user = new User();
                     $user->id = $row['user_id'];
                     $user->getUsername();
                     $translation = new Deck();
                     $translation->deck_id = $row['id'];
                     $translation->id = $translation->getLastRevisionID();
                     $translation->title = $translation->getTitle();
                     if ($translation->title == '') {
                         $translation->title = 'Untitled';
                     }
                     $translation->slug_title = $translation->sluggify($translation->title);
                     $translation->language = $translation->getLanguage();
                     $activity = new Activity($row['timestamp'], $user, 'translated_deck', $translation, $deck);
                     $activities[] = $activity;
                 }
             }
         }
         if (count($activities)) {
             foreach ($activities as $activity) {
                 $this->activities[] = $activity;
             }
         }
     }
 }
示例#7
0
 public function buildWithQuestions($keywords, $order)
 {
     $all_decks = array();
     $all_decks = $this->searchMatchAll($keywords, $order);
     $result = array();
     foreach ($all_decks as $deck) {
         $deck_obj = new Deck();
         $deck_obj->id = $deck['id'];
         $deck_obj->deck_id = $deck['deck_id'];
         $id = $deck_obj->getLastRevisionID();
         $test = new Test();
         $test->createFromItem($id);
         if ($test->quest_count > 0) {
             $test->id = $id;
             $result[] = $test;
         }
     }
     return $result;
 }