SearchAction::index PHP Method

index() public method

根据关键字进行搜索
public index ( )
    public function index()
    {
        if (!CheckPermission('core_normal', 'search_info')) {
            $this->error('对不起,您没有权限进行该操作!');
        }
        $this->setTitle('搜索' . $this->key);
        $this->setKeywords('搜索' . $this->key);
        $this->setDescription('搜索' . $this->key);
        if ($this->curType == 1) {
            //搜索用户
            if ($this->key != '') {
                if (t($_GET['Stime']) && t($_GET['Etime'])) {
                    $Stime = strtotime(t($_GET['Stime']));
                    $Etime = strtotime(t($_GET['Etime']));
                    $this->assign('Stime', t($_GET['Stime']));
                    $this->assign('Etime', t($_GET['Etime']));
                }
                //关键字匹配 采用搜索引擎兼容函数搜索 后期可能会扩展为搜索引擎
                $map['uname'] = array('like', '%' . $this->key . '%');
                $list = model('user')->where($map)->findPage(20);
                $fids = getSubByKey($list['data'], 'uid');
                // 获取用户信息
                $followUserInfo = model('User')->getUserInfoByUids($fids);
                // 获取用户的统计数目
                $userData = model('UserData')->getUserDataByUids($fids);
                // 获取用户用户组信息
                $userGroupData = model('UserGroupLink')->getUserGroupData($fids);
                $this->assign('userGroupData', $userGroupData);
                // 获取用户的最后分享数据
                //$lastFeedData = model('Feed')->getLastFeed($fids);
                // 获取用户的关注信息状态值
                $followState = model('Follow')->getFollowStateByFids($this->mid, $fids);
                // 获取用户的备注信息
                $remarkInfo = model('Follow')->getRemarkHash($this->mid);
                // 获取用户标签
                $this->_assignUserTag($fids);
                // 关注分组信息
                $followGroupStatus = model('FollowGroup')->getGroupStatusByFids($this->mid, $fids);
                $this->assign('followGroupStatus', $followGroupStatus);
                // 组装数据
                foreach ($list['data'] as $key => $value) {
                    $list['data'][$key] = $followUserInfo[$value['uid']];
                    $list['data'][$key] = array_merge($list['data'][$key], $userData[$value['uid']]);
                    $list['data'][$key] = array_merge($list['data'][$key], array('feedInfo' => $lastFeedData[$value['uid']]));
                    $list['data'][$key] = array_merge($list['data'][$key], array('followState' => $followState[$value['uid']]));
                    $list['data'][$key] = array_merge($list['data'][$key], array('remark' => $remarkInfo[$value['uid']]));
                }
                $this->assign('searchResult', $list);
                //搜索分享
            }
            $this->display('person');
        } elseif ($this->curType == 2) {
            //搜索分享
            if ($this->key != '') {
                if (t($_GET['Stime']) && t($_GET['Etime'])) {
                    $Stime = strtotime(t($_GET['Stime']));
                    $Etime = strtotime(t($_GET['Etime']));
                    $this->assign('Stime', t($_GET['Stime']));
                    $this->assign('Etime', t($_GET['Etime']));
                }
                //关键字匹配 采用搜索引擎兼容函数搜索 后期可能会扩展为搜索引擎
                $feed_type = !empty($_GET['feed_type']) ? t($_GET['feed_type']) : '';
                $list = model('Feed')->searchFeeds($this->key, $feed_type, 20, $Stime, $Etime);
                //赞功能
                $feed_ids = getSubByKey($list['data'], 'feed_id');
                $diggArr = model('FeedDigg')->checkIsDigg($feed_ids, $GLOBALS['ts']['mid']);
                $this->assign('diggArr', $diggArr);
                $this->assign('feed_type', $feed_type);
                $this->assign('searchResult', $list);
                //搜索分享
                $weiboSet = model('Xdata')->get('admin_Config:feed');
                $this->assign('weibo_premission', $weiboSet['weibo_premission']);
            }
            $this->display('search_feed');
        } elseif ($this->curType == 3) {
            //搜索微吧
            if ($this->key != '') {
                if (t($_GET['Stime']) && t($_GET['Etime'])) {
                    $Stime = strtotime(t($_GET['Stime']));
                    $Etime = strtotime(t($_GET['Etime']));
                    $this->assign('Stime', t($_GET['Stime']));
                    $this->assign('Etime', t($_GET['Etime']));
                }
                $map['weiba_name'] = array('like', '%' . $this->key . '%');
                $map['status'] = 1;
                $map['is_del'] = 0;
                $list = M('weiba')->where($map)->findPage(20);
                foreach ($list['data'] as $k => $v) {
                    if ($v['new_day'] != date('Y-m-d', time())) {
                        $list['data'][$k]['new_count'] = 0;
                        $this->setNewcount($v['weiba_id'], 0);
                    }
                }
                //dump($list);exit;
                $this->assign('searchResult', $list);
                //搜索分享
            }
            $this->display('weiba');
        } elseif ($this->curType == 4) {
            //搜索用户
            if ($this->key != '') {
                if (t($_GET['Stime']) && t($_GET['Etime'])) {
                    $Stime = strtotime(t($_GET['Stime']));
                    $Etime = strtotime(t($_GET['Etime']));
                    $this->assign('Stime', t($_GET['Stime']));
                    $this->assign('Etime', t($_GET['Etime']));
                }
                $map['title'] = array('like', '%' . $this->key . '%');
                $list = M('blog')->where($map)->findPage(20);
                foreach ($list['data'] as $k => $v) {
                    preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $v['content'], $match);
                    foreach ($match[1] as $imgurl) {
                        $imgurl = $imgurl;
                        if (!empty($imgurl)) {
                            $list['data'][$k]['img'][] = $imgurl;
                        }
                    }
                    $is_digg = M('blog_digg')->where('post_id=' . $v['id'] . ' and uid=' . $this->mid)->find();
                    $list['data'][$k]['digg'] = $is_digg ? 'digg' : 'undigg';
                    if (count($list[$k]['img']) == '0') {
                        $list['data'][$k]['img'][] = '';
                        // 默认图
                    }
                    $list['data'][$k]['content'] = t($list['data'][$k]['content']);
                }
                //dump($list);exit;
                $this->assign('searchResult', $list);
            }
            $this->display('blog');
        } elseif ($this->curType == 5) {
            //搜索帖子
            if ($this->key != '') {
                if (t($_GET['Stime']) && t($_GET['Etime'])) {
                    $Stime = strtotime(t($_GET['Stime']));
                    $Etime = strtotime(t($_GET['Etime']));
                    $this->assign('Stime', t($_GET['Stime']));
                    $this->assign('Etime', t($_GET['Etime']));
                }
                $map['title'] = array('like', '%' . $this->key . '%');
                $map['is_del'] = 0;
                $list = M('weiba_post')->where($map)->findPage(20);
                $weiba_ids = getSubByKey($list['data'], 'weiba_id');
                $nameArr = $this->_getWeibaName($weiba_ids);
                foreach ($list['data'] as $k => $v) {
                    $list['data'][$k]['weiba'] = $nameArr[$v['weiba_id']];
                    $list['data'][$k]['user'] = model('User')->getUserInfo($v['post_uid']);
                    $list['data'][$k]['replyuser'] = model('User')->getUserInfo($v['last_reply_uid']);
                    // $images = matchImages($v['content']);
                    // $images[0] && $list['data'][$k]['image'] = array_slice( $images , 0 , 5 );
                    $image = getEditorImages($v['content']);
                    !empty($image) && ($list['data'][$k]['image'] = array($image));
                    //匹配图片的src
                    preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $v['content'], $match);
                    foreach ($match[1] as $imgurl) {
                        $imgurl = $imgurl;
                        if (!empty($imgurl)) {
                            $list['data'][$k]['img'][] = $imgurl;
                        }
                    }
                    $is_digg = M('weiba_post_digg')->where('post_id=' . $v['post_id'] . ' and uid=' . $this->mid)->find();
                    $list['data'][$k]['digg'] = $is_digg ? 'digg' : 'undigg';
                    $list['data'][$k]['content'] = t($list['data'][$k]['content']);
                    //去掉微吧已经删除的
                    $is_del = D('weiba')->where('weiba_id=' . $v['weiba_id'])->getField('is_del');
                    if ($is_del == 1 || $is_del === null) {
                        unset($list['data'][$k]);
                    }
                }
                //dump($list);exit;
                $this->assign('searchResult', $list);
            }
            $this->display('post');
        } elseif (false) {
            if ($this->key != '') {
                if ($this->curType == 5) {
                    //按标签搜索
                    $data['name'] = $this->key;
                    $tagid = D('tag')->where($data)->getField('tag_id');
                    $maps['app'] = 'public';
                    $maps['table'] = 'user';
                    $maps['tag_id'] = $tagid;
                    $user_ids = getSubByKey(D('app_tag')->where($maps)->field('row_id as uid')->order('row_id desc')->findAll(), 'uid');
                    $map['uid'] = array('in', $user_ids);
                    $map['is_active'] = 1;
                    $map['is_audit'] = 1;
                    $map['is_init'] = 1;
                    $userlist = D('user')->where($map)->field('uid')->findpage(10);
                    foreach ($userlist['data'] as &$v) {
                        $v = model('User')->getUserInfo($v['uid']);
                        unset($v);
                    }
                } else {
                    $userlist = model('User')->searchUser($this->key, 0, 100, '', '', 0, 10);
                }
                $uids = getSubByKey($userlist['data'], 'uid');
                $usercounts = model('UserData')->getUserDataByUids($uids);
                $userGids = model('UserGroupLink')->getUserGroup($uids);
                $followstatus = model('Follow')->getFollowStateByFids($this->mid, $uids);
                $unionstatus = model('Union')->getUnionStateByFids($this->mid, $uids);
                foreach ($userlist['data'] as $k => $v) {
                    $userlist['data'][$k]['usercount'] = $usercounts[$v['uid']];
                    $userlist['data'][$k]['userTag'] = model('Tag')->setAppName('User')->setAppTable('user')->getAppTags($v['uid']);
                    // 获取用户用户组信息
                    // 					$userGids = model('UserGroupLink')->getUserGroup($v['uid']);
                    $userGroupData = model('UserGroup')->getUserGroupByGids($userGids[$v['uid']]);
                    foreach ($userGroupData as $key => $value) {
                        if ($value['user_group_icon'] == -1) {
                            unset($userGroupData[$key]);
                            continue;
                        }
                        $userGroupData[$key]['user_group_icon_url'] = THEME_PUBLIC_URL . '/image/usergroup/' . $value['user_group_icon'];
                    }
                    $userlist['data'][$k]['userGroupData'] = $userGroupData;
                    // 获取用户积分信息
                    //$userlist['data'][$k]['userCredit'] = model('Credit')->getUserCredit($this->uid);
                    //关注状态
                    $userlist['data'][$k]['follow_state'] = $followstatus[$v['uid']];
                    $userlist['data'][$k]['union_state'] = $unionstatus[$v['uid']];
                }
                $this->assign('searchResult', $userlist);
            }
            $this->display('post');
        }
    }