public function get_favorite_article_action() { if (empty($_GET['page'])) { $_GET['page'] = 1; } if (empty($_GET['per_page'])) { $_GET['per_page'] = 10; } $uid = $this->user_id; if (!empty($_GET['uid'])) { $uid = intval($_GET['uid']); } $data = $this->model('api')->get_favorite_article($uid, $_GET['page'], $_GET['per_page']); if (!empty($data['rows'])) { foreach ($data['rows'] as $k => $v) { $data['rows'][$k]['message'] = cjk_substr(strip_ubb($v['message']), 0, 80, 'utf-8'); } } if (empty($data['rows'])) { $data['rows'] = null; $data['total_rows'] = 0; } H::ajax_json_output(AWS_APP::RSM($data, 1, null)); }
public function home_activity($uid, $limit = 10) { // 我关注的话题 if ($user_focus_topics_ids = $this->model('topic')->get_focus_topic_ids_by_uid($uid)) { if ($user_focus_topics_questions_ids = $this->model('topic')->get_item_ids_by_topics_ids($user_focus_topics_ids, 'question', 1000)) { if ($user_focus_topics_info = $this->model('question')->get_topic_info_by_question_ids($user_focus_topics_questions_ids)) { foreach ($user_focus_topics_info as $key => $user_focus_topics_info_by_question) { foreach ($user_focus_topics_info_by_question as $_key => $_val) { if (!in_array($_val['topic_id'], $user_focus_topics_ids)) { unset($user_focus_topics_info[$key][$_key]); } } } } } $user_focus_topics_article_ids = $this->model('topic')->get_item_ids_by_topics_ids($user_focus_topics_ids, 'article', 1000); } // 我关注的问题 /*if ($user_focus_questions_ids = $this->model('question')->get_focus_question_ids_by_uid($uid)) { // 回复问题 $where_in[] = "(associate_type = " . ACTION_LOG::CATEGORY_QUESTION . " AND associate_id IN (" . implode(',', $user_focus_questions_ids) . ") AND associate_action = " . ACTION_LOG::ANSWER_QUESTION . " AND uid <> " . $uid . ")"; }*/ // 我关注的话题 if ($user_focus_topics_questions_ids) { // 回复问题, 新增问题, 赞同答案 $where_in[] = "(associate_type = " . ACTION_LOG::CATEGORY_QUESTION . " AND associate_id IN (" . implode(',', $user_focus_topics_questions_ids) . ") AND associate_action IN (" . ACTION_LOG::ANSWER_QUESTION . ", " . ACTION_LOG::ADD_QUESTION . ", " . ACTION_LOG::ADD_AGREE . ") AND uid <> " . $uid . ")"; } if ($user_focus_topics_article_ids) { // 发表文章, 文章评论 $where_in[] = "(associate_id IN (" . implode(',', $user_focus_topics_article_ids) . ") AND associate_action IN (" . ACTION_LOG::ADD_ARTICLE . ", " . ACTION_LOG::ADD_COMMENT_ARTICLE . ") AND uid <> " . $uid . ")"; } // 我关注的人 if ($user_follow_uids = $this->model('follow')->get_user_friends_ids($uid)) { // 添加问题, 回复问题, 添加文章 $where_in[] = "(uid IN (" . implode(',', $user_follow_uids) . ") AND associate_action IN(" . ACTION_LOG::ADD_QUESTION . ',' . ACTION_LOG::ANSWER_QUESTION . ',' . ACTION_LOG::ADD_ARTICLE . ',' . ACTION_LOG::ADD_COMMENT_ARTICLE . '))'; // 增加赞同, 文章评论 $where_in[] = "(uid IN (" . implode(',', $user_follow_uids) . ") AND associate_action IN(" . ACTION_LOG::ADD_AGREE_ARTICLE . ", " . ACTION_LOG::ADD_COMMENT_ARTICLE . ") AND uid <> " . $uid . ")"; // 添加问题关注 if ($user_focus_questions_ids) { $where_in[] = "(uid IN (" . implode(',', $user_follow_uids) . ") AND associate_action = " . ACTION_LOG::ADD_REQUESTION_FOCUS . " AND associate_id NOT IN (" . implode(',', $user_focus_questions_ids) . "))"; } else { $where_in[] = "(uid IN (" . implode(',', $user_follow_uids) . ") AND associate_action = " . ACTION_LOG::ADD_REQUESTION_FOCUS . ")"; } } else { $user_follow_uids = array(); } // 添加问题, 添加文章 $where_in[] = "(associate_action IN (" . ACTION_LOG::ADD_QUESTION . ", " . ACTION_LOG::ADD_ARTICLE . ") AND uid = " . $uid . ")"; if ($questions_uninterested_ids = $this->model('question')->get_question_uninterested($uid)) { $where = "(associate_type = " . ACTION_LOG::CATEGORY_QUESTION . " AND associate_id NOT IN (" . implode(',', $questions_uninterested_ids) . "))"; } else { $where = "(associate_type = " . ACTION_LOG::CATEGORY_QUESTION . ")"; } if ($where_in and $where) { $where .= ' AND (' . implode(' OR ', $where_in) . ')'; } else { if ($where_in) { $where = implode(' OR ', $where_in); } } if (!($action_list = ACTION_LOG::get_actions_fresh_by_where($where, $limit))) { return false; } foreach ($action_list as $key => $val) { if (in_array($val['associate_action'], array(ACTION_LOG::ADD_ARTICLE, ACTION_LOG::ADD_AGREE_ARTICLE, ACTION_LOG::ADD_COMMENT_ARTICLE))) { $action_list_article_ids[] = $val['associate_id']; if ($val['associate_action'] == ACTION_LOG::ADD_COMMENT_ARTICLE and $val['associate_attached']) { $action_list_article_comment_ids[] = $val['associate_attached']; } } else { if (in_array($val['associate_action'], array(ACTION_LOG::ADD_LIKE_PROJECT, ACTION_LOG::ADD_SUPPORT_PROJECT))) { $action_list_project_ids[] = $val['associate_id']; } else { $action_list_question_ids[] = $val['associate_id']; if (in_array($val['associate_action'], array(ACTION_LOG::ANSWER_QUESTION, ACTION_LOG::ADD_AGREE)) and $val['associate_attached']) { $action_list_answer_ids[] = $val['associate_attached']; } } } if (!$action_list_uids[$val['uid']]) { $action_list_uids[$val['uid']] = $val['uid']; } } if ($action_list_question_ids) { $question_infos = $this->model('question')->get_question_info_by_ids($action_list_question_ids); foreach ($question_infos as $key => $val) { $question_infos[$key]['question_detail'] = strip_ubb($val['question_detail']); } } if ($action_list_answer_ids) { $answer_infos = $this->model('answer')->get_answers_by_ids($action_list_answer_ids); foreach ($answer_infos as $key => $val) { $answer_infos[$key]['answer_content'] = strip_ubb($val['answer_content']); } $answer_attachs = $this->model('publish')->get_attachs('answer', $action_list_answer_ids, 'min'); } if ($action_list_project_ids) { $project_infos = $this->model('project')->get_project_info_by_ids($action_list_project_ids); foreach ($project_infos as $key => $val) { $project_infos[$key]['description'] = strip_ubb($val['description']); } } if ($action_list_uids) { $user_info_lists = $this->model('account')->get_user_info_by_uids($action_list_uids, true); } if ($action_list_article_ids) { $article_infos = $this->model('article')->get_article_info_by_ids($action_list_article_ids); foreach ($article_infos as $key => $val) { $article_infos[$key]['message'] = strip_ubb($val['message']); } } if ($action_list_article_comment_ids) { $article_comment = $this->model('article')->get_comments_by_ids($action_list_article_comment_ids); } // 重组信息 foreach ($action_list as $key => $val) { $action_list[$key]['user_info'] = $user_info_lists[$val['uid']]; if ($user_focus_topics_info[$val['associate_id']] and !in_array($action_list[$key]['uid'], $user_follow_uids) and $action_list[$key]['uid'] != $uid) { $topic_info = end($user_focus_topics_info[$val['associate_id']]); } else { unset($topic_info); } switch ($val['associate_action']) { case ACTION_LOG::ADD_ARTICLE: case ACTION_LOG::ADD_AGREE_ARTICLE: case ACTION_LOG::ADD_COMMENT_ARTICLE: $article_info = $article_infos[$val['associate_id']]; $action_list[$key]['title'] = $article_info['title']; $action_list[$key]['link'] = get_js_url('/article/' . $article_info['id']); $action_list[$key]['article_info'] = $article_info; if ($val['associate_action'] == ACTION_LOG::ADD_COMMENT_ARTICLE) { $action_list[$key]['comment_info'] = $article_comment[$val['associate_attached']]; } break; case ACTION_LOG::ADD_LIKE_PROJECT: case ACTION_LOG::ADD_SUPPORT_PROJECT: $project_info = $project_infos[$val['associate_id']]; $action_list[$key]['title'] = $project_info['title']; $action_list[$key]['link'] = get_js_url('/project/' . $project_info['id']); $action_list[$key]['project_info'] = $project_info; break; default: $question_info = $question_infos[$val['associate_id']]; $action_list[$key]['title'] = $question_info['question_content']; $action_list[$key]['link'] = get_js_url('/question/' . $question_info['question_id']); // 是否关注 if ($user_focus_questions_ids) { if (in_array($question_info['question_id'], $user_focus_questions_ids)) { $question_info['has_focus'] = TRUE; } } // 对于回复问题的 if ($answer_infos[$val['associate_attached']] and in_array($val['associate_action'], array(ACTION_LOG::ANSWER_QUESTION, ACTION_LOG::ADD_AGREE))) { $action_list[$key]['answer_info'] = $answer_infos[$val['associate_attached']]; } $action_list[$key]['question_info'] = $question_info; // 处理回复 if ($action_list[$key]['answer_info']['answer_id']) { if ($action_list[$key]['answer_info']['anonymous'] and $val['associate_action'] == ACTION_LOG::ANSWER_QUESTION) { unset($action_list[$key]); continue; } $final_list_answer_ids[] = $action_list[$key]['answer_info']['answer_id']; if ($action_list[$key]['answer_info']['has_attach']) { $action_list[$key]['answer_info']['attachs'] = $answer_attachs[$action_list[$key]['answer_info']['answer_id']]; } } break; } if ($action_list[$key]) { $action_list[$key]['last_action_str'] = ACTION_LOG::format_action_data($val['associate_action'], $val['uid'], $user_info_lists[$val['uid']]['user_name'], $question_info, $topic_info); } } if ($final_list_answer_ids) { $answer_agree_users = $this->model('answer')->get_vote_user_by_answer_ids($final_list_answer_ids); $answer_vote_status = $this->model('answer')->get_answer_vote_status($final_list_answer_ids, $uid); $answer_users_rated_thanks = $this->model('answer')->users_rated('thanks', $final_list_answer_ids, $uid); $answer_users_rated_uninterested = $this->model('answer')->users_rated('uninterested', $final_list_answer_ids, $uid); } foreach ($action_list as $key => $val) { if (isset($action_list[$key]['answer_info']['answer_id'])) { $answer_id = $action_list[$key]['answer_info']['answer_id']; if (isset($answer_agree_users[$answer_id])) { $action_list[$key]['answer_info']['agree_users'] = $answer_agree_users[$answer_id]; } if (isset($answer_vote_status[$answer_id])) { $action_list[$key]['answer_info']['agree_status'] = $answer_vote_status[$answer_id]; } if (isset($answer_users_rated_thanks[$answer_id])) { $action_list[$key]['answer_info']['user_rated_thanks'] = $answer_users_rated_thanks[$answer_id]; } if (isset($answer_users_rated_uninterested[$answer_id])) { $action_list[$key]['answer_info']['user_rated_uninterested'] = $answer_users_rated_uninterested[$answer_id]; } } } return $action_list; }
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)); }
if (!defined('BLOG')) { exit('Access Denied'); } $doarr = array('list', 'view', 'new', 'update'); if (!in_array($do, $doarr)) { $do = 'list'; } $limit = 10; $start = ($_B['page'] - 1) * $limit; require_once libfile('article'); switch ($do) { case 'list': $articles = J::t('article')->fetch_list('*', '`status`=1', $start, $limit, 'dateline DESC'); foreach ($articles as $k => $v) { $articles[$k]['content'] = strip_ubb($v['content']); $articles[$k]['formattime'] = btime($v['dateline'], 1); $articles[$k]['time'] = btime($v['dateline']); $articles[$k]['link'] = 'index.php?m=article&do=view&aid=' . $v['aid']; if ($v['image']) { $imgids[$v['aid']] = $v['image']; } } if ($imgids) { $str_ids = join(',', $imgids); $imginfos = J::t('image')->fetch_all('*', "id IN({$str_ids})"); foreach ($imginfos as $k => $v) { $suff = $v['thumbH'] ? '.thumb.jpg' : ''; $imgids[$v['aid']] = $_B['siteurl'] . $v['path'] . $suff; } }