Esempio n. 1
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 ';
     }
 }
Esempio n. 2
0
 public function translate($language)
 {
     $source_arr = $this->getLanguage();
     if (is_array($source_arr) && isset($source_arr['id'])) {
         $source = $source_arr['id'];
     }
     $target_arr = explode('-', $language);
     $target = $target_arr[0];
     $translations = array();
     $translations = $this->getAllTranslations();
     $translator = new LanguageTranslator('AIzaSyBlwXdmxJZ__ZNScwe4zq5r3qh3ebXb26k');
     if (count($translations)) {
         foreach ($translations as $node) {
             if ($node['language']['id'] == $target) {
                 $slide = new Slide();
                 $slide->slide_id = $node['id'];
                 $slide->createFromIDLite($slide->getLastRevisionID());
                 return $slide->id;
             }
         }
     }
     $old_slide_id = $this->slide_id;
     //for questions
     $this->symbolsToLatex();
     $replace_array = array();
     $replace_array = $this->filterTags();
     $q = $this->content;
     $content = '';
     $translation = $translator->translate($q, $target, $source);
     if ($translation != -1) {
         $tags_back = $this->addTagsBack($translation, $replace_array);
         $content = '<div lang="' . $target . '-x-mtfrom-' . $source . '">' . $tags_back . '</div>';
         $this->language = $language;
         $this->translated_from = $this->slide_id;
         $translated_from_revision = $this->id;
         $this->content = $content;
         $this->description = $this->getDescription();
         $this->latexToSymbols();
         $based_on = NULL;
         $this->slide_id = $this->dbInsert('slide', array('user_id' => $this->user->id, 'description' => $this->description, 'language' => $this->language, 'translated_from' => $this->translated_from, 'translated_from_revision' => $translated_from_revision));
         $new_slide_id = $this->slide_id;
         //for questions
         $this->translateQuestions($old_slide_id, $new_slide_id, $source_arr, $language);
         $this->based_on = NULL;
         $this->id = $this->dbInsert('slide_revision', array('slide' => $this->slide_id, 'content' => $this->content, 'user_id' => $this->user->id, 'comment' => $this->comment, 'based_on' => $based_on, 'note' => $this->note, 'translation_status' => 'google', 'translated_from_revision' => $translated_from_revision));
         return $this->id;
     } else {
         return -1;
     }
 }
Esempio n. 3
0
 public function getFollowedSlides()
 {
     $this->initConnection();
     $res = array();
     $res_array = $this->dbQuery('SELECT * FROM subscription WHERE item_type="slide" AND user_id=:id', array('id' => $this->id));
     foreach ($res_array as $row) {
         $slide = new Slide();
         $slide->slide_id = $row['item_id'];
         $slide->createFromIDLite($slide->getLastRevisionID());
         $title = $slide->getTitle();
         $slide->title = $slide->shortenTitle($title);
         $res[] = $slide;
     }
     return $res;
 }
Esempio n. 4
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);
 }
Esempio n. 5
0
 public function getCreateQuestionRevision($user_id = false, $start, $end, $keywords = '')
 {
     if ($user_id) {
         $user = new User();
         $user->id = $user_id;
         $user->getUsername();
         $this->initConnection();
         $activities = array();
         $result = array();
         if (strlen($keywords)) {
             $result = $this->dbQuery('SELECT * FROM questions WHERE user_id=:user_id AND based_on IS NOT NULL AND MATCH (question) AGAINST (\'' . $keywords . '*\' IN BOOLEAN MODE)', array('user_id' => $user_id));
         } else {
             $result = $this->dbQuery('SELECT * FROM questions WHERE user_id=:user_id AND based_on IS NOT NULL AND timestamp >= "' . $start . '" AND timestamp < "' . $end . '"', array('user_id' => $user_id));
         }
         if (count($result)) {
             foreach ($result as $row) {
                 $question = new Question();
                 $question->question = $row['question'];
                 $text = new Slide();
                 $text->slide_id = $row['item_id'];
                 $text->createFromIDLite($text->getLastRevisionID());
                 $text->title = $text->getTitle();
                 if ($text->title == "") {
                     $text->title = "Untitled";
                 }
                 $activity = new Activity($row['timestamp'], $user, 'created_question', $question, $text);
                 $activities[] = $activity;
             }
         }
         if (count($activities)) {
             foreach ($activities as $activity) {
                 $this->activities[] = $activity;
             }
         }
     }
 }