Пример #1
0
 /**
  * 获取评论列表,API使用
  * @param string $where 查询条件
  * @param integer $since_id 主键起始ID,默认为0
  * @param integer $max_id 主键最大ID,默认为0
  * @param integer $limit 每页结果集数目,默认为20
  * @param integer $page 页数,默认为1
  * @param boolean $source 是否获取资源信息,默认为false
  * @return array 评论列表数据
  */
 public function getCommentListForApi($where = '', $since_id = 0, $max_id = 0, $limit = 20, $page = 1, $source = false)
 {
     $since_id = intval($since_id);
     $max_id = intval($max_id);
     $limit = intval($limit);
     $page = intval($page);
     $where = empty($where) ? " is_del = 0 " : $where . ' AND is_del=0';
     if (!empty($since_id) || !empty($max_id)) {
         !empty($since_id) && ($where .= " AND comment_id > {$since_id}");
         !empty($max_id) && ($where .= " AND comment_id < {$max_id}");
     }
     $start = ($page - 1) * $limit;
     $end = $limit;
     $data = $this->where($where)->order('comment_id DESC')->limit("{$start}, {$end}")->findAll();
     foreach ($data as &$v) {
         $v['user_info'] = model('User')->getUserInfo($v['uid']);
         $v['content'] = parseForApi($v['content']);
         $v['ctime'] = date('Y-m-d H:i', $v['ctime']);
         $source && ($v['sourceInfo'] = model('Source')->getCommentSource($v, true));
         /* 解析出emoji */
         $v['content'] = formatEmoji(false, $v['content']);
     }
     is_null($data) && ($data = array());
     return $data;
 }
Пример #2
0
 /**
  * 获取指定分享的信息,用于资源模型输出???
  * @param integer $id 分享ID
  * @param boolean $forApi 是否提供API数据,默认为false
  * @return array 指定分享数据
  */
 public function getFeedInfo($id, $forApi = false)
 {
     $data = model('Cache')->get('group_feed_info_' . $id);
     if ($data) {
         return $data;
     }
     $map['a.feed_id'] = $id;
     // $map['a.is_del'] = 0;//过滤已删除的分享
     $data = $this->where($map)->table("{$this->tablePrefix}group_feed AS a LEFT JOIN {$this->tablePrefix}group_feed_data AS b ON a.feed_id = b.feed_id ")->find();
     $fd = unserialize($data['feed_data']);
     $userInfo = model('User')->getUserInfo($data['uid']);
     $data['ctime'] = date('Y-m-d H:i', $data['publish_time']);
     $data['content'] = $forApi ? parseForApi($fd['body']) : $fd['body'];
     $data['uname'] = $userInfo['uname'];
     $data['avatar_big'] = $userInfo['avatar_big'];
     $data['avatar_middle'] = $userInfo['avatar_middle'];
     $data['avatar_small'] = $userInfo['avatar_small'];
     unset($data['feed_data']);
     // 分享转发
     if ($data['type'] == 'repost') {
         $data['transpond_id'] = $data['app_row_id'];
         $data['transpond_data'] = $this->getFeedInfo($data['transpond_id'], $forApi);
     }
     // 附件处理
     if (!empty($fd['attach_id'])) {
         $data['has_attach'] = 1;
         $attach = model('Attach')->getAttachByIds($fd['attach_id']);
         foreach ($attach as $ak => $av) {
             $_attach = array('attach_id' => $av['attach_id'], 'attach_name' => $av['name'], 'attach_url' => getImageUrl($av['save_path'] . $av['save_name']), 'extension' => $av['extension'], 'size' => $av['size']);
             if ($data['type'] == 'postimage') {
                 $_attach['attach_small'] = getImageUrl($av['save_path'] . $av['save_name'], 100, 100, true);
                 $_attach['attach_middle'] = getImageUrl($av['save_path'] . $av['save_name'], 740);
             }
             $data['attach'][] = $_attach;
         }
     } else {
         $data['has_attach'] = 0;
     }
     if ($data['type'] == 'postvideo') {
         $data['host'] = $fd['host'];
         $data['flashvar'] = $fd['flashvar'];
         $data['source'] = $fd['source'];
         $data['flashimg'] = $fd['flashimg'];
         $data['title'] = $fd['title'];
     }
     $data['feedType'] = $data['type'];
     // 是否收藏分享
     if ($forApi) {
         $data['iscoll'] = model('Collection')->getCollection($data['feed_id'], 'feed');
         if (empty($data['iscoll'])) {
             $data['iscoll']['colled'] = 0;
         } else {
             $data['iscoll']['colled'] = 1;
         }
     }
     // 分享详细信息
     $feedInfo = $this->get($id);
     $data['source_body'] = $feedInfo['body'];
     //一分钟缓存
     model('Cache')->set('group_feed_info_' . $id, $data, 60);
     return $data;
 }
 /**
  * 为feed提供应用数据来源信息 - 与模板weiba_post.feed.php配合使用
  * @param integer row_id 帖子ID
  * @param bool _forApi 提供给API的数据
  */
 public function getSourceInfo($row_id, $_forApi = false)
 {
     $info = $this->find($row_id);
     if (!$info) {
         return false;
     }
     $info['source_user_info'] = model('User')->getUserInfo($info['post_uid']);
     $info['source_user'] = $info['post_uid'] == $GLOBALS['ts']['mid'] ? L('PUBLIC_ME') : $info['source_user_info']['space_link'];
     // 我
     $info['source_type'] = L('PUBLIC_WEIBA');
     $info['source_title'] = $forApi ? parseForApi($info['source_user_info']['space_link']) : $info['source_user_info']['space_link'];
     //分享title暂时为空
     $info['source_url'] = U('weiba/Index/postDetail', array('post_id' => $row_id));
     $info['ctime'] = $info['post_time'];
     $feed = D('feed_data')->field('feed_id,feed_content')->find($info['feed_id']);
     $info['source_content'] = $feed['feed_content'];
     $info['app_row_table'] = 'weiba_post';
     $info['app_row_id'] = $info['post_id'];
     return $info;
 }
 private function getUserAttachData($uid, $limit = 10, $page = 1)
 {
     $map['a.uid'] = $uid;
     $map['a.type'] = 'postimage';
     $map['a.is_del'] = 0;
     $limit_start = ($page - 1) * $limit;
     $list = D()->table('`' . C('DB_PREFIX') . 'feed` AS a LEFT JOIN `' . C('DB_PREFIX') . 'feed_data` AS b ON a.`feed_id` = b.`feed_id`')->field('a.`feed_id`, a.`publish_time`, b.`feed_data`')->where($map)->order('feed_id DESC')->limit($limit_start . ',' . $limit)->findAll();
     // 获取附件信息
     foreach ($list as &$value) {
         $tmp = unserialize($value['feed_data']);
         $attachId = is_array($tmp['attach_id']) ? intval($tmp['attach_id'][0]) : intval($tmp['attach_id']);
         $attachInfo = model('Attach')->getAttachById($attachId);
         $value['savepath'] = $attachInfo['save_path'] . $attachInfo['save_name'];
         $value['name'] = $attachInfo['name'];
         $value['body'] = parseForApi($tmp['body']);
     }
     return $list;
 }
Пример #5
0
 /**
  * 获取资源信息 --using
  *
  * @param
  *            varchar app 应用名称
  * @param
  *            integer app_row_table 资源所在表
  * @param
  *            integer app_row_id 资源ID
  * @return array 资源信息
  */
 private function get_source_info($app, $app_row_table, $app_row_id)
 {
     switch ($app) {
         case 'weiba':
             $weiba_post = D('weiba_post')->where('post_id=' . $app_row_id . ' AND is_del = 0')->field('weiba_id,post_uid,title,content')->find();
             if ($weiba_post) {
                 $source_info['user_info'] = $this->get_user_info($weiba_post['post_uid']);
                 $source_info['title'] = $weiba_post['title'];
                 $source_info['content'] = real_strip_tags($weiba_post['content']);
                 $source_info['url'] = 'mod=Weibo&act=weibo_detail&id=' . $app_row_id;
                 $source_info['source_name'] = D('weiba')->where('weiba_id=' . $weiba_post['weiba_id'])->getField('weiba_name');
                 $source_info['source_url'] = 'api.php?mod=Weiba&act=post_detail&id=' . $app_row_id;
                 $source_info['source_imgs'] = array();
                 //获取微吧转发的图片
                 if (!empty($app_row_id)) {
                     $source_info['source_imgs'] = $this->getEditorImages($weiba_post['content']);
                 }
             } else {
                 $source_info['is_del'] = 1;
             }
             break;
         default:
             $tablePrefix = C('DB_PREFIX');
             $map['a.feed_id'] = $app_row_id;
             $map['a.is_del'] = 0;
             $data = model('Feed')->where($map)->table("{$tablePrefix}feed AS a LEFT JOIN {$tablePrefix}feed_data AS b ON a.feed_id = b.feed_id ")->find();
             if ($data['feed_id']) {
                 $source_info['publish_time'] = $data['publish_time'];
                 $source_info['feed_id'] = $app_row_id;
                 $source_info['user_info'] = $this->get_user_info($data['uid']);
                 $source_info['type'] = real_strip_tags($data['type']);
                 $source_info['content'] = real_strip_tags($data['feed_content']);
                 $source_info['content'] = parseForApi($source_info['content']);
                 $source_info['url'] = 'mod=Weibo&act=weibo_detail&id=' . $app_row_id;
                 // 附件处理
                 $feed_data = unserialize($data['feed_data']);
                 if (!empty($feed_data['attach_id'])) {
                     $attach = model('Attach')->getAttachByIds($feed_data['attach_id']);
                     foreach ($attach as $ak => $av) {
                         $_attach = array('attach_id' => $av['attach_id'], 'attach_name' => $av['name']);
                         if ($data['type'] == 'postimage') {
                             $_attach['attach_origin'] = getImageUrl($av['save_path'] . $av['save_name']);
                             $_attach['attach_origin_width'] = $av['width'];
                             $_attach['attach_origin_height'] = $av['height'];
                             if ($av['width'] > 550 && $av['height'] > 550) {
                                 $_attach['attach_small'] = getImageUrl($av['save_path'] . $av['save_name'], 550, 550, true);
                             } else {
                                 $_attach['attach_small'] = $_attach['attach_origin'];
                             }
                         }
                         $source_info['attach_info'][] = $_attach;
                     }
                 } else {
                     $source_info['attach_info'] = array();
                 }
                 if ($data['type'] == 'postvideo') {
                     if ($feed_data['video_id']) {
                         $video_config = model('Xdata')->get('admin_Content:video_config');
                         $video_server = $video_config['video_server'] ? $video_config['video_server'] : SITE_URL;
                         $video_info['video_id'] = $feed_data['video_id'];
                         $video_info['flashimg'] = $video_server . $feed_data['image_path'];
                         $video_info['flash_width'] = $feed_data['image_width'];
                         $video_info['flash_height'] = $feed_data['image_height'];
                         if ($feed_data['transfer_id'] && !D('video_transfer')->where('transfer_id=' . $feed_data['transfer_id'])->getField('status')) {
                             $video_info['transfering'] = 1;
                         } else {
                             $video_info['flashvar'] = $feed_data['video_mobile_path'] ? $video_server . $feed_data['video_mobile_path'] : $video_server . $feed_data['video_path'];
                             $video_info['flashvar_part'] = $video_server . $feed_data['video_part_path'];
                         }
                     } else {
                         $video_info['host'] = $feed_data['host'];
                         $video_info['flashvar'] = $feed_data['source'];
                         $video_info['source'] = $feed_data['source'];
                         $video_info['flashimg'] = UPLOAD_URL . $feed_data['flashimg'];
                         $video_info['title'] = $feed_data['title'];
                     }
                     $source_info['attach_info'][] = $video_info;
                 }
             } else {
                 $source_info['is_del'] = 1;
             }
             break;
     }
     return $source_info;
 }
Пример #6
0
 public function all_topic()
 {
     $max_id = intval($this->data['max_id']);
     $limit = intval($this->data['limit']);
     if (empty($max_id)) {
         $map2['recommend'] = 1;
         $map2['lock'] = 0;
         $res['commends'] = (array) M('feed_topic')->where($map2)->order('recommend_time desc')->limit(5)->findAll();
         empty($res['commends']) || ($map['topic_id'] = array('not in', getSubByKey($res['commends'], 'topic_id')));
     } else {
         $map['topic_id'] = array('lt', $max_id);
     }
     $map['lock'] = 0;
     $res['lists'] = (array) M('feed_topic')->where($map)->order('topic_id desc')->limit($limit)->findAll();
     foreach ($res['lists'] as &$v) {
         $v['topic_name'] = parseForApi($v['topic_name']);
     }
     return $res;
 }
Пример #7
0
 /**
  * 获取指定分享的信息,用于资源模型输出???
  * @param integer $id 分享ID
  * @param boolean $forApi 是否提供API数据,默认为false
  * @return array 指定分享数据
  */
 public function getFeedInfo($id, $forApi = false)
 {
     $data = model('Cache')->get('feed_info_' . $id);
     if ($data !== false && ($forApi === false || $forApi === true && isset($data['iscoll']))) {
         return $data;
     }
     $map['a.feed_id'] = $id;
     // //过滤已删除的分享 wap 版收藏
     // if($forApi){
     // 	$map['a.is_del'] = 0;
     // }
     $data = $this->where($map)->table("{$this->tablePrefix}feed AS a LEFT JOIN {$this->tablePrefix}feed_data AS b ON a.feed_id = b.feed_id ")->find();
     $fd = unserialize($data['feed_data']);
     $userInfo = model('User')->getUserInfo($data['uid']);
     $data['ctime'] = date('Y-m-d H:i', $data['publish_time']);
     $data['content'] = $forApi ? parseForApi($fd['body']) : $fd['body'];
     $data['uname'] = $userInfo['uname'];
     $data['user_group'] = $userInfo['api_user_group'];
     $data['user_gicon'] = $userInfo['group_icon_only'];
     $data['avatar_big'] = $userInfo['avatar_big'];
     $data['avatar_middle'] = $userInfo['avatar_middle'];
     $data['avatar_small'] = $userInfo['avatar_small'];
     unset($data['feed_data']);
     // 分享转发
     if ($data['type'] == 'repost') {
         $data['transpond_id'] = $data['app_row_id'];
         $data['transpond_data'] = $this->getFeedInfo($data['transpond_id'], $forApi);
     }
     // 附件处理
     if (!empty($fd['attach_id'])) {
         $data['has_attach'] = 1;
         $attach = model('Attach')->getAttachByIds($fd['attach_id']);
         foreach ($attach as $ak => $av) {
             $_attach = array('attach_id' => $av['attach_id'], 'attach_name' => $av['name'], 'attach_url' => getImageUrl($av['save_path'] . $av['save_name']), 'extension' => $av['extension'], 'size' => $av['size']);
             if ($data['type'] == 'postimage') {
                 $_attach['attach_small'] = getImageUrl($av['save_path'] . $av['save_name'], 120, 120, true);
                 $_attach['attach_medium'] = getImageUrl($av['save_path'] . $av['save_name'], 240);
                 $_attach['attach_middle'] = getImageUrl($av['save_path'] . $av['save_name'], 740);
                 $_attach['attach_middle_box'] = getImageUrl($av['save_path'] . $av['save_name'], 240, 240, true);
             }
             $data['attach'][] = $_attach;
         }
     } else {
         $data['has_attach'] = 0;
     }
     if ($data['type'] == 'postvideo') {
         if ($fd['video_id']) {
             $video_config = model('Xdata')->get('admin_Content:video_config');
             $video_server = $video_config['video_server'] ? $video_config['video_server'] : SITE_URL;
             $data['video_id'] = $fd['video_id'];
             if ($forApi) {
                 $data['flashvar'] = $fd['video_mobile_path'] ? $video_server . $fd['video_mobile_path'] : $video_server . $fd['video_path'];
                 $data['flashvar_part'] = $video_server . $fd['video_part_path'];
             } else {
                 $data['flashvar'] = $video_server . $fd['video_path'];
             }
             $data['flashimg'] = $video_server . $fd['image_path'];
             $data['flash_width'] = $fd['image_width'];
             $data['flash_height'] = $fd['image_height'];
             if ($fd['transfer_id'] && !D('video_transfer')->where('transfer_id=' . $fd['transfer_id'])->getField('status')) {
                 $data['transfering'] = 1;
             }
         } else {
             $data['host'] = $fd['host'];
             if ($forApi) {
                 $data['flashvar'] = $fd['source'];
             } else {
                 $data['flashvar'] = $fd['flashvar'];
             }
             $data['source'] = $fd['source'];
             $data['flashimg'] = $fd['flashimg'];
             $data['title'] = $fd['title'];
         }
     }
     $data['feedType'] = $data['type'];
     // 是否收藏分享
     if ($forApi) {
         $data['iscoll'] = model('Collection')->getCollection($data['feed_id'], 'feed');
         if (empty($data['iscoll'])) {
             $data['iscoll']['colled'] = 0;
         } else {
             $data['iscoll']['colled'] = 1;
         }
         //是否赞过
         $diggarr = model('FeedDigg')->checkIsDigg($data['feed_id'], $GLOBALS['ts']['mid']);
         $data['is_digg'] = $diggarr[$data['feed_id']] ? 1 : 0;
     }
     //获取赞过分享的人
     $diggs = model('FeedDigg')->where("feed_id=" . $id)->order('id desc')->limit(10)->findAll();
     foreach ($diggs as &$v) {
         $v['user'] = model('User')->getUserInfo($v['uid']);
     }
     $data['diggs'] = $diggs;
     // 分享详细信息
     $feedInfo = $this->get($id);
     $data['source_body'] = $feedInfo['body'];
     $data['api_source'] = $feedInfo['api_source'];
     //一分钟缓存
     model('Cache')->set('feed_info_' . $id, $data, 60);
     if ($forApi) {
         $data['content'] = real_strip_tags($data['content']);
         unset($data['is_audit'], $data['from_data'], $data['app_row_table'], $data['app_row_id']);
         unset($data['source_body']);
     }
     return $data;
 }
Пример #8
0
 /**
  * 从评论中提取资源数据
  *
  * @param string $table
  *        	资源表名
  * @param integer $row_id
  *        	资源ID
  * @param boolean $forApi
  *        	是否提供API,默认为false
  * @return array 格式化后的资源数据
  */
 private function getInfoFromComment($table, $row_id, $forApi)
 {
     $_info = model('Comment')->getCommentInfo($row_id, true);
     $info['uid'] = $_info['app_uid'];
     $info['row_id'] = $_info['row_id'];
     $info['is_audit'] = $_info['is_audit'];
     $info['source_user'] = $info['uid'] == $GLOBALS['ts']['mid'] ? L('PUBLIC_ME') : $_info['user_info']['space_link'];
     // 我
     $info['comment_user_info'] = model('User')->getUserInfo($_info['user_info']['uid']);
     $forApi && ($info['source_user'] = parseForApi($info['source_user']));
     $info['source_user_info'] = model('User')->getUserInfo($info['uid']);
     $info['source_type'] = L('PUBLIC_STREAM_COMMENT');
     // 评论
     $info['source_content'] = $forApi ? parseForApi($_info['content']) : $_info['content'];
     $info['source_url'] = $_info['sourceInfo']['source_url'];
     $info['ctime'] = $_info['ctime'];
     $info['app'] = $_info['app'];
     $info['sourceInfo'] = $_info['sourceInfo'];
     // 微博title暂时为空
     $info['source_title'] = $forApi ? parseForApi($_info['user_info']['space_link']) : $_info['user_info']['space_link'];
     return $info;
 }