/** 
  * Create new Thread and should be with Comment/s
  * $username is not same with session username
  */
 public function create()
 {
     $thread = new Thread();
     $comment = new Comment();
     $page = Param::get('page_next', 'create');
     switch ($page) {
         case 'create':
             break;
         case 'create_end':
             try {
                 $thread->id = Param::get('thread_id');
                 $thread->user_id = User::getId($_SESSION['username']);
                 $thread->title = Param::get('title');
                 $comment->username = Param::get('username');
                 $comment->body = Param::get('body');
                 $thread->create($comment);
             } catch (ValidationException $e) {
                 $page = 'create';
             }
             break;
         default:
             throw new PageNotFoundException("{$page} is not found");
             break;
     }
     $this->set(get_defined_vars());
     $this->render($page);
 }
Example #2
0
 public function post_create()
 {
     $posts = Input::all();
     $title = $posts['thread_name'];
     $contentRaw = $posts['inputarea'];
     if ($title != '' && strlen($contentRaw) > 10) {
         $alias = Str::slug($title, '-');
         $exist = Thread::where('alias', '=', $alias)->first();
         if ($exist != null) {
             return Redirect::to($exist->id);
         }
         $threadData = array('title' => $posts['thread_name'], 'alias' => $alias, 'type' => 0, 'poster_ip' => Request::ip(), 'dateline' => date("Y-m-d H:i:s"), 'last_message_at' => date("Y-m-d H:i:s"));
         $thread = Thread::create($threadData);
         if ($thread != null) {
             $content = static::replace_at(BBCode2Html(strip_tags_attributes($contentRaw)), $thread->id);
             $postData = array('thread_id' => $thread->id, 'entry' => $content, 'userip' => Request::ip(), 'user_id' => Sentry::user()->id, 'datetime' => date("Y-m-d H:i:s"), 'count' => 1, 'type' => 0);
             $pst = Post::create($postData);
             if ($pst != null) {
                 return Redirect::to($thread->id);
             }
         }
     } else {
         return Redirect::to(URL::full());
     }
 }
 public function create()
 {
     $thread = new Thread();
     $comment = new Comment();
     $page = Param::get('page_next', 'create');
     $user_id = get_authenticated_user_id($_SESSION['userid']);
     switch ($page) {
         case self::CREATE_PAGE:
             break;
         case self::PAGE_AFTER_CREATE:
             $thread->title = Param::get('title');
             $thread->user_id = $user_id;
             $thread->category = Param::get('category');
             $comment->user_id = $user_id;
             $comment->body = Param::get('body');
             try {
                 $thread->create($comment);
             } catch (ValidationException $e) {
                 $page = self::CREATE_PAGE;
             }
             break;
         default:
             throw new RecordNotFoundException("{$page} is not found");
     }
     if ($page === self::PAGE_AFTER_CREATE) {
         redirect(VIEW_COMMENT_PAGE, array('thread_id' => $comment->id));
     }
     $this->set(get_defined_vars());
     $this->render($page);
 }
Example #4
0
 public function create()
 {
     redirect_guest_user(LOGIN_URL);
     $thread = new Thread();
     $comment = new Comment();
     $page = Param::get('page_next', 'create');
     $auth_user = User::getAuthenticated();
     $categories = Category::getAll();
     switch ($page) {
         case 'create':
             break;
         case 'create_end':
             $thread->title = trim_collapse(Param::get('title'));
             $thread->category_id = Param::get('category');
             $thread->user_id = $auth_user->id;
             $comment->user_id = $auth_user->id;
             $comment->body = trim(Param::get('body'));
             $db = DB::conn();
             try {
                 $db->begin();
                 $thread->create($comment);
                 $follow = new Follow();
                 $follow->thread_id = $thread->id;
                 $follow->user_id = $auth_user->id;
                 $follow->last_comment = Comment::getFirstInThread($thread)->id;
                 $follow->create();
                 $db->commit();
                 redirect(VIEW_THREAD_URL, array('id' => $thread->id));
             } catch (ValidationException $e) {
                 $page = 'create';
                 $db->rollback();
             } catch (CategoryException $e) {
                 $thread->validation_errors['category']['exists'] = true;
                 $page = 'create';
                 $db->rollback();
             }
             break;
         default:
             throw new PageNotFoundException("{$page} is not found");
             break;
     }
     $title = 'Create Thread';
     $this->set(get_defined_vars());
     $this->render($page);
 }
Example #5
0
 public static function createRSS()
 {
     // begin
     if ($_SESSION[KEY_SESSION][Account::KEY_USERNAME] == "guest") {
         Utils::showNoPermissionPage();
         die;
     }
     // end
     $error_message = "";
     $title = "";
     $url = "";
     if (!empty($_POST)) {
         $title = $_POST["title"];
         $url = $_POST["url"];
         if (empty($title)) {
             $error_message .= "<li>タイトルを空白にしないでください。</li>";
         }
         if (empty($url)) {
             $error_message .= "<li>URLを空白にしないでください。</li>";
         } else {
             if (!preg_match("/^https?:\\/\\//", $url)) {
                 $error_message .= "<li>URLは正しくありません。</li>";
             }
         }
         // if not error, there should be no error_message
         if (strlen($error_message) == 0) {
             $json = json_encode(array("title" => $title, "url" => $url, "version" => 1));
             $host_id = $_SESSION[KEY_SESSION][Account::KEY_ID];
             $update_time = Utils::getCurrentTime();
             $update_date = Utils::getCurrentDate();
             $latest_update = time();
             $content = "<script>{$json}</script>";
             $permission = $_POST["permission"];
             $last_created_id = Thread::create($host_id, $title, $update_time, $update_date, $latest_update, $content, "rss", $permission);
             header("Location: /thread/" . $last_created_id);
             die;
         }
     }
     $content = "create-rss.php";
     Utils::output_view(["private-nav.php", "thread/thread.php"], ["content" => $content]);
 }
Example #6
0
 static function newPostMetadataUpdates($data)
 {
     $requiredFields = array('talkpage', 'root', 'text', 'subject');
     foreach ($requiredFields as $f) {
         if (!isset($data[$f])) {
             throw new Exception("Missing required field {$f}");
         }
     }
     if (isset($data['signature'])) {
         $signature = $data['signature'];
     } else {
         global $wgUser;
         $signature = LqtView::getUserSignature($wgUser);
     }
     $summary = isset($data['summary']) ? $data['summary'] : '';
     $talkpage = $data['talkpage'];
     $root = $data['root'];
     $subject = $data['subject'];
     $thread = Thread::create($root, $talkpage, null, Threads::TYPE_NORMAL, $subject, $summary, null, $signature);
     Hooks::run('LiquidThreadsAfterNewPostMetadataUpdates', array(&$thread));
     return $thread;
 }
Example #7
0
 function leaveTrace($reason, $oldTitle, $newTitle)
 {
     $this->dieIfHistorical();
     // Create redirect text
     $mwRedir = MagicWord::get('redirect');
     $redirectText = $mwRedir->getSynonym(0) . ' [[' . $this->title()->getPrefixedText() . "]]\n";
     // Make the article edit.
     $traceTitle = Threads::newThreadTitle($this->subject(), new Article($oldTitle));
     $redirectArticle = new Article($traceTitle);
     $redirectArticle->doEdit($redirectText, $reason, EDIT_NEW | EDIT_SUPPRESS_RC);
     // Add the trace thread to the tracking table.
     $thread = Thread::create($redirectArticle, new Article($oldTitle), null, Threads::TYPE_MOVED, $this->subject());
     $thread->setSortkey($this->sortkey());
     $thread->save();
 }
Example #8
0
 /**
  * Processes discussion threading data in XML dumps (extracted in handlePageXMLTag).
  *
  * @param $title Title
  * @param $origTitle Title
  * @param $revCount
  * @param $sRevCount
  * @param $pageInfo
  * @return bool
  */
 public static function afterImportPage($title, $origTitle, $revCount, $sRevCount, $pageInfo)
 {
     // in-process cache of pending thread relationships
     static $pendingRelationships = null;
     if ($pendingRelationships === null) {
         $pendingRelationships = self::loadPendingRelationships();
     }
     $titlePendingRelationships = array();
     if (isset($pendingRelationships[$title->getPrefixedText()])) {
         $titlePendingRelationships = $pendingRelationships[$title->getPrefixedText()];
         foreach ($titlePendingRelationships as $k => $v) {
             if ($v['type'] == 'article') {
                 self::applyPendingArticleRelationship($v, $title);
                 unset($titlePendingRelationships[$k]);
             }
         }
     }
     if (!isset($pageInfo['DiscussionThreading'])) {
         return true;
     }
     $statusValues = array_flip(self::$editedStati);
     $typeValues = array_flip(self::$threadTypes);
     $info = $pageInfo['DiscussionThreading'];
     $root = new Article($title, 0);
     $article = new Article(Title::newFromText($info['ThreadPage']), 0);
     $type = $typeValues[$info['ThreadType']];
     $subject = $info['ThreadSubject'];
     $summary = wfMessage('lqt-imported')->inContentLanguage()->text();
     $signature = null;
     if (isset($info['ThreadSignature'])) {
         $signature = $info['ThreadSignature'];
     }
     $thread = Thread::create($root, $article, null, $type, $subject, $summary, null, $signature);
     if (isset($info['ThreadSummaryPage'])) {
         $summaryPageName = $info['ThreadSummaryPage'];
         $summaryPage = new Article(Title::newFromText($summaryPageName), 0);
         if ($summaryPage->exists()) {
             $thread->setSummaryPage($summaryPage);
         } else {
             self::addPendingRelationship($thread->id(), 'thread_summary_page', $summaryPageName, 'article', $pendingRelationships);
         }
     }
     if (isset($info['ThreadParent'])) {
         $threadPageName = $info['ThreadParent'];
         $parentArticle = new Article(Title::newFromText($threadPageName), 0);
         $superthread = Threads::withRoot($parentArticle);
         if ($superthread) {
             $thread->setSuperthread($superthread);
         } else {
             self::addPendingRelationship($thread->id(), 'thread_parent', $threadPageName, 'thread', $pendingRelationships);
         }
     }
     $thread->save();
     foreach ($titlePendingRelationships as $k => $v) {
         if ($v['type'] == 'thread') {
             self::applyPendingThreadRelationship($v, $thread);
             unset($titlePendingRelationships[$k]);
         }
     }
     return true;
 }
Example #9
0
 function __construct($commands)
 {
     $this->commands = $commands;
     foreach ($this->commands as $key => $command) {
         $this->thread[$key] = Thread::create($command);
     }
 }