public function questions_list_action() { if ($_GET['feature_id']) { $topic_ids = $this->model('feature')->get_topics_by_feature_id($_GET['feature_id']); if ($topic_ids) { $answers = $this->model('reader')->fetch_answers_list_by_topic_ids($topic_ids, $_GET['page'], 20); } } else { $answers = $this->model('reader')->fetch_answers_list($_GET['page'], 20); } $output = array(); if ($answers) { foreach ($answers as $key => $val) { $question_ids[$val['question_id']] = $val['question_id']; $uids[$val['uid']] = $val['uid']; } $questions_info = $this->model('question')->get_question_info_by_ids($question_ids); $question_topics = $this->model('topic')->get_topics_by_item_ids($question_ids, 'question'); $users_info = $this->model('account')->get_user_info_by_uids($uids, TRUE); foreach ($answers as $key => $val) { $output['answers'][$val['answer_id']] = array('answer_id' => $val['answer_id'], 'question_id' => $val['question_id'], 'avatar' => get_avatar_url($val['uid'], 'mid'), 'user_name' => $users_info[$val['uid']]['user_name'], 'signature' => $users_info[$val['uid']]['signature'], 'agree_count' => $val['agree_count'], 'agree_users' => $this->model('answer')->get_vote_user_by_answer_id($val['answer_id']), 'answer_content' => FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($val['answer_content']))), 'add_time' => date_friendly($val['add_time']), 'uid' => $val['uid']); } foreach ($questions_info as $key => $val) { $output['questions'][$val['question_id']] = array('question_id' => $val['question_id'], 'question_content' => $val['question_content'], 'question_detail' => FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($val['question_detail']))), 'answer_users' => $val['answer_users'], 'focus_count' => $val['focus_count'], 'view_count' => $val['view_count'], 'topics' => $question_topics[$val['question_id']]); } } echo json_encode($output); }
public function index_action() { if (is_digits($_GET['id'])) { if (!($topic_info = $this->model('topic')->get_topic_by_id($_GET['id']))) { $topic_info = $this->model('topic')->get_topic_by_title($_GET['id']); } } else { if (!($topic_info = $this->model('topic')->get_topic_by_title($_GET['id']))) { $topic_info = $this->model('topic')->get_topic_by_url_token($_GET['id']); } } if (!$topic_info) { H::redirect_msg(AWS_APP::lang()->_t('专题不存在'), '/'); } // if ($topic_info['merged_id'] AND $topic_info['merged_id'] != $topic_info['topic_id']) // { // if ($this->model('topic')->get_topic_by_id($topic_info['merged_id'])) // { // HTTP::redirect('/topic/' . $topic_info['merged_id'] . '?rf=' . $topic_info['topic_id']); // } // else // { // $this->model('topic')->remove_merge_topic($topic_info['topic_id'], $topic_info['merged_id']); // } // } // if (urldecode($topic_info['url_token']) != $_GET['id']) // { // HTTP::redirect('/topic/' . $topic_info['url_token'] . '?rf=' . $_GET['rf']); // } // if (is_digits($_GET['rf']) and $_GET['rf']) // { // if ($from_topic = $this->model('topic')->get_topic_by_id($_GET['rf'])) // { // $redirect_message[] = AWS_APP::lang()->_t('话题 (%s) 已与当前话题合并', $from_topic['topic_title']); // } // } if ($topic_info['seo_title']) { TPL::assign('page_title', $topic_info['seo_title']); } else { $this->crumb($topic_info['topic_title'], '/topic/' . $topic_info['url_token']); } if ($this->user_id) { $topic_info['has_focus'] = $this->model('topic')->has_focus_topic($this->user_id, $topic_info['topic_id']); } if ($topic_info['topic_description']) { TPL::set_meta('description', $topic_info['topic_title'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($topic_info['topic_description'])), 0, 128, 'UTF-8', '...')); } $topic_info['topic_description'] = nl2br(FORMAT::parse_bbcode($topic_info['topic_description'])); //是否首页精选 $topic_info['is_recommend_homepage'] = $this->model('recommend')->recommend_homepage_check('topic', $topic_info['topic_id']); TPL::assign('topic_info', $topic_info); // TPL::assign('best_answer_users', $this->model('topic')->get_best_answer_users_by_topic_id($topic_info['topic_id'], 5)); switch ($topic_info['model_type']) { default: // $related_topics_ids = array(); // if ($related_topics = $this->model('topic')->related_topics($topic_info['topic_id'])) // { // foreach ($related_topics AS $key => $val) // { // $related_topics_ids[$val['topic_id']] = $val['topic_id']; // } // } // if ($child_topic_ids = $this->model('topic')->get_child_topic_ids($topic_info['topic_id'])) // { // foreach ($child_topic_ids AS $key => $topic_id) // { // $related_topics_ids[$topic_id] = $topic_id; // } // } // TPL::assign('related_topics', $related_topics); // $log_list = ACTION_LOG::get_action_by_event_id($topic_info['topic_id'], 10, ACTION_LOG::CATEGORY_TOPIC, implode(',', array( // ACTION_LOG::ADD_TOPIC, // ACTION_LOG::MOD_TOPIC, // ACTION_LOG::MOD_TOPIC_DESCRI, // ACTION_LOG::MOD_TOPIC_PIC, // ACTION_LOG::DELETE_TOPIC, // ACTION_LOG::ADD_RELATED_TOPIC, // ACTION_LOG::DELETE_RELATED_TOPIC // )), -1); // $log_list = $this->model('topic')->analysis_log($log_list); // $contents_topic_id = $topic_info['topic_id']; // $contents_topic_title = $topic_info['topic_title']; // if ($merged_topics = $this->model('topic')->get_merged_topic_ids($topic_info['topic_id'])) // { // foreach ($merged_topics AS $key => $val) // { // $merged_topic_ids[] = $val['source_id']; // } // $contents_topic_id .= ',' . implode(',', $merged_topic_ids); // if ($merged_topics_info = $this->model('topic')->get_topics_by_ids($merged_topic_ids)) // { // foreach($merged_topics_info AS $key => $val) // { // $merged_topic_title[] = $val['topic_title']; // } // } // if ($merged_topic_title) // { // $contents_topic_title .= ',' . implode(',', $merged_topic_title); // } // } // // $contents_related_topic_ids = array_merge($related_topics_ids, explode(',', $contents_topic_id)); // // TPL::assign('contents_related_topic_ids', implode(',', $contents_related_topic_ids)); // // if ($posts_list = $this->model('posts')->get_posts_list(null, 1, get_setting('contents_per_page'), 'new', $contents_related_topic_ids)) // // { // // foreach ($posts_list AS $key => $val) // // { // // if ($val['answer_count']) // // { // // $posts_list[$key]['answer_users'] = $this->model('question')->get_answer_users_by_question_id($val['question_id'], 2, $val['published_uid']); // // } // // } // // } // // TPL::assign('posts_list', $posts_list); // // TPL::assign('all_list_bit', TPL::output('explore/ajax/list', false)); // // if ($posts_list = $this->model('posts')->get_posts_list(null, 1, get_setting('contents_per_page'), null, $contents_related_topic_ids, null, null, 30, true)) // // { // // foreach ($posts_list AS $key => $val) // // { // // if ($val['answer_count']) // // { // // $posts_list[$key]['answer_users'] = $this->model('question')->get_answer_users_by_question_id($val['question_id'], 2, $val['published_uid']); // // } // // } // // } // 问题列表 $question_list = $this->model('topic')->get_question_list_by_topic($topic_info['topic_id'], $_GET['page'], get_setting('contents_per_page')); if ($question_list) { foreach ($question_list as $key => $val) { $this->model('question')->load_list_question_info($question_list[$key], $val, $this->user_id); } } TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/topic/id-' . $topic_info['topic_id'] . '__page-', $_GET['page']), 'total_rows' => $this->model('topic')->get_question_list_total(), 'per_page' => get_setting('contents_per_page'), 'num_links' => 2))->create_links()); TPL::assign('question_list', $question_list); //边栏热门话题 if (TPL::is_output('block/sidebar_hot_topics.tpl.htm', 'question/square')) { TPL::assign('sidebar_hot_topics', $this->model('module')->sidebar_hot_topics($_GET['category'], 4)); } // TPL::assign('topic_recommend_list', $posts_list); // TPL::assign('posts_list', $posts_list); // TPL::assign('recommend_list_bit', TPL::output('explore/ajax/list', false)); // TPL::assign('list', $this->model('topic')->get_topic_best_answer_action_list($contents_topic_id, $this->user_id, get_setting('contents_per_page'))); // TPL::assign('best_questions_list_bit', TPL::output('home/ajax/index_actions', false)); // TPL::assign('posts_list', $this->model('posts')->get_posts_list('question', 1, get_setting('contents_per_page'), 'new', explode(',', $contents_topic_id))); // TPL::assign('all_questions_list_bit', TPL::output('explore/ajax/list', false)); // TPL::assign('posts_list', $this->model('posts')->get_posts_list('article', 1, get_setting('contents_per_page'), 'new', explode(',', $contents_topic_id))); // TPL::assign('articles_list_bit', TPL::output('explore/ajax/list', false)); // TPL::assign('contents_topic_id', $contents_topic_id); // TPL::assign('contents_topic_title', $contents_topic_title); // TPL::assign('log_list', $log_list); // TPL::assign('redirect_message', $redirect_message); if ($topic_info['parent_id']) { TPL::assign('parent_topic_info', $this->model('topic')->get_topic_by_id($topic_info['parent_id'])); } TPL::output('topic/index'); break; } }
function load_answers_action() { // 获取问题 if (!($question_info = $this->model('question')->get_question_info_by_id($_GET['question_id']))) { return; } $this->model('question')->calc_popular_value($question_info['question_id']); $this->model('question')->update_views($question_info['question_id']); if (!$_GET['sort'] or $_GET['sort'] != 'ASC') { $_GET['sort'] = 'DESC'; } else { $_GET['sort'] = 'ASC'; } if (is_digits($_GET['uid'])) { $answer_list_where[] = 'uid = ' . intval($_GET['uid']); $answer_count_where = 'uid = ' . intval($_GET['uid']); } else { if ($_GET['uid'] == 'focus' and $this->user_id) { if ($friends = $this->model('follow')->get_user_friends($this->user_id, false)) { foreach ($friends as $key => $val) { $follow_uids[] = $val['uid']; } } else { $follow_uids[] = 0; } $answer_list_where[] = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_count_where = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_order_by = 'add_time ASC'; } else { if ($_GET['sort_key'] == 'popularity') { $answer_order_by = "agree_count " . $_GET['sort'] . ", against_count ASC, add_time ASC"; } else { $answer_order_by = "add_time " . $_GET['sort']; } } } if ($answer_count_where) { $answer_count = $this->model('answer')->get_answer_count_by_question_id($question_info['question_id'], $answer_count_where); } else { $answer_count = $question_info['answer_count']; } if (isset($_GET['answer_id']) and (!$this->user_id or $_GET['single'])) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($_GET['answer_id'])); } else { if (!$this->user_id and !$this->user_info['permission']['answer_show']) { if ($question_info['best_answer']) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($question_info['best_answer'])); } else { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, null, 'agree_count DESC'); } } else { if ($answer_list_where) { $answer_list_where = implode(' AND ', $answer_list_where); } $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], calc_page_limit($_GET['page'], 100), $answer_list_where, $answer_order_by); } } // 最佳回复预留 $answers[0] = ''; if (!is_array($answer_list)) { $answer_list = array(); } $answer_ids = array(); $answer_uids = array(); foreach ($answer_list as $answer) { $answer_ids[] = $answer['answer_id']; $answer_uids[] = $answer['uid']; if ($answer['has_attach']) { $has_attach_answer_ids[] = $answer['answer_id']; } } if (!in_array($question_info['best_answer'], $answer_ids) and intval($_GET['page']) < 2) { $answer_list = array_merge($this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . $question_info['best_answer']), $answer_list); } if ($answer_ids) { $answer_agree_users = $this->model('answer')->get_vote_user_by_answer_ids($answer_ids); $answer_vote_status = $this->model('answer')->get_answer_vote_status($answer_ids, $this->user_id); $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $answer_ids, $this->user_id); $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $answer_ids, $this->user_id); $answer_attachs = $this->model('publish')->get_attachs('answer', $has_attach_answer_ids, 'min'); } foreach ($answer_list as $answer) { if ($answer['has_attach']) { $answer['attachs'] = $answer_attachs[$answer['answer_id']]; $answer['insert_attach_ids'] = FORMAT::parse_attachs($answer['answer_content'], true); } $answer['user_rated_thanks'] = $answer_users_rated_thanks[$answer['answer_id']]; $answer['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer['answer_id']]; $answer['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($answer['answer_content'])))); $answer['agree_users'] = $answer_agree_users[$answer['answer_id']]; $answer['agree_status'] = $answer_vote_status[$answer['answer_id']]; if ($question_info['best_answer'] == $answer['answer_id'] and intval($_GET['page']) < 2) { $answers[0] = $answer; } else { $answers[] = $answer; } // 获取回答评论列表 $comments = $this->model('answer')->get_answer_comments($answer['answer_id']); $user_infos = $this->model('account')->get_user_info_by_uids(fetch_array_value($comments, 'uid')); foreach ($comments as $key => $val) { $comments[$key]['message'] = FORMAT::parse_links($this->model('question')->parse_at_user($comments[$key]['message'])); $comments[$key]['user_name'] = $user_infos[$val['uid']]['user_name']; $comments[$key]['url_token'] = $user_infos[$val['uid']]['url_token']; } $answer_comments[$answer['answer_id']] = $comments; } if (!$answers[0]) { unset($answers[0]); } if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { $user_answered = true; } else { $user_answered = false; } // 评论附件 TPL::assign('attach_access_key', md5($this->user_id . time())); TPL::assign('user_answered', $user_answered); TPL::assign('answers', $answers); TPL::assign('comments', $answer_comments); TPL::assign('answer_count', $answer_count); TPL::output('question/ajax/answer_list'); }
public function index_action() { if (!($article_info = $this->model('article')->get_article_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('文章不存在或已被删除'), '/'); } if ($article_info['has_attach']) { $article_info['attachs'] = $this->model('publish')->get_attach('article', $article_info['id'], 'min'); $article_info['attachs_ids'] = FORMAT::parse_attachs($article_info['message'], true); } $article_info['user_info'] = $this->model('account')->get_user_info_by_uid($article_info['uid'], true); $article_info['message'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($article_info['message']))); if ($this->user_id) { $article_info['vote_info'] = $this->model('article')->get_article_vote_by_id('article', $article_info['id'], null, $this->user_id); } //赞了该文章的用户信息 $article_info['vote_users'] = $this->model('article')->get_article_vote_users_by_id('article', $article_info['id'], 1, 10); //文章话题 $article_topics = $this->model('topic')->get_topics_by_item_id($article_info['id'], 'article'); $comments = $this->model('article')->get_comments($article_info['id'], $_GET['page'], 100); if ($comments and $this->user_id) { foreach ($comments as $key => $val) { $comments[$key]['vote_info'] = $this->model('article')->get_article_vote_by_id('comment', $val['id'], 1, $this->user_id); $comments[$key]['message'] = $this->model('question')->parse_at_user($val['message']); } } $article_info['user_follow_check'] = 0; if ($this->user_id and $this->model('follow')->user_follow_check($this->user_id, $article_info['uid'])) { $article_info['user_follow_check'] = 1; } $this->model('article')->update_views($article_info['id']); //作者信息 if ($article_info['user_info']) { $article_info['user_info'] = $this->model('myapi')->get_clean_user_info($article_info['user_info']); } //点赞者信息 if (!empty($article_info['vote_users'])) { foreach ($article_info['vote_users'] as $key => $value) { $article_info['vote_users'][$key] = $this->model('myapi')->get_clean_user_info($value); } } $topics_key = array('topic_id', 'topic_title'); if ($article_topics) { foreach ($article_topics as $kk => $vv) { foreach ($vv as $k => $v) { if (!in_array($k, $topics_key)) { unset($article_topics[$kk][$k]); } } } } //评论里评论者信息 if (!empty($comments)) { foreach ($comments as $key => $value) { if (!empty($value['user_info'])) { $comments[$key]['user_info'] = $this->model('myapi')->get_clean_user_info($value['user_info']); } if (!empty($value['at_user_info'])) { $comments[$key]['at_user_info'] = $this->model('myapi')->get_clean_user_info($value['at_user_info']); } } } H::ajax_json_output(AWS_APP::RSM(array('article_info' => $article_info, 'article_topics' => $article_topics, 'comments' => $comments), 1, null)); }
public function save_answer_action() { //Mobile 默认关注 if (!isset($_POST['auto_focus'])) { $_POST['auto_focus'] = 1; } if ($this->user_info['integral'] < 0 and get_setting('integral_system_enabled') == 'Y') { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('你的剩余积分已经不足以进行此操作'))); } if (!($question_info = $this->model('question')->get_question_info_by_id($_POST['question_id']))) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('问题不存在'))); } if ($question_info['lock'] and !($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'])) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('已经锁定的问题不能回复'))); } $answer_content = trim($_POST['answer_content'], "\r\n\t"); if (!$answer_content) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('请输入回复内容'))); } // 判断是否是问题发起者 if (get_setting('answer_self_question') == 'N' and $question_info['published_uid'] == $this->user_id) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('不能回复自己发布的问题,你可以修改问题内容'))); } // 判断是否已回复过问题 if (get_setting('answer_unique') == 'Y' && $this->model('answer')->has_answer_by_uid($_POST['question_id'], $this->user_id)) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('一个问题只能回复一次,你可以编辑回复过的回复'))); } if (strlen($answer_content) < get_setting('answer_length_lower')) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('回复内容字数不得少于 %s 字节', get_setting('answer_length_lower')))); } if (!$this->user_info['permission']['publish_url'] && FORMAT::outside_url_exists($answer_content)) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('你所在的用户组不允许发布站外链接'))); } $this->model('draft')->delete_draft($question_info['question_id'], 'answer', $this->user_id); if ($this->publish_approval_valid($answer_content)) { $this->model('publish')->publish_approval('answer', array('question_id' => $question_info['question_id'], 'answer_content' => $answer_content, 'anonymous' => $_POST['anonymous'], 'attach_access_key' => $_POST['attach_access_key'], 'auto_focus' => $_POST['auto_focus']), $this->user_id, $_POST['attach_access_key']); H::ajax_json_output(AWS_APP::RSM(null, '0', AWS_APP::lang()->_t('发布成功, 请等待管理员审核...'))); } else { $answer_id = $this->model('publish')->publish_answer($question_info['question_id'], $answer_content, $this->user_id, $_POST['anonymous'], $_POST['attach_access_key'], $_POST['auto_focus']); $this->model('answer')->set_answer_publish_source($answer_id, 'mobile'); $answer_info = $this->model('answer')->get_answer_by_id($answer_id); if ($answer_info['has_attach']) { $answer_info['attachs'] = $this->model('publish')->get_attach('answer', $answer_id, 'min'); $answer_info['insert_attach_ids'] = FORMAT::parse_attachs($answer_info['answer_content'], true); } //$answer_info['user_info'] = $this->user_info; $answer_info['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($answer_info['answer_content'])))); H::ajax_json_output(AWS_APP::RSM(array('answer_id' => $answer_id, 'answer_info' => $answer_info), 1, null)); } }
public function index_action() { if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if (is_mobile()) { HTTP::redirect('/m/question/' . $_GET['id']); } if ($_GET['column'] == 'log' and !$this->user_id) { HTTP::redirect('/question/' . $_GET['id']); } if (!($question_info = $this->model('question')->get_question_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('问题不存在或已被删除'), '/question/'); } if (!$_GET['sort'] or $_GET['sort'] != 'ASC') { $_GET['sort'] = 'DESC'; } else { $_GET['sort'] = 'ASC'; } if (get_setting('unfold_question_comments') == 'Y') { $_GET['comment_unfold'] = 'all'; } $question_info['redirect'] = $this->model('question')->get_redirect($question_info['question_id']); if ($question_info['redirect']['target_id']) { $target_question = $this->model('question')->get_question_info_by_id($question_info['redirect']['target_id']); } if (is_digits($_GET['rf']) and $_GET['rf']) { if ($from_question = $this->model('question')->get_question_info_by_id($_GET['rf'])) { $redirect_message[] = AWS_APP::lang()->_t('从问题 %s 跳转而来', '<a href="' . get_js_url('/question/' . $_GET['rf'] . '?rf=false') . '">' . $from_question['question_content'] . '</a>'); } } if ($question_info['redirect'] and !$_GET['rf']) { if ($target_question) { HTTP::redirect('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']); } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } else { if ($question_info['redirect']) { if ($target_question) { $message = AWS_APP::lang()->_t('此问题将跳转至') . ' <a href="' . get_js_url('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']) . '">' . $target_question['question_content'] . '</a>'; if ($this->user_id and ($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'] or !$this->question_info['lock'] and $this->user_info['permission']['redirect_question'])) { $message .= ' (<a href="javascript:;" onclick="AWS.ajax_request(G_BASE_URL + \'/question/ajax/redirect/\', \'item_id=' . $question_info['question_id'] . '\');">' . AWS_APP::lang()->_t('撤消重定向') . '</a>)'; } $redirect_message[] = $message; } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } } if ($question_info['has_attach']) { $question_info['attachs'] = $this->model('publish')->get_attach('question', $question_info['question_id'], 'min'); $question_info['attachs_ids'] = FORMAT::parse_attachs($question_info['question_detail'], true); } if ($question_info['category_id'] and get_setting('category_enable') == 'Y') { $question_info['category_info'] = $this->model('system')->get_category_info($question_info['category_id']); } $question_info['user_info'] = $this->model('account')->get_user_info_by_uid($question_info['published_uid'], true); if ($_GET['column'] != 'log') { $this->model('question')->calc_popular_value($question_info['question_id']); $this->model('question')->update_views($question_info['question_id']); if (is_digits($_GET['uid'])) { $answer_list_where[] = 'uid = ' . intval($_GET['uid']); $answer_count_where = 'uid = ' . intval($_GET['uid']); } else { if ($_GET['uid'] == 'focus' and $this->user_id) { if ($friends = $this->model('follow')->get_user_friends($this->user_id, false)) { foreach ($friends as $key => $val) { $follow_uids[] = $val['uid']; } } else { $follow_uids[] = 0; } $answer_list_where[] = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_count_where = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_order_by = 'add_time ASC'; } else { if ($_GET['sort_key'] == 'add_time') { $answer_order_by = $_GET['sort_key'] . " " . $_GET['sort']; } else { $answer_order_by = "agree_count " . $_GET['sort'] . ", against_count ASC, add_time ASC"; } } } if ($answer_count_where) { $answer_count = $this->model('answer')->get_answer_count_by_question_id($question_info['question_id'], $answer_count_where); } else { $answer_count = $question_info['answer_count']; } if (isset($_GET['answer_id']) and (!$this->user_id or $_GET['single'])) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($_GET['answer_id'])); } else { if (!$this->user_id and !$this->user_info['permission']['answer_show']) { if ($question_info['best_answer']) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($question_info['best_answer'])); } else { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, null, 'agree_count DESC'); } } else { if ($answer_list_where) { $answer_list_where = implode(' AND ', $answer_list_where); } $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], calc_page_limit($_GET['page'], 100), $answer_list_where, $answer_order_by); } } // 最佳回复预留 $answers[0] = ''; if (!is_array($answer_list)) { $answer_list = array(); } $answer_ids = array(); $answer_uids = array(); foreach ($answer_list as $answer) { $answer_ids[] = $answer['answer_id']; $answer_uids[] = $answer['uid']; if ($answer['has_attach']) { $has_attach_answer_ids[] = $answer['answer_id']; } } if (!in_array($question_info['best_answer'], $answer_ids) and intval($_GET['page']) < 2) { $answer_list = array_merge($this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . $question_info['best_answer']), $answer_list); } if ($answer_ids) { $answer_agree_users = $this->model('answer')->get_vote_user_by_answer_ids($answer_ids); $answer_vote_status = $this->model('answer')->get_answer_vote_status($answer_ids, $this->user_id); $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $answer_ids, $this->user_id); $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $answer_ids, $this->user_id); $answer_attachs = $this->model('publish')->get_attachs('answer', $has_attach_answer_ids, 'min'); } foreach ($answer_list as $answer) { if ($answer['has_attach']) { $answer['attachs'] = $answer_attachs[$answer['answer_id']]; $answer['insert_attach_ids'] = FORMAT::parse_attachs($answer['answer_content'], true); } $answer['user_rated_thanks'] = $answer_users_rated_thanks[$answer['answer_id']]; $answer['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer['answer_id']]; $answer['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($answer['answer_content'])))); $answer['agree_users'] = $answer_agree_users[$answer['answer_id']]; $answer['agree_status'] = $answer_vote_status[$answer['answer_id']]; if ($question_info['best_answer'] == $answer['answer_id'] and intval($_GET['page']) < 2) { $answers[0] = $answer; } else { $answers[] = $answer; } } if (!$answers[0]) { unset($answers[0]); } if (get_setting('answer_unique') == 'Y') { if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { TPL::assign('user_answered', 1); } else { TPL::assign('user_answered', 0); } } TPL::assign('answers', $answers); TPL::assign('answer_count', $answer_count); } if ($this->user_id) { TPL::assign('question_thanks', $this->model('question')->get_question_thanks($question_info['question_id'], $this->user_id)); TPL::assign('invite_users', $this->model('question')->get_invite_users($question_info['question_id'])); TPL::assign('user_follow_check', $this->model('follow')->user_follow_check($this->user_id, $question_info['published_uid'])); if ($this->user_info['draft_count'] > 0) { TPL::assign('draft_content', $this->model('draft')->get_data($question_info['question_id'], 'answer', $this->user_id)); } } $question_info['question_detail'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($question_info['question_detail']))); TPL::assign('question_info', $question_info); TPL::assign('question_focus', $this->model('question')->has_focus_question($question_info['question_id'], $this->user_id)); $question_topics = $this->model('topic')->get_topics_by_item_id($question_info['question_id'], 'question'); if (sizeof($question_topics) == 0 and $this->user_id) { $related_topics = $this->model('question')->get_related_topics($question_info['question_content']); TPL::assign('related_topics', $related_topics); } TPL::assign('question_topics', $question_topics); TPL::assign('question_related_list', $this->model('question')->get_related_question_list($question_info['question_id'], $question_info['question_content'])); TPL::assign('question_related_links', $this->model('related')->get_related_links('question', $question_info['question_id'])); if ($this->user_id) { if ($question_topics) { foreach ($question_topics as $key => $val) { $question_topic_ids[] = $val['topic_id']; } } if ($helpful_users = $this->model('topic')->get_helpful_users_by_topic_ids($question_topic_ids, 17)) { foreach ($helpful_users as $key => $val) { if ($val['user_info']['uid'] == $this->user_id) { unset($helpful_users[$key]); } else { $helpful_users[$key]['has_invite'] = $this->model('question')->has_question_invite($question_info['question_id'], $val['user_info']['uid'], $this->user_id); $helpful_users[$key]['experience'] = end($helpful_users[$key]['experience']); } } TPL::assign('helpful_users', $helpful_users); } } $this->crumb($question_info['question_content'], '/question/' . $question_info['question_id']); if ($_GET['column'] == 'log') { $this->crumb(AWS_APP::lang()->_t('日志'), '/question/id-' . $question_info['question_id'] . '__column-log'); } else { TPL::assign('human_valid', human_valid('answer_valid_hour')); if ($this->user_id) { TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/question/id-' . $question_info['question_id'] . '__sort_key-' . $_GET['sort_key'] . '__sort-' . $_GET['sort'] . '__uid-' . $_GET['uid']), 'total_rows' => $answer_count, 'per_page' => 100))->create_links()); } } TPL::set_meta('keywords', implode(',', $this->model('system')->analysis_keyword($question_info['question_content']))); TPL::set_meta('description', $question_info['question_content'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($question_info['question_detail'])), 0, 128, 'UTF-8', '...')); if (get_setting('advanced_editor_enable') == 'Y') { import_editor_static_files(); } if (get_setting('upload_enable') == 'Y') { // fileupload TPL::import_js('js/fileupload.js'); } TPL::assign('attach_access_key', md5($this->user_id . time())); TPL::assign('redirect_message', $redirect_message); $recommend_posts = $this->model('posts')->get_recommend_posts_by_topic_ids($question_topic_ids); if ($recommend_posts) { foreach ($recommend_posts as $key => $value) { if ($value['question_id'] and $value['question_id'] == $question_info['question_id']) { unset($recommend_posts[$key]); break; } } TPL::assign('recommend_posts', $recommend_posts); } // 答题选项 if (intval($question_info['quiz_id']) > 0) { $question_quiz = $this->model('quiz')->get_question_quiz_info_by_id($question_info['quiz_id']); TPL::import_js('js/quiz.js'); TPL::import_css('css/quiz.css'); TPL::import_js('js/app/question.js'); TPL::assign('question_quiz', $question_quiz); } TPL::output('question/index'); }
public function get_all_question() { // return "helloword23333333"; if ($result = $this->fetch_all('question', "", "update_time DESC")) { foreach ($result as $key => $val) { $data[$key]['question_info'] = $val; // here should parse answer_content for get img url directly by anxiang.xiao 20150827 $data[$key]['question_info']['question_detail'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs2(nl2br(FORMAT::parse_bbcode($data[$key]['question_info']['question_detail'])))); $data[$key]['question_publish_user_info'] = $this->fetch_row('users', 'uid = ' . $val['published_uid']); if ($data[$key]['question_publish_user_info']['avatar_file']) { $data[$key]['question_publish_user_info']['avatar_file'] = get_avatar_url($data[$key]['question_publish_user_info']['uid'], 'min'); } $data[$key]['category_info'] = $this->fetch_row('category', 'id = ' . $val['category_id']); $data[$key]['question_newest_answer_info'] = $this->fetch_row('answer', 'question_id = ' . $val['question_id'], "add_time DESC"); /* * * $data[$key]['question_info'] = $val; if ($val['published_uid'] != 0) $data[$key]['question_publish_user_info'] = $this->fetch_row('users','uid = ' .$val['published_uid'] ); else $data[$key]['question_publish_user_info'] = "{}"; if ($val['category_id'] != 0) $data[$key]['category_info'] = $this->fetch_row('category','id = ' .$val['category_id'] ); else $data[$key]['category_info'] = "{}"; */ } return $data; // return $posts_index; } }
public function save_answer_action() { if ($this->user_info['integral'] < 0 and get_setting('integral_system_enabled') == 'Y') { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('你的剩余积分已经不足以进行此操作'))); } if (!($question_info = $this->model('question')->get_question_info_by_id($_POST['question_id']))) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('问题不存在'))); } if ($question_info['lock'] and !($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'])) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('已经锁定的问题不能回复'))); } $answer_content = trim($_POST['answer_content'], "\r\n\t"); if (!$answer_content) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('请输入回复内容'))); } // 判断是否是问题发起者 if (get_setting('answer_self_question') == 'N' and $question_info['published_uid'] == $this->user_id) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('不能回复自己发布的问题,你可以修改问题内容'))); } // 判断是否已回复过问题 if (get_setting('answer_unique') == 'Y' and $this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('一个问题只能回复一次,你可以编辑回复过的回复'))); } if (strlen($answer_content) < get_setting('answer_length_lower')) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('回复内容字数不得少于 %s 字节', get_setting('answer_length_lower')))); } if (!$this->user_info['permission']['publish_url'] and FORMAT::outside_url_exists($answer_content)) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('你所在的用户组不允许发布站外链接'))); } if (!$this->model('publish')->insert_attach_is_self_upload($answer_content, $_POST['attach_ids'])) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('只允许插入当前页面上传的附件'))); } if (human_valid('answer_valid_hour') and !AWS_APP::captcha()->is_validate($_POST['seccode_verify'])) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('请填写正确的验证码'))); } // !注: 来路检测后面不能再放报错提示 if (!valid_post_hash($_POST['post_hash'])) { H::ajax_json_output(AWS_APP::RSM(null, '-1', AWS_APP::lang()->_t('页面停留时间过长,或内容已提交,请刷新页面'))); } $this->model('draft')->delete_draft($question_info['question_id'], 'answer', $this->user_id); if ($this->publish_approval_valid($answer_content)) { $this->model('publish')->publish_approval('answer', array('question_id' => $question_info['question_id'], 'answer_content' => $answer_content, 'anonymous' => $_POST['anonymous'], 'attach_access_key' => $_POST['attach_access_key'], 'auto_focus' => $_POST['auto_focus']), $this->user_id, $_POST['attach_access_key']); H::ajax_json_output(AWS_APP::RSM(array('url' => get_js_url('/publish/wait_approval/question_id-' . $question_info['question_id'] . '__is_mobile-' . $_POST['_is_mobile'])), 1, null)); } else { $answer_id = $this->model('publish')->publish_answer($question_info['question_id'], $answer_content, $this->user_id, $_POST['anonymous'], $_POST['attach_access_key'], $_POST['auto_focus']); if ($_POST['_is_mobile']) { //$url = get_js_url('/m/question/id-' . $question_info['question_id'] . '__item_id-' . $answer_id . '__rf-false'); $this->model('answer')->set_answer_publish_source($answer_id, 'mobile'); } else { //$url = get_js_url('/question/' . $question_info['question_id'] . '?item_id=' . $answer_id . '&rf=false'); } $answer_info = $this->model('answer')->get_answer_by_id($answer_id); if ($answer_info['has_attach']) { $answer_info['attachs'] = $this->model('publish')->get_attach('answer', $answer_id, 'min'); $answer_info['insert_attach_ids'] = FORMAT::parse_attachs($answer_info['answer_content'], true); } $answer_info['user_info'] = $this->user_info; $answer_info['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($answer_info['answer_content'])))); TPL::assign('answer_info', $answer_info); if (is_mobile()) { H::ajax_json_output(AWS_APP::RSM(array('ajax_html' => TPL::output('m/ajax/question_answer', false)), 1, null)); } else { H::ajax_json_output(AWS_APP::RSM(array('ajax_html' => TPL::output('question/ajax/answer', false)), 1, null)); } } }
public function topic_best_answer_list_action() { if (!$_GET['topic_id']) { H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('参数错误'))); } $_GET['page'] = $_GET['page'] ? $_GET['page'] - 1 : 0; $per_page = get_setting('contents_per_page'); if ($_GET['per_page']) { $per_page = intval($_GET['per_page']); } //$action_list = $this->model('topic')->get_topic_best_answer_action_list(intval($_GET['topic_id']), $this->user_id, intval($_GET['page']) * get_setting('contents_per_page') . ', ' . get_setting('contents_per_page')); $action_list = $this->model('topic')->get_topic_best_answer_action_list(intval($_GET['topic_id']), $this->user_id, intval($_GET['page']) * $per_page . ', ' . $per_page); $question_info_key = array('question_id', 'question_content'); $answer_info_key = array('answer_id', 'answer_content', 'add_time', 'against_count', 'agree_count', 'comment_count', 'thanks_count', 'agree_status'); if ($action_list) { foreach ($action_list as $key => $val) { foreach ($val as $kk => $vv) { if (!in_array($kk, array('question_info', 'user_info', 'answer_info'))) { unset($action_list[$key][$kk]); } if ($kk == 'question_info') { foreach ($vv as $k => $v) { if (!in_array($k, $question_info_key)) { unset($action_list[$key][$kk][$k]); } } } if ($kk == 'user_info') { $action_list[$key][$kk] = $this->model('myapi')->get_clean_user_info($vv); } if ($kk == 'answer_info') { foreach ($vv as $k => $v) { if (!in_array($k, $answer_info_key)) { unset($action_list[$key][$kk][$k]); } } $vv['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($vv['answer_content'])))); $action_list[$key][$kk]['answer_content'] = cjk_substr(trim(strip_tags($vv['answer_content'])), 0, 100); } } } } else { $action_list = null; } H::ajax_json_output(AWS_APP::RSM(array('total_rows' => count($action_list), 'rows' => array_values($action_list)), 1, null)); }
public function reply_ticket($ticket_id, $message, $uid, $attach_access_key = null) { $ticket_info = $this->get_ticket_info_by_id($ticket_id); if (!$ticket_info or $ticket_info['status'] == 'closed') { return false; } $now = time(); $reply_id = $this->insert('ticket_reply', array('ticket_id' => $ticket_info['id'], 'message' => htmlspecialchars($message), 'uid' => intval($uid), 'time' => $now, 'uid' => intval($uid), 'ip' => ip2long(fetch_ip()))); if (!$reply_id) { return false; } set_human_valid('answer_valid_hour'); if ($attach_access_key) { $this->model('publish')->update_attach('ticket_reply', $reply_id, $attach_access_key); } if (!$ticket_info['reply_time']) { $this->shutdown_update('ticket', array('reply_time' => $now), 'id = ' . $ticket_info['id']); } if ($ticket_info['weibo_msg_id']) { $this->model('openid_weibo_weibo')->reply_answer_to_sina($question_info['question_id'], cjk_substr($answer_content, 0, 110, 'UTF-8', '...')); } if ($ticket_info['received_email_id']) { $this->model('edm')->reply_answer_by_email($question_info['question_id'], nl2br(FORMAT::parse_bbcode($answer_content))); } return $reply_id; }
public function index_action() { if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if (!($article_info = $this->model('article')->get_article_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('文章不存在或已被删除'), '/'); } if ($article_info['has_attach']) { $article_info['attachs'] = $this->model('publish')->get_attach('article', $article_info['id'], 'min'); $article_info['attachs_ids'] = FORMAT::parse_attachs($article_info['message'], true); } $article_info['user_info'] = $this->model('account')->get_user_info_by_uid($article_info['uid'], true); $article_info['message'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($article_info['message']))); if ($this->user_id) { $article_info['vote_info'] = $this->model('article')->get_article_vote_by_id('article', $article_info['id'], null, $this->user_id); } $article_info['vote_users'] = $this->model('article')->get_article_vote_users_by_id('article', $article_info['id'], 1, 10); // 是否为推荐到首页 $article_info['is_recommend_homepage'] = $this->model('recommend')->recommend_homepage_check('article', $article_info['id']); TPL::assign('article_info', $article_info); $article_topics = $this->model('topic')->get_topics_by_item_id($article_info['id'], 'article'); if ($article_topics) { TPL::assign('article_topics', $article_topics); foreach ($article_topics as $topic_info) { $article_topic_ids[] = $topic_info['topic_id']; } } TPL::assign('reputation_topics', $this->model('people')->get_user_reputation_topic($article_info['user_info']['uid'], $user['reputation'], 5)); $this->crumb($article_info['title'], '/article/' . $article_info['id']); TPL::assign('human_valid', human_valid('answer_valid_hour')); if ($_GET['item_id']) { $comments[] = $this->model('article')->get_comment_by_id($_GET['item_id']); } else { $comments = $this->model('article')->get_comments($article_info['id'], $_GET['page'], 50); } if ($comments and $this->user_id) { foreach ($comments as $key => $val) { $comments[$key]['vote_info'] = $this->model('article')->get_article_vote_by_id('comment', $val['id'], 1, $this->user_id); $comments[$key]['message'] = $this->model('question')->parse_at_user($val['message']); } } if ($this->user_id) { TPL::assign('user_follow_check', $this->model('follow')->user_follow_check($this->user_id, $article_info['uid'])); } TPL::assign('question_related_list', $this->model('question')->get_related_question_list(null, $article_info['title'])); // 最新推荐文章 $hot_articles = $this->model('article')->get_articles_list(null, 1, 5, 'votes DESC', null); foreach ($hot_articles as $key => $val) { $article_ids[] = $val['id']; } $article_attachs = $this->model('publish')->get_attachs('article', $article_ids, 'min'); foreach ($hot_articles as $key => $val) { $hot_articles[$key]['attachs'] = $article_attachs[$val['id']]; } TPL::assign('hot_articles', $hot_articles); // 推荐专题 if (TPL::is_output('block/sidebar_hot_topics.tpl.htm', 'question/square')) { TPL::assign('sidebar_hot_topics', $this->model('module')->sidebar_hot_topics($_GET['category'], 4)); } $this->model('article')->update_views($article_info['id']); TPL::assign('comments', $comments); TPL::assign('comments_count', $article_info['comments']); TPL::assign('human_valid', human_valid('answer_valid_hour')); TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/article/id-' . $article_info['id']), 'total_rows' => $article_info['comments'], 'per_page' => 50))->create_links()); TPL::set_meta('keywords', implode(',', $this->model('system')->analysis_keyword($article_info['title']))); TPL::set_meta('description', $article_info['title'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($article_info['message'])), 0, 128, 'UTF-8', '...')); TPL::assign('attach_access_key', md5($this->user_id . time())); $recommend_posts = $this->model('posts')->get_recommend_posts_by_topic_ids($article_topic_ids); if ($recommend_posts) { foreach ($recommend_posts as $key => $value) { if ($value['id'] and $value['id'] == $article_info['id']) { unset($recommend_posts[$key]); break; } } TPL::assign('recommend_posts', $recommend_posts); } // 收藏数量 $bookmark_count = $this->model('favorite')->get_favorite_counts('article', $article_info['id']); TPL::assign('bookmark_count', $bookmark_count); TPL::import_js('js/sweetalert.min.js'); TPL::import_css('css/sweetalert.css'); TPL::import_js('js/jquery-qrcode.min.js'); TPL::import_js('js/share.js'); TPL::output('article/index'); }
public function index_action() { if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if ($_GET['column'] == 'log' and !$this->user_id) { HTTP::redirect('/question/' . $_GET['id']); } if (!($question_info = $this->model('question')->get_question_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('问题不存在或已被删除'), '/question/'); } if (!$_GET['sort'] or $_GET['sort'] != 'ASC') { $_GET['sort'] = 'DESC'; } else { $_GET['sort'] = 'ASC'; } if (get_setting('unfold_question_comments') == 'Y') { $_GET['comment_unfold'] = 'all'; } $question_info['redirect'] = $this->model('question')->get_redirect($question_info['question_id']); if ($question_info['redirect']['target_id']) { $target_question = $this->model('question')->get_question_info_by_id($question_info['redirect']['target_id']); } if (is_digits($_GET['rf']) and $_GET['rf']) { if ($from_question = $this->model('question')->get_question_info_by_id($_GET['rf'])) { $redirect_message[] = AWS_APP::lang()->_t('从问题 %s 跳转而来', '<a href="' . get_js_url('/question/' . $_GET['rf'] . '?rf=false') . '">' . $from_question['question_content'] . '</a>'); } } if ($question_info['redirect'] and !$_GET['rf']) { if ($target_question) { HTTP::redirect('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']); } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } else { if ($question_info['redirect']) { if ($target_question) { $message = AWS_APP::lang()->_t('此问题将跳转至') . ' <a href="' . get_js_url('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']) . '">' . $target_question['question_content'] . '</a>'; if ($this->user_id and ($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'] or !$this->question_info['lock'] and $this->user_info['permission']['redirect_question'])) { $message .= ' (<a href="javascript:;" onclick="AWS.ajax_request(G_BASE_URL + \'/question/ajax/redirect/\', \'item_id=' . $question_info['question_id'] . '\');">' . AWS_APP::lang()->_t('撤消重定向') . '</a>)'; } $redirect_message[] = $message; } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } } if ($question_info['has_attach']) { $question_info['attachs'] = $this->model('publish')->get_attach('question', $question_info['question_id'], 'min'); $question_info['attachs_ids'] = FORMAT::parse_attachs($question_info['question_detail'], true); } $question_info['user_info'] = $this->model('account')->get_user_info_by_uid($question_info['published_uid'], true); // 分类信息 if ($question_info['category_id']) { $question_info['category_info'] = $this->model('system')->get_category_info($question_info['category_id']); } if (intval($question_info['quiz_id']) > 0) { $question_info['question_quiz'] = $this->model('quiz')->get_question_quiz_info_by_id($question_info['quiz_id']); } $this->model('question')->calc_popular_value($question_info['question_id']); $this->model('question')->update_views($question_info['question_id']); // if ($_GET['column'] != 'log') // { // $this->model('question')->calc_popular_value($question_info['question_id']); // $this->model('question')->update_views($question_info['question_id']); // if (is_digits($_GET['uid'])) // { // $answer_list_where[] = 'uid = ' . intval($_GET['uid']); // $answer_count_where = 'uid = ' . intval($_GET['uid']); // } // else if ($_GET['uid'] == 'focus' and $this->user_id) // { // if ($friends = $this->model('follow')->get_user_friends($this->user_id, false)) // { // foreach ($friends as $key => $val) // { // $follow_uids[] = $val['uid']; // } // } // else // { // $follow_uids[] = 0; // } // $answer_list_where[] = 'uid IN(' . implode($follow_uids, ',') . ')'; // $answer_count_where = 'uid IN(' . implode($follow_uids, ',') . ')'; // $answer_order_by = 'add_time ASC'; // } // else if ($_GET['sort_key'] == 'add_time') // { // $answer_order_by = $_GET['sort_key'] . " " . $_GET['sort']; // } // else // { // $answer_order_by = "agree_count " . $_GET['sort'] . ", against_count ASC, add_time ASC"; // } // if ($answer_count_where) // { // $answer_count = $this->model('answer')->get_answer_count_by_question_id($question_info['question_id'], $answer_count_where); // } // else // { // $answer_count = $question_info['answer_count']; // } // if (isset($_GET['answer_id']) and (! $this->user_id OR $_GET['single'])) // { // $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($_GET['answer_id'])); // } // else if (! $this->user_id AND !$this->user_info['permission']['answer_show']) // { // if ($question_info['best_answer']) // { // $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($question_info['best_answer'])); // } // else // { // $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, null, 'agree_count DESC'); // } // } // else // { // if ($answer_list_where) // { // $answer_list_where = implode(' AND ', $answer_list_where); // } // $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], calc_page_limit($_GET['page'], 100), $answer_list_where, $answer_order_by); // } // // 最佳回复预留 // $answers[0] = ''; // if (! is_array($answer_list)) // { // $answer_list = array(); // } // $answer_ids = array(); // $answer_uids = array(); // foreach ($answer_list as $answer) // { // $answer_ids[] = $answer['answer_id']; // $answer_uids[] = $answer['uid']; // if ($answer['has_attach']) // { // $has_attach_answer_ids[] = $answer['answer_id']; // } // } // if (!in_array($question_info['best_answer'], $answer_ids) AND intval($_GET['page']) < 2) // { // $answer_list = array_merge($this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . $question_info['best_answer']), $answer_list); // } // if ($answer_ids) // { // $answer_agree_users = $this->model('answer')->get_vote_user_by_answer_ids($answer_ids); // $answer_vote_status = $this->model('answer')->get_answer_vote_status($answer_ids, $this->user_id); // $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $answer_ids, $this->user_id); // $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $answer_ids, $this->user_id); // $answer_attachs = $this->model('publish')->get_attachs('answer', $has_attach_answer_ids, 'min'); // } // foreach ($answer_list as $answer) // { // if ($answer['has_attach']) // { // $answer['attachs'] = $answer_attachs[$answer['answer_id']]; // $answer['insert_attach_ids'] = FORMAT::parse_attachs($answer['answer_content'], true); // } // $answer['user_rated_thanks'] = $answer_users_rated_thanks[$answer['answer_id']]; // $answer['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer['answer_id']]; // $answer['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($answer['answer_content'])))); // $answer['agree_users'] = $answer_agree_users[$answer['answer_id']]; // $answer['agree_status'] = $answer_vote_status[$answer['answer_id']]; // if ($question_info['best_answer'] == $answer['answer_id'] AND intval($_GET['page']) < 2) // { // $answers[0] = $answer; // } // else // { // $answers[] = $answer; // } // // 获取回答评论列表 // $comments = $this->model('answer')->get_answer_comments($answer['answer_id']); // $user_infos = $this->model('account')->get_user_info_by_uids(fetch_array_value($comments, 'uid')); // foreach ($comments as $key => $val) // { // $comments[$key]['message'] = FORMAT::parse_links($this->model('question')->parse_at_user($comments[$key]['message'])); // $comments[$key]['user_name'] = $user_infos[$val['uid']]['user_name']; // $comments[$key]['url_token'] = $user_infos[$val['uid']]['url_token']; // } // $answer_comments[$answer['answer_id']] = $comments; // } // if (! $answers[0]) // { // unset($answers[0]); // } // if (get_setting('answer_unique') == 'Y') // { // if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) // { // TPL::assign('user_answered', 1); // } // else // { // TPL::assign('user_answered', 0); // } // } $user_answered = $this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id); $answer_count = $question_info['answer_count']; TPL::assign('user_answered', $user_answered); // TPL::assign('answers', $answers); // TPL::assign('comments', $answer_comments); TPL::assign('answer_count', $answer_count); // } // 用户是否通过答题 $passed_quiz = $this->model('quiz')->user_question_quiz_passed($question_info['question_id'], $this->user_id); $show_answers = ($question_info['published_uid'] == $this->user_id or $this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'] or $user_answered or $passed_quiz); TPL::assign('show_answers', $show_answers); if ($this->user_id) { TPL::assign('question_thanks', $this->model('question')->get_question_thanks($question_info['question_id'], $this->user_id)); // TPL::assign('invite_users', $this->model('question')->get_invite_users($question_info['question_id'])); TPL::assign('user_follow_check', $this->model('follow')->user_follow_check($this->user_id, $question_info['published_uid'])); if ($this->user_info['draft_count'] > 0) { TPL::assign('draft_content', $this->model('draft')->get_data($question_info['question_id'], 'answer', $this->user_id)); } } $question_info['question_detail'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($question_info['question_detail']))); // 获取答题选项类型 if ($question_info['quiz_id']) { $question_info['quiz_info'] = $this->model('quiz')->get_question_quiz_info_by_id($question_info['quiz_id']); } TPL::assign('question_info', $question_info); TPL::assign('question_focus', $this->model('question')->has_focus_question($question_info['question_id'], $this->user_id)); $question_topics = $this->model('topic')->get_topics_by_item_id($question_info['question_id'], 'question'); if (sizeof($question_topics) == 0 and $this->user_id) { $related_topics = $this->model('question')->get_related_topics($question_info['question_content']); TPL::assign('related_topics', $related_topics); } TPL::assign('question_topics', $question_topics); // 可能喜欢的问题 $exclude_qids[] = $question_info['question_id']; $recommend_questions = $this->model('question')->get_recommend_question_list_by_category($question_info['question_id'], $exclude_qids, $this->user_id, 8); if ($recommend_questions) { foreach ($recommend_questions as $key => $value) { // 获取相关问题的附加图片 if ($value['has_attach']) { $recommend_questions[$key]['attachs'] = $this->model('publish')->get_attach('question', $value['question_id'], 'min'); } // 获取是否为限时答题信息 $is_countdown = false; if ($value['quiz_id']) { $quiz_info = $this->model('quiz')->get_question_quiz_info_by_id($value['quiz_id']); $is_countdown = $quiz_info['countdown'] > 0; } $recommend_questions[$key]['is_countdown'] = $is_countdown; } TPL::assign('recommend_question_list', $recommend_questions); } TPL::assign('question_related_links', $this->model('related')->get_related_links('question', $question_info['question_id'])); // 推荐用户答题功能 $exclude_uids[] = $question_info['published_uid']; if ($this->user_id) { $exclude_uids[] = $this->user_id; } $invited_uids = $this->model('question')->get_invited_user_ids($question_info['question_id']); if ($invited_uids) { foreach ($invited_uids as $key => $val) { $exclude_uids[] = $val['uid']; } } if ($question_info['quiz_id']) { $answered_uids = $this->model('question')->get_quized_uids($question_info['question_id']); } else { $answered_uids = $this->model('question')->get_commented_uids($question_info['question_id']); } if ($answered_uids) { foreach ($answered_uids as $val) { if (!in_array($val, $exclude_uids)) { $exclude_uids[] = $val['uid']; } } } TPL::assign('exclude_uids', $exclude_uids); $recommend_users = $this->model('question')->get_recommend_users_by_category_id($question_info['category_id'], $exclude_uids, get_setting('user_question_invite_recommend')); if ($recommend_users) { $uids = null; foreach ($recommend_users as $key => $val) { $uids[] = $val['uid']; } $users_info = $this->model('account')->get_user_info_by_uids($uids, true); foreach ($recommend_users as $key => $val) { $recommend_users[$key]['user_info'] = $users_info[$val['uid']]; } } TPL::assign('recommend_users', $recommend_users); TPL::assign('invited_user_count', $this->model('question')->get_invited_user_count($question_info['question_id'])); // if ($this->user_id) // { // if ($question_topics) // { // foreach ($question_topics AS $key => $val) // { // $question_topic_ids[] = $val['topic_id']; // } // } // if ($recommend_users = $this->model('topic')->get_recommend_users_by_topic_ids($question_topic_ids, 17)) // { // foreach ($recommend_users AS $key => $val) // { // if ($val['user_info']['uid'] == $this->user_id) // { // unset($recommend_users[$key]); // } // else // { // $recommend_users[$key]['has_invite'] = $this->model('question')->has_question_invite($question_info['question_id'], $val['user_info']['uid'], $this->user_id); // $recommend_users[$key]['experience'] = end($recommend_users[$key]['experience']); // } // } // TPL::assign('recommend_users', $recommend_users); // } // } $this->crumb($question_info['question_content'], '/question/' . $question_info['question_id']); if ($_GET['column'] == 'log') { // $this->crumb(AWS_APP::lang()->_t('日志'), '/question/id-' . $question_info['question_id'] . '__column-log'); } else { TPL::assign('human_valid', human_valid('answer_valid_hour')); if ($this->user_id) { TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/question/id-' . $question_info['question_id'] . '__sort_key-' . $_GET['sort_key'] . '__sort-' . $_GET['sort'] . '__uid-' . $_GET['uid']), 'total_rows' => $answer_count, 'per_page' => 100))->create_links()); } } TPL::set_meta('keywords', implode(',', $this->model('system')->analysis_keyword($question_info['question_content']))); TPL::set_meta('description', $question_info['question_content'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($question_info['question_detail'])), 0, 128, 'UTF-8', '...')); if (get_setting('advanced_editor_enable') == 'Y') { import_editor_static_files(); } if (get_setting('upload_enable') == 'Y') { // fileupload TPL::import_js('js/fileupload.js'); } TPL::assign('redirect_message', $redirect_message); $recommend_posts = $this->model('posts')->get_recommend_posts_by_topic_ids($question_topic_ids); if ($recommend_posts) { foreach ($recommend_posts as $key => $value) { if ($value['question_id'] and $value['question_id'] == $question_info['question_id']) { unset($recommend_posts[$key]); break; } } TPL::assign('recommend_posts', $recommend_posts); } // 是否进行出题成功提示 if ($this->user_id == $question_info['published_uid'] and $question_info['is_first']) { TPL::assign('is_first_visited', true); TPL::assign('publish_integral', get_setting('integral_system_config_new_question')); TPL::assign('user_integral', $this->user_info['integral']); $this->model('question')->set_is_first_visited($question_info['question_id'], 0); } // 答题动态信息 $question_quiz_record = $this->model('quiz')->get_question_quiz_record_list_page($question_info['question_id'], 1, 5); TPL::assign('question_quiz_record', $question_quiz_record); // // 添加题目解析提示提示 // if($this->user_id == $question_info['published_uid'] AND !$question_info['solution_id']) // { // TPL::assign('show_add_solution_hint', true); // } // 获取上一道题目和下一道题目的信息 // $question_info_next = $this->model('question')->get_next_question_info($question_info['question_id']); // $question_info_previous = $this->model('question')->get_previous_question_info($question_info['question_id']); // TPL::assign('question_info_next', $question_info_next); // TPL::assign('question_info_previous', $question_info_previous); TPL::import_js('js/app/question.js'); TPL::import_js('js/bootstrap-growl.min.js'); TPL::import_js('js/quiz.js'); TPL::import_css('css/quiz.css'); TPL::import_js('js/sweetalert.min.js'); TPL::import_css('css/sweetalert.css'); TPL::import_js('js/jquery-qrcode.min.js'); TPL::import_js('js/share.js'); TPL::output('question/index'); }
public function question_action() { TPL::assign('body_class', 'active'); if (!$this->user_id and !$this->user_info['permission']['visit_question']) { HTTP::redirect('/m/login/url-' . base64_encode(get_js_url($_SERVER['QUERY_STRING']))); } if (!isset($_GET['id'])) { HTTP::redirect('/m/explore/'); } if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if (!($question_info = $this->model('question')->get_question_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('问题不存在或已被删除'), '/m/explore/'); } $question_info['redirect'] = $this->model('question')->get_redirect($question_info['question_id']); if ($question_info['redirect']['target_id']) { $target_question = $this->model('question')->get_question_info_by_id($question_info['redirect']['target_id']); } if (is_digits($_GET['rf']) and $_GET['rf']) { if ($from_question = $this->model('question')->get_question_info_by_id($_GET['rf'])) { $redirect_message[] = AWS_APP::lang()->_t('从问题') . ' <a href="' . get_js_url('/m/question/' . $_GET['rf'] . '?rf=false') . '">' . $from_question['question_content'] . '</a> ' . AWS_APP::lang()->_t('跳转而来'); } } if ($question_info['redirect'] and !$_GET['rf']) { if ($target_question) { HTTP::redirect('/m/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']); } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } else { if ($question_info['redirect']) { if ($target_question) { $message = AWS_APP::lang()->_t('此问题将跳转至') . ' <a href="' . get_js_url('/m/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']) . '">' . $target_question['question_content'] . '</a>'; if ($this->user_id and ($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'] or !$this->question_info['lock'] and $this->user_info['permission']['redirect_question'])) { $message .= ' (<a href="javascript:;" onclick="AWS.ajax_request(G_BASE_URL + \'/question/ajax/redirect/\', \'item_id=' . $question_info['question_id'] . '\');">' . AWS_APP::lang()->_t('撤消重定向') . '</a>)'; } $redirect_message[] = $message; } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } } if ($question_info['has_attach']) { $question_info['attachs'] = $this->model('publish')->get_attach('question', $question_info['question_id'], 'min'); $question_info['attachs_ids'] = FORMAT::parse_attachs($question_info['question_detail'], true); } $this->model('question')->update_views($question_info['question_id']); if (get_setting('answer_unique') == 'Y') { if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { TPL::assign('user_answered', TRUE); } } $question_info['question_detail'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($question_info['question_detail']))); TPL::assign('question_id', $question_info['question_id']); TPL::assign('question_info', $question_info); TPL::assign('question_focus', $this->model('question')->has_focus_question($question_info['question_id'], $this->user_id)); TPL::assign('question_topics', $this->model('topic')->get_topics_by_item_id($question_info['question_id'], 'question')); $this->crumb($question_info['question_content'], '/m/question/' . $question_info['question_id']); TPL::assign('redirect_message', $redirect_message); if ($this->user_id) { TPL::assign('question_thanks', $this->model('question')->get_question_thanks($question_info['question_id'], $this->user_id)); TPL::assign('invite_users', $this->model('question')->get_invite_users($question_info['question_id'])); //TPL::assign('user_follow_check', $this->model("follow")->user_follow_check($this->user_id, $question_info['published_uid'])); if ($this->user_info['draft_count'] > 0) { TPL::assign('draft_content', $this->model('draft')->get_data($question_info['question_id'], 'answer', $this->user_id)); } } if (isset($_GET['answer_id']) and (!$this->user_id or $_GET['single'])) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($_GET['answer_id'])); } else { if (!$this->user_id and !$this->user_info['permission']['answer_show']) { if ($question_info['best_answer']) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($question_info['best_answer'])); } else { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, null, 'agree_count DESC'); } } else { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], calc_page_limit($_GET['page'], 20), null, 'agree_count DESC, against_count ASC, add_time ASC'); } } // 最佳回复预留 $answers[0] = ''; if (!is_array($answer_list)) { $answer_list = array(); } $answer_ids = array(); $answer_uids = array(); foreach ($answer_list as $answer) { $answer_ids[] = $answer['answer_id']; $answer_uids[] = $answer['uid']; if ($answer['has_attach']) { $has_attach_answer_ids[] = $answer['answer_id']; } } if (!in_array($question_info['best_answer'], $answer_ids) and intval($_GET['page']) < 2) { $answer_list = array_merge($this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . $question_info['best_answer']), $answer_list); } if ($answer_ids) { $answer_agree_users = $this->model('answer')->get_vote_user_by_answer_ids($answer_ids); $answer_vote_status = $this->model('answer')->get_answer_vote_status($answer_ids, $this->user_id); $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $answer_ids, $this->user_id); $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $answer_ids, $this->user_id); $answer_attachs = $this->model('publish')->get_attachs('answer', $has_attach_answer_ids, 'min'); } foreach ($answer_list as $answer) { if ($answer['has_attach']) { $answer['attachs'] = $answer_attachs[$answer['answer_id']]; $answer['insert_attach_ids'] = FORMAT::parse_attachs($answer['answer_content'], true); } $answer['user_rated_thanks'] = $answer_users_rated_thanks[$answer['answer_id']]; $answer['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer['answer_id']]; $answer['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs(FORMAT::parse_bbcode($answer['answer_content']))); $answer['agree_users'] = $answer_agree_users[$answer['answer_id']]; $answer['agree_status'] = $answer_vote_status[$answer['answer_id']]; if ($question_info['best_answer'] == $answer['answer_id'] and intval($_GET['page']) < 2) { $answers[0] = $answer; } else { $answers[] = $answer; } } if (!$answers[0]) { unset($answers[0]); } if (get_setting('answer_unique') == 'Y') { if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { TPL::assign('user_answered', TRUE); } } TPL::assign('answers_list', $answers); TPL::assign('attach_access_key', md5($this->user_id . time())); TPL::assign('human_valid', human_valid('answer_valid_hour')); $question_related_list = $this->model('question')->get_related_question_list($question_info['question_id'], $question_info['question_content']); TPL::assign('question_related_list', $question_related_list); TPL::assign('question_related_links', $this->model('related')->get_related_links('question', $question_info['question_id'])); if ($this->user_id) { if ($question_topics) { foreach ($question_topics as $key => $val) { $question_topic_ids[] = $val['topic_id']; } } if ($helpful_users = $this->model('topic')->get_helpful_users_by_topic_ids($question_topic_ids, 12)) { foreach ($helpful_users as $key => $val) { if ($val['user_info']['uid'] == $this->user_id) { unset($helpful_users[$key]); } else { $helpful_users[$key]['has_invite'] = $this->model('question')->has_question_invite($question_info['question_id'], $val['user_info']['uid'], $this->user_id); } } TPL::assign('helpful_users', $helpful_users); } } $total_page = $question_info['answer_count'] / 20; if ($total_page > intval($total_page)) { $total_page = intval($total_page) + 1; } if (!$_GET['page']) { $_GET['page'] = 1; } if ($_GET['page'] < $total_page) { $_GET['page'] = $_GET['page'] + 1; TPL::assign('next_page', $_GET['page']); } TPL::import_js(array('js/fileupload.js')); TPL::output('m/question'); }
public function index_action() { if ($this->user_id) { $this->crumb(AWS_APP::lang()->_t('精选'), '/explore'); if (!$this->user_info['email']) { HTTP::redirect('/account/complete_profile/'); } } if ($_GET['category']) { if (is_digits($_GET['category'])) { $category_info = $this->model('system')->get_category_info($_GET['category']); } else { $category_info = $this->model('system')->get_category_info_by_url_token($_GET['category']); } } if ($category_info) { TPL::assign('category_info', $category_info); $this->crumb($category_info['title'], '/category-' . $category_info['id']); $meta_description = $category_info['title']; if ($category_info['description']) { $meta_description .= ' - ' . $category_info['description']; } TPL::set_meta('description', $meta_description); } // 首页幻灯片 $slides = $this->model('slide')->get_frontend_slides(); foreach ($slides as $key => $val) { $slides[$key]['category_info'] = $this->model('slide')->get_slide_category_info($val['category']); } TPL::assign('slides', $slides); // 导航 if (TPL::is_output('block/content_nav_menu.tpl.htm', 'explore/index')) { TPL::assign('content_nav_menu', $this->model('menu')->get_nav_menu_list('explore')); } // 置顶问题 $recommend_items = $this->model('recommend')->get_recommend_homepage_items('top_question', $limit = 4); foreach ($recommend_items as $key => $item) { $question_info = $this->model('question')->get_question_info_by_id($item['item_id']); if ($question_info['has_attach']) { $question_info['attachs'] = $this->model('publish')->get_attach('question', $question_info['question_id'], 'square'); } // 答题选项 if ($question_info['quiz_id'] > 0) { $question_info['quiz_info'] = $this->model('quiz')->get_question_quiz_info_by_id($question_info['quiz_id']); } // 分类信息 $question_info['category_info'] = $this->model('system')->get_category_info($question_info['category_id']); $top_question_list[$key] = $question_info; } TPL::assign('top_question_list', $top_question_list); // 精选问题 $filter_info = array('sort_type' => $_GET['sort_type'], 'category_id' => $category_info['id'], 'difficulty' => intval($_GET['difficulty']), 'quiztype' => intval($_GET['quiztype']), 'countdown' => intval($_GET['countdown']), 'urecord' => $_GET['urecord'], 'date' => $_GET['date'], 'url_base' => '/'); TPL::assign('filter_info', $filter_info); $recommend_question_list = $this->model('question')->get_homepage_recommend_question_list($_GET['page'], get_setting('contents_per_page'), $_GET['sort_type'], $category_info['id'], $_GET['difficulty'], $_GET['quiztype'], $_GET['countdown'], $_GET['urecord'], $_GET['date'], $this->user_id); if ($recommend_question_list) { foreach ($recommend_question_list as $key => $val) { $this->model('question')->load_list_question_info($recommend_question_list[$key], $val, $this->user_id); } } TPL::assign('recommend_homepage_questions', $recommend_question_list); // TPL::assign('pagination', AWS_APP::pagination()->initialize(array( // 'base_url' => get_js_url('/sort_type-' . preg_replace("/[\(\)\.;']/", '', $_GET['sort_type']) . '__category-' . $category_info['id'] . '__difficulty-' . $_GET['difficulty'] . '__quiztype-' . $_GET['quiztype'] . '__countdown-' . $_GET['countdown'] . '__is_recommend-' . $_GET['is_recommend'] . '__urecord-' . $_GET['urecord'] . '__date-' . $_GET['date']), // 'total_rows' => $this->model('question')->get_homepage_recommend_question_list_total(), // 'per_page' => get_setting('contents_per_page'), // 'num_links' => 2 // ))->create_links()); // 精选专题 $recommend_items = $this->model('recommend')->get_recommend_homepage_items('topic', $limit = 4); foreach ($recommend_items as $key => $item) { $topic_info = $this->model('topic')->get_topic_by_id($item['item_id']); $topic_info['topic_description'] = nl2br(FORMAT::parse_bbcode($topic_info['topic_description'])); if ($topic_info['parent_id']) { $parent_topic_info = $this->model('topic')->get_topic_by_id($topic_info['parent_id']); $topic_info['category'] = $parent_topic_info['topic_title']; $topic_info['category_id'] = $parent_topic_info['topic_id']; } $recommend_homepage_topics[$key] = $topic_info; } TPL::assign('recommend_homepage_topics', $recommend_homepage_topics); // 精选知识 $recommend_items = $this->model('recommend')->get_recommend_homepage_items('article', $limit = 5); foreach ($recommend_items as $key => $item) { $article_ids[] = $item['item_id']; } // 获取文章缩略图 $article_attachs = $this->model('publish')->get_attachs('article', $article_ids, 'min'); foreach ($recommend_items as $key => $item) { $article_info = $this->model('article')->get_article_info_by_id($item['item_id']); $article_info['attachs'] = $article_attachs[$article_info['id']]; $recommend_homepage_articles[$key] = $article_info; } TPL::assign('recommend_homepage_articles', $recommend_homepage_articles); // 边栏可能感兴趣的人 if (TPL::is_output('block/sidebar_recommend_users_topics.tpl.htm', 'explore/index')) { TPL::assign('sidebar_recommend_users_topics', $this->model('module')->recommend_users_topics($this->user_id)); } // 边栏热门用户 if (TPL::is_output('block/sidebar_hot_users.tpl.htm', 'explore/index')) { TPL::assign('sidebar_hot_users', $this->model('module')->sidebar_hot_users($this->user_id, 5)); } // 边栏热门话题 if (TPL::is_output('block/sidebar_hot_topics.tpl.htm', 'explore/index')) { TPL::assign('sidebar_hot_topics', $this->model('module')->sidebar_hot_topics($category_info['id'])); } // 边栏专题 if (TPL::is_output('block/sidebar_feature.tpl.htm', 'explore/index')) { TPL::assign('feature_list', $this->model('module')->feature_list()); } // if (! $_GET['sort_type'] AND !$_GET['is_recommend']) // { // $_GET['sort_type'] = 'new'; // } // if ($_GET['sort_type'] == 'hot') // { // $posts_list = $this->model('posts')->get_hot_posts(null, $category_info['id'], null, $_GET['day'], $_GET['page'], get_setting('contents_per_page')); // } // else // { // $posts_list = $this->model('posts')->get_posts_list(null, $_GET['page'], get_setting('contents_per_page'), $_GET['sort_type'], null, $category_info['id'], $_GET['answer_count'], $_GET['day'], $_GET['is_recommend']); // } // if ($posts_list) // { // foreach ($posts_list AS $key => $val) // { // if ($val['answer_count']) // { // $posts_list[$key]['answer_users'] = $this->model('question')->get_answer_users_by_question_id($val['question_id'], 2, $val['published_uid']); // } // } // } // TPL::assign('pagination', AWS_APP::pagination()->initialize(array( // 'base_url' => get_js_url('/sort_type-' . preg_replace("/[\(\)\.;']/", '', $_GET['sort_type']) . '__category-' . $category_info['id'] . '__day-' . intval($_GET['day']) . '__is_recommend-' . intval($_GET['is_recommend'])), // 'total_rows' => $this->model('posts')->get_posts_list_total(), // 'per_page' => get_setting('contents_per_page') // ))->create_links()); // TPL::assign('posts_list', $posts_list); // TPL::assign('posts_list_bit', TPL::output('explore/ajax/list', false)); // 是否签到成功 TPL::assign('signed_in', $this->model('sign')->is_signed_today($this->user_id)); // 用户排行榜 TPL::assign('top_user_list_success_ratio', array_values($this->model('account')->get_top_users('success_ratio', 3))); TPL::assign('top_user_list_integral', array_values($this->model('account')->get_top_users('integral', 3))); TPL::import_js('js/sweetalert.min.js'); TPL::import_css('css/sweetalert.css'); TPL::output('explore/index'); }
public function publish_answer($question_id, $answer_content, $uid, $anonymous = null, $attach_access_key = null, $auto_focus = true, $reply_to_openid = true) { if (!($question_info = $this->model('question')->get_question_info_by_id($question_id))) { return false; } if (!($answer_id = $this->model('answer')->save_answer($question_id, $answer_content, $uid, $anonymous))) { return false; } if ($at_users = $this->model('question')->parse_at_user($answer_content, false, true)) { foreach ($at_users as $user_id) { if ($user_id != $uid) { $this->model('notify')->send($uid, $user_id, notify_class::TYPE_ANSWER_AT_ME, notify_class::CATEGORY_QUESTION, $question_info['question_id'], array('from_uid' => $uid, 'question_id' => $question_info['question_id'], 'item_id' => $answer_id, 'anonymous' => intval($anonymous))); } } } set_human_valid('answer_valid_hour'); if ($auto_focus) { if (!$this->model('question')->has_focus_question($question_id, $uid)) { $this->model('question')->add_focus_question($question_id, $uid, $anonymous, false); } } ACTION_LOG::save_action($uid, $answer_id, ACTION_LOG::CATEGORY_ANSWER, ACTION_LOG::ANSWER_QUESTION, $answer_content, $question_id); ACTION_LOG::save_action($uid, $question_id, ACTION_LOG::CATEGORY_QUESTION, ACTION_LOG::ANSWER_QUESTION, $answer_content, $answer_id, 0, intval($anonymous)); if ($question_info['published_uid'] != $uid) { $this->model('integral')->process($uid, 'ANSWER_QUESTION', get_setting('integral_system_config_new_answer'), '回答问题 #' . $question_id, $question_id); if (get_setting('integral_system_config_answer_change_source') == 'Y' and get_setting('integral_system_config_new_answer') <= 0) { $this->model('integral')->process($question_info['published_uid'], 'QUESTION_ANSWER', -get_setting('integral_system_config_new_answer'), '问题被回答 #' . $question_id, $question_id); } } $this->model('question')->save_last_answer($question_id, $answer_id); if ($focus_uids = $this->model('question')->get_focus_uid_by_question_id($question_id)) { foreach ($focus_uids as $focus_user) { if ($focus_user['uid'] != $uid) { $this->model('email')->action_email('NEW_ANSWER', $focus_user['uid'], get_js_url('/question/' . $question_id), array('question_title' => $question_info['question_content'])); $this->model('notify')->send($uid, $focus_user['uid'], notify_class::TYPE_NEW_ANSWER, notify_class::CATEGORY_QUESTION, $question_id, array('question_id' => $question_id, 'from_uid' => $uid, 'item_id' => $answer_id, 'anonymous' => intval($anonymous))); } } } // 删除回复邀请 $this->model('question')->answer_question_invite($question_id, $uid); if ($attach_access_key) { $this->model('publish')->update_attach('answer', $answer_id, $attach_access_key); } $this->model('question')->delete_question_uninterested($uid, $question_id); if ($weixin_user = $this->model('openid_weixin_weixin')->get_user_info_by_uid($question_info['published_uid']) and $question_info['published_uid'] != $uid) { $weixin_user_info = $this->model('account')->get_user_info_by_uid($weixin_user['uid']); if ($weixin_user_info['weixin_settings']['NEW_ANSWER'] != 'N') { $this->model('weixin')->send_text_message($weixin_user['openid'], "您的问题 [" . $question_info['question_content'] . "] 收到了新的回答:\n\n" . strip_tags($answer_content), $this->model('openid_weixin_weixin')->redirect_url('/m/question/' . $question_id)); } } $this->model('posts')->set_posts_index($question_id, 'question'); if ($reply_to_openid) { if ($question_info['weibo_msg_id']) { $this->model('openid_weibo_weibo')->reply_answer_to_sina($question_info['question_id'], cjk_substr($answer_content, 0, 110, 'UTF-8', '...')); } if ($question_info['received_email_id']) { $this->model('edm')->reply_answer_by_email($question_info['question_id'], nl2br(FORMAT::parse_bbcode($answer_content))); } } return $answer_id; }
public function index_action() { if (!($question_info = $this->model('question')->get_question_info_by_id($_GET['id']))) { H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('问题不存在或已被删除'))); } if (!$_GET['sort'] or $_GET['sort'] != 'ASC') { $_GET['sort'] = 'DESC'; } else { $_GET['sort'] = 'ASC'; } if (get_setting('unfold_question_comments') == 'Y') { $_GET['comment_unfold'] = 'all'; } $question_info['redirect'] = $this->model('question')->get_redirect($question_info['question_id']); if ($question_info['redirect']['target_id']) { $target_question = $this->model('question')->get_question_info_by_id($question_info['redirect']['target_id']); } if (is_digits($_GET['rf']) and $_GET['rf']) { if ($from_question = $this->model('question')->get_question_info_by_id($_GET['rf'])) { $redirect_message[] = AWS_APP::lang()->_t('从问题 %s 跳转而来', '<a href="' . get_js_url('/question/' . $_GET['rf'] . '?rf=false') . '">' . $from_question['question_content'] . '</a>'); } } if ($question_info['redirect'] and !$_GET['rf']) { if ($target_question) { HTTP::redirect('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']); } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } else { if ($question_info['redirect']) { if ($target_question) { $message = AWS_APP::lang()->_t('此问题将跳转至') . ' <a href="' . get_js_url('/question/' . $question_info['redirect']['target_id'] . '?rf=' . $question_info['question_id']) . '">' . $target_question['question_content'] . '</a>'; if ($this->user_id and ($this->user_info['permission']['is_administortar'] or $this->user_info['permission']['is_moderator'] or !$this->question_info['lock'] and $this->user_info['permission']['redirect_question'])) { $message .= ' (<a href="javascript:;" onclick="AWS.ajax_request(G_BASE_URL + \'/question/ajax/redirect/\', \'item_id=' . $question_info['question_id'] . '\');">' . AWS_APP::lang()->_t('撤消重定向') . '</a>)'; } $redirect_message[] = $message; } else { $redirect_message[] = AWS_APP::lang()->_t('重定向目标问题已被删除, 将不再重定向问题'); } } } $question_info['user_info'] = $this->model('account')->get_user_info_by_uid($question_info['published_uid'], true); if ($_GET['column'] != 'log') { $this->model('question')->calc_popular_value($question_info['question_id']); $this->model('question')->update_views($question_info['question_id']); if (is_digits($_GET['uid'])) { $answer_list_where[] = 'uid = ' . intval($_GET['uid']); $answer_count_where = 'uid = ' . intval($_GET['uid']); } else { if ($_GET['uid'] == 'focus' and $this->user_id) { if ($friends = $this->model('follow')->get_user_friends($this->user_id, false)) { foreach ($friends as $key => $val) { $follow_uids[] = $val['uid']; } } else { $follow_uids[] = 0; } $answer_list_where[] = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_count_where = 'uid IN(' . implode($follow_uids, ',') . ')'; $answer_order_by = 'add_time ASC'; } else { if ($_GET['sort_key'] == 'add_time') { $answer_order_by = $_GET['sort_key'] . " " . $_GET['sort']; } else { $answer_order_by = "agree_count " . $_GET['sort'] . ", against_count ASC, add_time ASC"; } } } if ($answer_count_where) { $answer_count = $this->model('answer')->get_answer_count_by_question_id($question_info['question_id'], $answer_count_where); } else { $answer_count = $question_info['answer_count']; } if (isset($_GET['answer_id']) and (!$this->user_id or $_GET['single'])) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($_GET['answer_id'])); } else { if (!$this->user_id and !$this->user_info['permission']['answer_show']) { if ($question_info['best_answer']) { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . intval($question_info['best_answer'])); } else { $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, null, 'agree_count DESC'); } } else { if ($answer_list_where) { $answer_list_where = implode(' AND ', $answer_list_where); } $answer_list = $this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], calc_page_limit($_GET['page'], 100), $answer_list_where, $answer_order_by); } } // 最佳回复预留 $answers[0] = ''; if (!is_array($answer_list)) { $answer_list = array(); } $answer_ids = array(); $answer_uids = array(); foreach ($answer_list as $answer) { $answer_ids[] = $answer['answer_id']; $answer_uids[] = $answer['uid']; if ($answer['has_attach']) { $has_attach_answer_ids[] = $answer['answer_id']; } } if (!in_array($question_info['best_answer'], $answer_ids) and intval($_GET['page']) < 2) { $answer_list = array_merge($this->model('answer')->get_answer_list_by_question_id($question_info['question_id'], 1, 'answer_id = ' . $question_info['best_answer']), $answer_list); } if ($answer_ids) { $answer_vote_status = $this->model('answer')->get_answer_vote_status($answer_ids, $this->user_id); $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $answer_ids, $this->user_id); $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $answer_ids, $this->user_id); } foreach ($answer_list as $answer) { $answer['user_rated_thanks'] = $answer_users_rated_thanks[$answer['answer_id']]; $answer['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer['answer_id']]; $answer['answer_content'] = cjk_substr(strip_ubb($answer['answer_content']), 0, 100); //$answer['agree_users'] = $answer_agree_users[$answer['answer_id']]; $answer['agree_status'] = $answer_vote_status[$answer['answer_id']]; $answer['user_info']['avatar_file'] = get_avatar_url($answer['uid']); if ($question_info['best_answer'] == $answer['answer_id'] and intval($_GET['page']) < 2) { $answers[0] = $answer; } else { $answers[] = $answer; } } if (!$answers[0]) { unset($answers[0]); } $question_info['user_answered'] = 0; //如果系统设置了用户只能回答一次 if (get_setting('answer_unique') == 'Y') { if ($this->model('answer')->has_answer_by_uid($question_info['question_id'], $this->user_id)) { $question_info['user_answered'] = 1; } else { $question_info['user_answered'] = 0; } } } $question_info['user_follow_check'] = 0; $question_info['user_question_focus'] = 0; $question_info['user_thanks'] = 0; if ($this->user_id) { if ($this->model('question')->get_question_thanks($question_info['question_id'], $this->user_id)) { $question_info['user_thanks'] = 1; } //当前用户是否已关注该问题作者 if ($this->model('follow')->user_follow_check($this->user_id, $question_info['published_uid'])) { $question_info['user_follow_check'] = 1; } if ($this->model('question')->has_focus_question($question_info['question_id'], $this->user_id)) { $question_info['user_question_focus'] = 1; } } $question_info['question_detail'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($question_info['question_detail']))); $question_topics = $this->model('topic')->get_topics_by_item_id($question_info['question_id'], 'question'); $question_info['answer_count'] = $answer_count; //clean $question_key = array('question_id', 'question_content', 'question_detail', 'add_time', 'update_time', 'answer_count', 'view_count', 'agree_count', 'focus_count', 'against_count', 'thanks_count', 'comment_count', 'user_info', 'user_answered', 'user_thanks', 'user_follow_check', 'user_question_focus'); $user_key = array('uid', 'user_name', 'namecard_pic', 'signature'); $topics_key = array('topic_id', 'topic_title'); foreach ($question_info as $k => $v) { if (!in_array($k, $question_key)) { unset($question_info[$k]); } } //作者信息 if (!empty($question_info['user_info'])) { foreach ($question_info['user_info'] as $k => $v) { if (!in_array($k, $user_key)) { unset($question_info['user_info'][$k]); } } $question_info['user_info']['avatar_file'] = get_avatar_url($question_info['user_info']['uid'], 'mid'); } if (!empty($answers)) { foreach ($answers as $key => $value) { if (!empty($value['user_info'])) { foreach ($value['user_info'] as $k => $v) { if (!in_array($k, $user_key)) { unset($answers[$key]['user_info'][$k]); } } $answers[$key]['user_info']['avatar_file'] = get_avatar_url($answers[$key]['user_info']['uid'], 'mid'); } $answers[$key]['answer_content'] = strip_tags($value['answer_content']); } } if (!empty($question_topics)) { foreach ($question_topics as $key => $val) { foreach ($val as $k => $v) { if (!in_array($k, $topics_key)) { unset($question_topics[$key][$k]); } } } } //$question_info['answers'] = $answers; H::ajax_json_output(AWS_APP::RSM(array('question_info' => $question_info, 'question_topics' => $question_topics, 'answers' => array_values($answers)), 1, null)); }
public function load_detailed_question_info($question_id) { if (!($question_info = $this->get_question_info_by_id($question_id))) { return false; } $question_info['user_info'] = $this->model('account')->get_user_info_by_uid($question_info['published_uid'], true); if ($question_info['category_id'] and get_setting('category_enable') == 'Y') { $question_info['category_info'] = $this->model('system')->get_category_info($question_info['category_id']); } if ($question_info['has_attach']) { $question_info['attachs'] = $this->model('publish')->get_attach('question', $question_info['question_id'], 'min'); $question_info['attachs_ids'] = FORMAT::parse_attachs($question_info['question_detail'], true); } $question_info['question_detail'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($question_info['question_detail']))); // 答题选项 if (intval($question_info['quiz_id']) > 0) { $question_info['question_quiz'] = $this->model('quiz')->get_question_quiz_info_by_id($question_info['quiz_id']); } return $question_info; }
public function preview_action() { if (!$_GET['action'] or $_GET['action'] != 'edit') { $_GET['action'] = 'preview'; } else { $this->crumb(AWS_APP::lang()->_t('待审项修改'), 'admin/approval/edit/'); TPL::assign('menu_list', $this->model('admin')->fetch_menu_list(300)); } switch ($_GET['type']) { case 'weibo_msg': if (get_setting('weibo_msg_enabled') != 'question') { H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('导入微博消息至问题未启用'))); } $approval_item = $this->model('openid_weibo_weibo')->get_msg_info_by_id($_GET['id']); if ($approval_item['question_id']) { exit; } $approval_item['type'] = 'weibo_msg'; break; case 'received_email': $receiving_email_global_config = get_setting('receiving_email_global_config'); if ($receiving_email_global_config['enabled'] != 'question') { H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('导入邮件至问题未启用'))); } $approval_item = $this->model('edm')->get_received_email_by_id($_GET['id']); if ($approval_item['question_id']) { exit; } $approval_item['type'] = 'received_email'; break; default: $approval_item = $this->model('publish')->get_approval_item($_GET['id']); break; } if (!$approval_item) { exit; } switch ($approval_item['type']) { case 'question': $approval_item['title'] = htmlspecialchars($approval_item['data']['question_content']); $approval_item['content'] = htmlspecialchars($approval_item['data']['question_detail']); $approval_item['topics'] = htmlspecialchars(implode(',', $approval_item['data']['topics'])); break; case 'answer': $approval_item['content'] = htmlspecialchars($approval_item['data']['answer_content']); break; case 'article': $approval_item['title'] = htmlspecialchars($approval_item['data']['title']); $approval_item['content'] = htmlspecialchars($approval_item['data']['message']); break; case 'article_comment': $approval_item['content'] = htmlspecialchars($approval_item['data']['message']); break; case 'weibo_msg': $approval_item['content'] = htmlspecialchars($approval_item['text']); if ($approval_item['has_attach']) { $approval_item['attachs'] = $this->model('publish')->get_attach('weibo_msg', $_GET['id']); } break; case 'received_email': $approval_item['title'] = htmlspecialchars($approval_item['subject']); $approval_item['content'] = htmlspecialchars($approval_item['content']); break; } if ($approval_item['data']['attach_access_key']) { $approval_item['attachs'] = $this->model('publish')->get_attach_by_access_key($approval_item['type'], $approval_item['data']['attach_access_key']); } if ($_GET['action'] != 'edit') { $approval_item['content'] = nl2br(FORMAT::parse_bbcode($approval_item['content'])); } TPL::assign('approval_item', $approval_item); TPL::output('admin/approval/' . $_GET['action']); }
public function index_action() { if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if (is_mobile()) { HTTP::redirect('/m/article/' . $_GET['id']); } if (!($article_info = $this->model('article')->get_article_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('文章不存在或已被删除'), '/'); } if ($article_info['has_attach']) { $article_info['attachs'] = $this->model('publish')->get_attach('article', $article_info['id'], 'min'); $article_info['attachs_ids'] = FORMAT::parse_attachs($article_info['message'], true); } $article_info['user_info'] = $this->model('account')->get_user_info_by_uid($article_info['uid'], true); $article_info['message'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($article_info['message']))); if ($this->user_id) { $article_info['vote_info'] = $this->model('article')->get_article_vote_by_id('article', $article_info['id'], null, $this->user_id); } $article_info['vote_users'] = $this->model('article')->get_article_vote_users_by_id('article', $article_info['id'], 1, 10); TPL::assign('article_info', $article_info); $article_topics = $this->model('topic')->get_topics_by_item_id($article_info['id'], 'article'); if ($article_topics) { TPL::assign('article_topics', $article_topics); foreach ($article_topics as $topic_info) { $article_topic_ids[] = $topic_info['topic_id']; } } TPL::assign('reputation_topics', $this->model('people')->get_user_reputation_topic($article_info['user_info']['uid'], $user['reputation'], 5)); $this->crumb($article_info['title'], '/article/' . $article_info['id']); TPL::assign('human_valid', human_valid('answer_valid_hour')); if ($_GET['item_id']) { $comments[] = $this->model('article')->get_comment_by_id($_GET['item_id']); } else { $comments = $this->model('article')->get_comments($article_info['id'], $_GET['page'], 100); } if ($comments and $this->user_id) { foreach ($comments as $key => $val) { $comments[$key]['vote_info'] = $this->model('article')->get_article_vote_by_id('comment', $val['id'], 1, $this->user_id); $comments[$key]['message'] = $this->model('question')->parse_at_user($val['message']); } } if ($this->user_id) { TPL::assign('user_follow_check', $this->model('follow')->user_follow_check($this->user_id, $article_info['uid'])); } TPL::assign('question_related_list', $this->model('question')->get_related_question_list(null, $article_info['title'])); $this->model('article')->update_views($article_info['id']); TPL::assign('comments', $comments); TPL::assign('comments_count', $article_info['comments']); TPL::assign('human_valid', human_valid('answer_valid_hour')); TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/article/id-' . $article_info['id']), 'total_rows' => $article_info['comments'], 'per_page' => 100))->create_links()); TPL::set_meta('keywords', implode(',', $this->model('system')->analysis_keyword($article_info['title']))); TPL::set_meta('description', $article_info['title'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($article_info['message'])), 0, 128, 'UTF-8', '...')); TPL::assign('attach_access_key', md5($this->user_id . time())); $recommend_posts = $this->model('posts')->get_recommend_posts_by_topic_ids($article_topic_ids); if ($recommend_posts) { foreach ($recommend_posts as $key => $value) { if ($value['id'] and $value['id'] == $article_info['id']) { unset($recommend_posts[$key]); break; } } TPL::assign('recommend_posts', $recommend_posts); } TPL::output('article/index'); }
public function article_action() { if ($_GET['notification_id']) { $this->model('notify')->read_notification($_GET['notification_id'], $this->user_id); } if (!($article_info = $this->model('article')->get_article_info_by_id($_GET['id']))) { H::redirect_msg(AWS_APP::lang()->_t('文章不存在或已被删除'), '/home/explore/'); } $this->crumb($article_info['title'], '/article/' . $article_info['id']); if ($article_info['has_attach']) { $article_info['attachs'] = $this->model('publish')->get_attach('article', $article_info['id'], 'min'); $article_info['attachs_ids'] = FORMAT::parse_attachs($article_info['message'], true); } $article_info['user_info'] = $this->model('account')->get_user_info_by_uid($article_info['uid'], true); $article_info['message'] = FORMAT::parse_attachs(nl2br(FORMAT::parse_bbcode($article_info['message']))); if ($this->user_id) { $article_info['vote_info'] = $this->model('article')->get_article_vote_by_id('article', $article_info['id'], null, $this->user_id); } $article_info['vote_users'] = $this->model('article')->get_article_vote_users_by_id('article', $article_info['id'], null, 10); TPL::assign('article_info', $article_info); TPL::assign('article_topics', $this->model('topic')->get_topics_by_item_id($article_info['id'], 'article')); if ($_GET['item_id']) { $comments[] = $this->model('article')->get_comment_by_id($_GET['item_id']); } else { $comments = $this->model('article')->get_comments($article_info['id'], $_GET['page'], 100); } if ($comments and $this->user_id) { foreach ($comments as $key => $val) { $comments[$key]['vote_info'] = $this->model('article')->get_article_vote_by_id('comment', $val['id'], 1, $this->user_id); } } $this->model('article')->update_views($article_info['id']); TPL::assign('comments', $comments); TPL::assign('comments_count', $article_info['comments']); TPL::assign('human_valid', human_valid('answer_valid_hour')); TPL::assign('pagination', AWS_APP::pagination()->initialize(array('base_url' => get_js_url('/m/article/id-' . $article_info['id']), 'total_rows' => $article_info['comments'], 'per_page' => 100))->create_links()); TPL::output('m/article'); }
public function index_action() { if (is_mobile()) { HTTP::redirect('/m/topic/' . $_GET['id']); } if (is_digits($_GET['id'])) { if (!($topic_info = $this->model('topic')->get_topic_by_id($_GET['id']))) { $topic_info = $this->model('topic')->get_topic_by_title($_GET['id']); } } else { if (!($topic_info = $this->model('topic')->get_topic_by_title($_GET['id']))) { $topic_info = $this->model('topic')->get_topic_by_url_token($_GET['id']); } } if (!$topic_info) { header('HTTP/1.1 404 Not Found'); H::redirect_msg(AWS_APP::lang()->_t('话题不存在'), '/'); } if ($topic_info['merged_id'] and $topic_info['merged_id'] != $topic_info['topic_id']) { if ($this->model('topic')->get_topic_by_id($topic_info['merged_id'])) { HTTP::redirect('/topic/' . $topic_info['merged_id'] . '?rf=' . $topic_info['topic_id']); } else { $this->model('topic')->remove_merge_topic($topic_info['topic_id'], $topic_info['merged_id']); } } if (urldecode($topic_info['url_token']) != $_GET['id']) { HTTP::redirect('/topic/' . $topic_info['url_token'] . '?rf=' . $_GET['rf']); } if (is_digits($_GET['rf']) and $_GET['rf']) { if ($from_topic = $this->model('topic')->get_topic_by_id($_GET['rf'])) { $redirect_message[] = AWS_APP::lang()->_t('话题 (%s) 已与当前话题合并', $from_topic['topic_title']); } } if ($topic_info['seo_title']) { TPL::assign('page_title', $topic_info['seo_title']); } else { $this->crumb($topic_info['topic_title'], '/topic/' . $topic_info['url_token']); } if ($this->user_id) { $topic_info['has_focus'] = $this->model('topic')->has_focus_topic($this->user_id, $topic_info['topic_id']); } if ($topic_info['topic_description']) { TPL::set_meta('description', $topic_info['topic_title'] . ' - ' . cjk_substr(str_replace("\r\n", ' ', strip_tags($topic_info['topic_description'])), 0, 128, 'UTF-8', '...')); } $topic_info['topic_description'] = nl2br(FORMAT::parse_bbcode($topic_info['topic_description'])); TPL::assign('topic_info', $topic_info); TPL::assign('best_answer_users', $this->model('topic')->get_best_answer_users_by_topic_id($topic_info['topic_id'], 5)); switch ($topic_info['model_type']) { default: $related_topics_ids = array(); $page_keywords[] = $topic_info['topic_title']; if ($related_topics = $this->model('topic')->related_topics($topic_info['topic_id'])) { foreach ($related_topics as $key => $val) { $related_topics_ids[$val['topic_id']] = $val['topic_id']; $page_keywords[] = $val['topic_title']; } } TPL::set_meta('keywords', implode(',', $page_keywords)); TPL::set_meta('description', cjk_substr(str_replace("\r\n", ' ', strip_tags($topic_info['topic_description'])), 0, 128, 'UTF-8', '...')); if ($child_topic_ids = $this->model('topic')->get_child_topic_ids($topic_info['topic_id'])) { foreach ($child_topic_ids as $key => $topic_id) { $related_topics_ids[$topic_id] = $topic_id; } } TPL::assign('related_topics', $related_topics); $log_list = ACTION_LOG::get_action_by_event_id($topic_info['topic_id'], 10, ACTION_LOG::CATEGORY_TOPIC, implode(',', array(ACTION_LOG::ADD_TOPIC, ACTION_LOG::MOD_TOPIC, ACTION_LOG::MOD_TOPIC_DESCRI, ACTION_LOG::MOD_TOPIC_PIC, ACTION_LOG::DELETE_TOPIC, ACTION_LOG::ADD_RELATED_TOPIC, ACTION_LOG::DELETE_RELATED_TOPIC)), -1); $log_list = $this->model('topic')->analysis_log($log_list); $contents_topic_id = $topic_info['topic_id']; $contents_topic_title = $topic_info['topic_title']; if ($merged_topics = $this->model('topic')->get_merged_topic_ids($topic_info['topic_id'])) { foreach ($merged_topics as $key => $val) { $merged_topic_ids[] = $val['source_id']; } $contents_topic_id .= ',' . implode(',', $merged_topic_ids); if ($merged_topics_info = $this->model('topic')->get_topics_by_ids($merged_topic_ids)) { foreach ($merged_topics_info as $key => $val) { $merged_topic_title[] = $val['topic_title']; } } if ($merged_topic_title) { $contents_topic_title .= ',' . implode(',', $merged_topic_title); } } $contents_related_topic_ids = array_merge($related_topics_ids, explode(',', $contents_topic_id)); TPL::assign('contents_related_topic_ids', implode(',', $contents_related_topic_ids)); if ($posts_list = $this->model('posts')->get_posts_list(null, 1, get_setting('contents_per_page'), 'new', $contents_related_topic_ids)) { foreach ($posts_list as $key => $val) { if ($val['answer_count']) { $posts_list[$key]['answer_users'] = $this->model('question')->get_answer_users_by_question_id($val['question_id'], 2, $val['published_uid']); } } } TPL::assign('posts_list', $posts_list); TPL::assign('all_list_bit', TPL::output('explore/ajax/list', false)); if ($posts_list = $this->model('posts')->get_posts_list(null, 1, get_setting('contents_per_page'), null, $contents_related_topic_ids, null, null, 30, true)) { foreach ($posts_list as $key => $val) { if ($val['answer_count']) { $posts_list[$key]['answer_users'] = $this->model('question')->get_answer_users_by_question_id($val['question_id'], 2, $val['published_uid']); } } } TPL::assign('topic_recommend_list', $posts_list); TPL::assign('posts_list', $posts_list); TPL::assign('recommend_list_bit', TPL::output('explore/ajax/list', false)); TPL::assign('list', $this->model('topic')->get_topic_best_answer_action_list($contents_topic_id, $this->user_id, get_setting('contents_per_page'))); TPL::assign('best_questions_list_bit', TPL::output('home/ajax/index_actions', false)); TPL::assign('posts_list', $this->model('posts')->get_posts_list('question', 1, get_setting('contents_per_page'), 'new', explode(',', $contents_topic_id))); TPL::assign('all_questions_list_bit', TPL::output('explore/ajax/list', false)); TPL::assign('posts_list', $this->model('posts')->get_posts_list('article', 1, get_setting('contents_per_page'), 'new', explode(',', $contents_topic_id))); TPL::assign('articles_list_bit', TPL::output('explore/ajax/list', false)); TPL::assign('contents_topic_id', $contents_topic_id); TPL::assign('contents_topic_title', $contents_topic_title); TPL::assign('log_list', $log_list); TPL::assign('redirect_message', $redirect_message); if ($topic_info['parent_id']) { TPL::assign('parent_topic_info', $this->model('topic')->get_topic_by_id($topic_info['parent_id'])); } TPL::output('topic/index'); break; } }
public function add_questions_to_mpnews($question_ids) { $questions_info = $this->model('question')->get_question_info_by_ids($question_ids); if (!$questions_info) { return false; } foreach ($questions_info as $question_info) { $published_uids[] = $question_info['published_uid']; } $users_info = $this->model('account')->get_user_info_by_uids($published_uids); foreach ($questions_info as $question_info) { $user_info = $users_info[$question_info['published_uid']]; $img = get_setting('upload_dir') . '/avatar/' . $this->model('account')->get_avatar($user_info['uid'], 'max'); if (!is_file($img)) { $img = ROOT_PATH . 'static/common/avatar-max-img.jpg'; } $result = $this->model('openid_weixin_weixin')->upload_file($img, 'image'); if (!$result) { return AWS_APP::lang()->_t('远程服务器忙'); } if ($result['errmsg']) { return $result['errmsg']; } $this->mpnews['articles'][] = array('thumb_media_id' => $result['media_id'], 'author' => $user_info['user_name'], 'title' => $question_info['question_content'], 'content_source_url' => get_js_url('/m/question/' . $question_info['question_id']), 'content' => nl2br(FORMAT::parse_bbcode($question_info['question_detail'])), 'show_cover_pic' => '0'); $this->to_save_questions[$question_info['question_id']] = array('id' => $question_info['question_id'], 'title' => $question_info['question_content']); } }
public function get_answer_info_action() { if (isset($_GET['answer_id'])) { $answer_id = trim($_GET['answer_id']); } $question_answer = $this->model('test')->get_answer_by_id($answer_id); // here should parse answer_content for get img url directly by anxiang.xiao 20150827 $question_answer['answer_content'] = $this->model('question')->parse_at_user(FORMAT::parse_attachs2(nl2br(FORMAT::parse_bbcode($question_answer['answer_content'])))); echo json_encode($array = array("value" => $question_answer)); }