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 '; } }
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; } }
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; }
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); }
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; } } } }