/api/manyou/Service/SearchHelper.php
PHP | 860 lines | 762 code | 92 blank | 6 comment | 133 complexity | 4935bc7e40cff73192099e2502bdcd0f MD5 | raw file
- <?php
- /**
- * [Discuz!] (C)2001-2099 Comsenz Inc.
- * This is NOT a freeware, use is subject to license terms
- *
- * $Id: SearchHelper.php 29915 2012-05-03 01:22:40Z zhouxiaobo $
- */
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- class Cloud_Service_SearchHelper {
- protected static $_instance;
- public static function getInstance() {
- if (!(self::$_instance instanceof self)) {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- public function __construct() {
- }
- public function getTables($table) {
- if(!in_array($table, array('post', 'thread'))) {
- return false;
- }
- $infos = getglobal($table.'table_info');
- if ($infos) {
- $tables = array();
- foreach($infos as $id => $row) {
- $tables[$id] = $id;
- }
- } else {
- $tables = array(0);
- }
- return $tables;
- }
- private function _convertForum($row) {
- $result = array();
- $map = array(
- 'fid' => 'fId',
- 'fup' => 'pId',
- 'name' => 'fName',
- 'type' => 'type',
- 'displayorder' => 'displayOrder',
- );
- foreach($row as $k => $v) {
- if (array_key_exists($k, $map)) {
- $result[$map[$k]] = $v;
- continue;
- }
- if ($k == 'status') {
- $isGroup = false;
- switch ($v) {
- case '0' :
- $displayStatus = 'hidden';
- break;
- case '1' :
- $displayStatus = 'normal';
- break;
- case '2' :
- $displayStatus = 'some';
- break;
- case '3' :
- $displayStatus = 'normal';
- $isGroup = true;
- break;
- default :
- $displayStatus = 'unknown';
- }
- $result['displayStatus'] = $displayStatus;
- $result['isGroup'] = $isGroup;
- }
- }
- $formula = dunserialize($row['formulaperm']);
- $result['isFormula'] = $formula[1] ? TRUE : FALSE;
- $result['sign'] = md5(serialize($result));
- return $result;
- }
- public function getForums($fIds = array()) {
- if($fIds) {
- $forums = C::t('forum_forum')->fetch_all_info_by_fids($fIds);
- } else {
- $forums = C::t('forum_forum')->fetch_all_info_by_fids(0, 0, 0, 0, 0, 0, 1);
- }
- $result = array();
- $result['totalNum'] = count($forums);
- foreach($forums as $forum) {
- $result['data'][$forum['fid']] = self::_convertForum($forum);
- }
- if (!$fIds) {
- $result['sign'] = md5(serialize($result['data']));
- }
- return $result;
- }
- public function getUserGroupPermissions($userGroupIds) {
- global $_G;
- $userGroups = array();
- if ($_G['setting']['verify']['enabled']) {
- foreach ($userGroupIds as $groupId) {
- if (dintval($groupId) > 65500) {
- $vGid = $groupId - 65500;
- if ($_G['setting']['verify'][$vGid]['available']) {
- $key = array_search($groupId, $userGroupIds);
- unset($userGroupIds[$key]);
- $userGroups['v' . $vGid] = array();
- }
- }
- }
- }
- $fields = array(
- 'groupid' => 'userGroupId',
- 'grouptitle' => 'userGroupName',
- 'readaccess' => 'readPermission',
- 'allowvisit' => 'allowVisit',
- 'allowsearch' => 'searchLevel',
- );
- $userGroup= C::t('common_usergroup')->fetch_all((array)$userGroupIds);
- $userGroupField = C::t('common_usergroup_field')->fetch_all_fields((array)$userGroupIds, array('readaccess', 'allowsearch'));
- foreach(array_merge($userGroup, $userGroupField) as $row) {
- foreach($row as $k => $v) {
- if (array_key_exists($k, $fields)) {
- if ($k == 'allowsearch') {
- $userGroups[$row['groupid']]['allowSearchAlbum'] = ($v & 8) ? true : false;
- $userGroups[$row['groupid']]['allowSearchBlog'] = ($v & 4) ? true : false;
- $userGroups[$row['groupid']]['allowSearchForum'] = ($v & 2) ? true : false;
- $userGroups[$row['groupid']]['allowSearchPortal'] = ($v & 1) ? true : false;
- $userGroups[$row['groupid']]['allowFulltextSearch'] = ($v & 32) ? true : false;
- } else {
- $userGroups[$row['groupid']][$fields[$k]] = $v;
- }
- }
- $userGroups[$row['groupid']]['forbidForumIds'] = array();
- $userGroups[$row['groupid']]['allowForumIds'] = array();
- $userGroups[$row['groupid']]['specifyAllowForumIds'] = array();
- }
- }
- $fIds = array();
- foreach(C::t('forum_forum')->fetch_all_by_status('1') as $row) {
- $fIds[$row['fid']] = $row['fid'];
- }
- $fieldForums = array();
- foreach(C::t('forum_forumfield')->fetch_all_by_fid($fIds) as $row) {
- $fieldForums[$row['fid']] = $row;
- }
- foreach($fIds as $fId) {
- $row = $fieldForums[$fId];
- $allowViewGroupIds = array();
- if ($row['viewperm']) {
- $allowViewGroupIds = explode("\t", $row['viewperm']);
- }
- foreach($userGroups as $gid => $_v) {
- if ($row['password']) {
- $userGroups[$gid]['forbidForumIds'][] = $fId;
- continue;
- }
- $perm = dunserialize($row['formulaperm']);
- if(is_array($perm)) {
- $spviewperm = explode("\t", $row['spviewperm']);
- if (in_array($gid, $spviewperm)) {
- $userGroups[$gid]['allowForumIds'][] = $fId;
- $userGroups[$gid]['specifyAllowForumIds'][] = $fId;
- continue;
- }
- if ($perm[0] || $perm[1] || $perm['users']) {
- $userGroups[$gid]['forbidForumIds'][] = $fId;
- continue;
- }
- }
- if (!$allowViewGroupIds) {
- $userGroups[$gid]['allowForumIds'][] = $fId;
- } elseif (!in_array($gid, $allowViewGroupIds)) {
- $userGroups[$gid]['forbidForumIds'][] = $fId;
- } elseif (in_array($gid, $allowViewGroupIds)) {
- $userGroups[$gid]['allowForumIds'][] = $fId;
- $userGroups[$gid]['specifyAllowForumIds'][] = $fId;
- }
- }
- }
- foreach ($userGroups as $groupId => $v) {
- if (substr($groupId, 0, 1) == 'v') {
- $verifyKey = 65500 + dintval(substr($groupId, 1));
- $v['userGroupId'] = $verifyKey;
- $userGroups[$verifyKey] = $v;
- unset($userGroups[$groupId]);
- }
- }
- foreach($userGroups as $k => $v) {
- ksort($v);
- $userGroups[$k]['sign'] = md5(serialize($v));
- }
- return $userGroups;
- }
- public function getGuestPerm($gfIds = array()) {
- $perm = self::getUserGroupPermissions(array(7));
- $guestPerm = $perm[7];
- if ($gfIds) {
- foreach(C::t('forum_forumfield')->fetch_all_by_fid($gfIds) as $row) {
- if ($row['gviewperm'] == 1) {
- $guestPerm['allowForumIds'][] = $row['fid'];
- } else {
- $guestPerm['forbidForumIds'][] = $row['fid'];
- }
- }
- }
- return $guestPerm;
- }
- public function convertThread($row) {
- $result = array();
- $map = array(
- 'tid' => 'tId',
- 'fid' => 'fId',
- 'authorid' => 'authorId',
- 'author' => 'authorName',
- 'special' => 'specialType',
- 'price' => 'price',
- 'subject' => 'subject',
- 'readperm' => 'readPermission',
- 'lastposter' => 'lastPoster',
- 'views' => 'viewNum',
- 'replies' => 'replyNum',
- 'displayorder' => 'stickLevel',
- 'highlight' => 'isHighlight',
- 'digest' => 'digestLevel',
- 'rate' => 'rate',
- 'attachment' => 'isAttached',
- 'moderated' => 'isModerated',
- 'closed' => 'isClosed',
- 'supe_pushstatus' => 'supeSitePushStatus',
- 'recommends' => 'recommendTimes',
- 'recommend_add' => 'recommendSupportTimes',
- 'recommend_sub' => 'recommendOpposeTimes',
- 'heats' => 'heats',
- 'pid' => 'pId',
- 'isgroup' => 'isGroup',
- 'posttableid' => 'postTableId',
- 'favtimes' => 'favoriteTimes',
- 'sharetimes'=> 'shareTimes',
- 'icon' => 'icon',
- );
- $map2 = array(
- 'dateline' => 'createdTime',
- 'lastpost' => 'lastPostedTime',
- );
- foreach($row as $k => $v) {
- if (array_key_exists($k, $map)) {
- if ($k == 'special') {
- switch($v) {
- case 1:
- $v = 'poll';
- break;
- case 2:
- $v = 'trade';
- break;
- case 3:
- $v = 'reward';
- break;
- case 4:
- $v = 'activity';
- break;
- case 5:
- $v = 'debate';
- break;
- case 127:
- $v = 'plugin';
- break;
- default:
- $v = 'normal';
- }
- }
- if ($k == 'displayorder') {
- if ($v >= 0) {
- $result['displayStatus'] = 'normal';
- } elseif ($v == -1) {
- $result['displayStatus'] = 'recycled';
- } elseif ($v == -2) {
- $result['displayStatus'] = 'unapproved';
- } elseif ($v == -3) {
- $result['displayStatus'] = 'ignored';
- } elseif ($v == -4) {
- $result['displayStatus'] = 'draft';
- } else {
- $result['displayStatus'] = 'unknown';
- }
- switch($v) {
- case 1:
- $v = 'board';
- break;
- case 2:
- $v = 'group';
- break;
- case 3:
- $v = 'global';
- break;
- case 0:
- default:
- $v = 'none';
- }
- }
- if (in_array($k, array('highlight', 'moderated', 'closed', 'isgroup'))) {
- $v = $v ? true : false;
- }
- $result[$map[$k]] = $v;
- } elseif (array_key_exists($k, $map2)) {
- $result[$map2[$k]] = dgmdate($v, 'Y-m-d H:i:s', 8);
- }
- }
- return $result;
- }
- public function preGetThreads($tableid, $tIds) {
- $result = array();
- if($tIds) {
- foreach(C::t('forum_thread')->fetch_all_by_tid($tIds, 0, 0, $tableid) as $thread) {
- $result[$thread['tid']] = self::convertThread($thread);
- }
- }
- return $result;
- }
- public function getThreadPosts($tIds) {
- $result = array();
- foreach($tIds as $postTableId => $_tIds) {
- foreach(C::t('forum_post')->fetch_all_by_tid($postTableId, $_tIds, true, '', 0, 0, 1) as $post) {
- $result[$post['tid']] = self::convertPost($post);
- }
- }
- return $result;
- }
- public function getThreads($tIds, $isReturnPostId = true) {
- global $_G;
- $tables = array();
- $infos = $_G['setting']['threadtable_info'];
- if ($infos) {
- foreach($infos as $id => $row) {
- $tables[] = $id;
- }
- } else {
- $tables = array('forum_thread');
- }
- $tableNum = count($tables);
- $res = $data = $_tableInfo = array();
- for($i = 0; $i < $tableNum; $i++) {
- $_threads = self::preGetThreads($tables[$i], $tIds);
- if ($_threads) {
- if (!$data) {
- $data = $_threads;
- } else {
- $data = $data + $_threads;
- }
- if (count($data) == count($tIds)) {
- break;
- }
- }
- }
- if ($isReturnPostId) {
- $threadIds = array();
- foreach($data as $tId => $thread) {
- $postTableId = $thread['postTableId'];
- $threadIds[$postTableId][] = $tId;
- }
- $threadPosts = self::getThreadPosts($threadIds);
- foreach($data as $tId => $thread) {
- $data[$tId]['pId'] = $threadPosts[$tId]['pId'];
- }
- }
- return $data;
- }
- public function convertPost($row) {
- $result = array();
- $map = array('pid' => 'pId',
- 'tid' => 'tId',
- 'fid' => 'fId',
- 'authorid' => 'authorId',
- 'author' => 'authorName',
- 'useip' => 'authorIp',
- 'anonymous' => 'isAnonymous',
- 'subject' => 'subject',
- 'message' => 'content',
- 'invisible' => 'displayStatus',
- 'htmlon' => 'isHtml',
- 'attachment' => 'isAttached',
- 'rate' => 'rate',
- 'ratetimes' => 'rateTimes',
- 'dateline' => 'createdTime',
- 'first' => 'isThread',
- );
- $map2 = array(
- 'bbcodeoff' => 'isBbcode',
- 'smileyoff' => 'isSmiley',
- 'parseurloff' => 'isParseUrl',
- );
- foreach($row as $k => $v) {
- if (array_key_exists($k, $map)) {
- if ($k == 'invisible') {
- switch($v) {
- case 0:
- $v = 'normal';
- break;
- case -1:
- $v = 'recycled';
- break;
- case -2:
- $v = 'unapproved';
- break;
- case -3:
- $v = 'ignored';
- break;
- case -4:
- $v = 'draft';
- break;
- default:
- $v = 'unkonwn';
- }
- }
- if ($k == 'dateline') {
- $result[$map[$k]] = dgmdate($v, 'Y-m-d H:i:s', 8);
- continue;
- }
- if (in_array($k, array('htmlon', 'attachment', 'first', 'anonymous'))) {
- $v = $v ? true : false;
- }
- $result[$map[$k]] = $v;
- } elseif (array_key_exists($k, $map2)) {
- $result[$map2[$k]] = $v ? false : true;
- }
- }
- $result['isWarned'] = $result['isBanned'] = false;
- if ($row['status'] & 1) {
- $result['isBanned'] = true;
- }
- if ($row['status'] & 2) {
- $result['isWarned'] = true;
- }
- $attachInfo = array();
- if ($result['isAttached']) {
- $attachIndex = C::t('forum_attachment')->fetch_all_by_id('pid', $row['pid']);
- $attachment = C::t('forum_attachment_n')->fetch_all_by_id('pid:'.$row['pid'], 'pid', $row['pid'], 'aid');
- $attachMap = array(
- 'aid' => 'aId',
- 'tid' => 'tId',
- 'pid' => 'pId',
- 'uid' => 'uId',
- 'dateline' => 'uploadedTime',
- 'filename' => 'fileName',
- 'filesize' => 'fileSize',
- 'attachment' => 'filePath',
- 'remote' => 'isRemote',
- 'description' => 'description',
- 'readperm' => 'readPerm',
- 'price' => 'price',
- 'isimage' => 'isImage',
- 'width' => 'width',
- 'thumb' => 'isThumb',
- 'picid' => 'picId',
- );
- foreach ($attachment as $k => $v) {
- $attachTemp = array();
- foreach ($v as $key => $val) {
- if ($key == 'dateline') {
- $attachTemp[$attachMap[$key]] = dgmdate($val, 'Y-m-d H:i:s', 8);
- continue;
- }
- $attachTemp[$attachMap[$key]] = $val;
- }
- $attachInfo[$k] = $attachTemp;
- $attachInfo[$k]['downloadTimes'] = $attachIndex[$k]['downloads'];
- }
- }
- $result['attachInfo'] = $attachInfo;
- return $result;
- }
- public function convertNav($row) {
- $map = array( 'id' => 'id',
- 'name' => 'name',
- 'title' => 'title',
- 'url' => 'url',
- 'type' => 'provider',
- 'navtype' => 'navType',
- 'available' => 'available',
- 'displayorder' => 'displayOrder',
- 'target' => 'linkTarget',
- 'highlight' => 'highlight',
- 'level' => 'userGroupLevel',
- 'subtype' => 'subLayout',
- 'subcols' => 'subColNum',
- 'subname' => 'subName',
- 'suburl' => 'subUrl',
- );
- foreach($row as $k => $v) {
- if (array_key_exists($k, $map)) {
- if (in_array($k, array('available'))) {
- $v = $v > 0 ? true : false;
- }
- if ($k == 'subtype') {
- if ($v == 1) {
- $v = 'parallel';
- } else {
- $v = 'menu';
- }
- }
- if ($k == 'type') {
- switch($v) {
- case '1':
- $v = 'user';
- break;
- case '0':
- default:
- $v = 'system';
- break;
- }
- }
- if ($k == 'navtype') {
- switch($v) {
- case 1:
- $v = 'footer';
- break;
- case 2:
- $v = 'space';
- break;
- case 3:
- $v = 'my';
- break;
- case 0:
- $v = 'header';
- break;
- }
- }
- $result[$map[$k]] = $v;
- }
- }
- return $result;
- }
- public function convertPoll($row) {
- $map = array('polloptionid' => 'id',
- 'tid' => null,
- 'votes' => 'votes',
- 'displayorder' => 'displayOrder',
- 'polloption' => 'label',
- 'voterids' => 'voterIds',
- );
- $result = array();
- foreach($row as $k => $v) {
- $field = $map[$k];
- if ($field !== null) {
- $result[$field] = $v;
- }
- }
- return $result;
- }
- public function getPollInfo($tIds) {
- $result = array();
- foreach(C::t('forum_polloption')->fetch_all_by_tid($tIds) as $row) {
- $result[$row['tid']][$row['polloptionid']] = self::convertPoll($row);
- }
- return $result;
- }
- public function getThreadSort($tIds) {
- global $_G;
- $optionvar = array();
- foreach(C::t('forum_typeoptionvar')->fetch_all_by_tid_optionid($tIds) as $row) {
- if(!isset($_G['cache']['threadsort_option_'.$row['sortid']])) {
- loadcache(array('threadsort_option_'.$row['sortid']));
- }
- $title = $_G['cache']['threadsort_option_'.$row['sortid']][$row['optionid']]['title'];
- $type = $_G['cache']['threadsort_option_'.$row['sortid']][$row['optionid']]['type'];
- if($title && !in_array($type, array('image'))) {
- $optionvar[$row['tid']][$title] = $row['value'];
- }
- }
- return $optionvar;
- }
- public function allowSearchForum() {
- C::t('common_usergroup_field')->update_allowsearch();
- require_once libfile('function/cache');
- updatecache('usergroups');
- }
- public function myThreadLog($opt, $data) {
- global $_G;
- $cloudAppService = Cloud::loadClass('Service_App');
- if(!$cloudAppService->getCloudAppStatus('search')) return;
- $data['action'] = $opt;
- $data['dateline'] = time();
- C::t('forum_threadlog')->insert($data, false, true);
- }
- public function myPostLog($opt, $data) {
- global $_G;
- $cloudAppService = Cloud::loadClass('Service_App');
- if(!$cloudAppService->getCloudAppStatus('search')) return;
- $data['action'] = $opt;
- $data['dateline'] = time();
- C::t('forum_postlog')->insert($data, false, true);
- }
- public function getRelatedThreadsTao($keyword, $page, $tpp, $excludeForumIds = '', $cache = false) {
- global $_G;
- $sId = $_G['setting']['my_siteid'];
- $result = array();
- if($sId) {
- if($cache === true) {
- $kname = 'search_recommend_thread_'.$keyword.'_'.$page.'_'.$excludeForumIds;
- loadcache($kname);
- }
- if(isset($_G['cache'][$kname]['ts']) && (TIMESTAMP - $_G['cache'][$kname]['ts'] <= 21600)) {
- $result = $_G['cache'][$kname]['result'];
- } else {
- $apiUrl = 'http://api.discuz.qq.com/search/discuz/tao?';
- $params = array(
- 'sId' => $sId,
- 'q' => $keyword,
- 'tpp' => $tpp,
- 'excludeForumIds' => $excludeForumIds,
- 'page' => $page ? $page : 1,
- 'clientIp' => $_G['clientip']
- );
- $utilService = Cloud::loadClass('Service_Util');
- $response = dfsockopen($apiUrl.$utilService->generateSiteSignUrl($params), 0, '', '', false, $_G['setting']['cloud_api_ip']);
- require_once libfile('class/xml');
- $result = (array) xml2array($response);
- if($cache === true && isset($result['status']) && $result['status'] == 0) {
- save_syscache($kname, array('ts' => TIMESTAMP, 'result' => $result));
- }
- if($result['status'] != 0) {
- $result = null;
- }
- }
- }
- return $result;
- }
- public function getRelatedThreads($fId, $cache = false) {
- global $_G;
- $sId = $_G['setting']['my_siteid'];
- $result = array();
- if($sId) {
- if($cache === true) {
- $kname = 'search_recommend_fidthread_'.$fId;
- loadcache($kname);
- }
- if(isset($_G['cache'][$kname]['ts']) && (TIMESTAMP - $_G['cache'][$kname]['ts'] <= 21600)) {
- $result = $_G['cache'][$kname]['result'];
- } else {
- $apiUrl = 'http://api.discuz.qq.com/search/discuz/forumRelated?';
- $params = array(
- 'sId' => $sId,
- 'fId' => $fId,
- 'clientIp' => $_G['clientip']
- );
- $utilService = Cloud::loadClass('Service_Util');
- $response = dfsockopen($apiUrl.$utilService->generateSiteSignUrl($params), 0, '', '', false, $_G['setting']['cloud_api_ip']);
- require_once libfile('class/xml');
- $result = (array) xml2array($response);
- if($cache === true && isset($result['status']) && $result['status'] == 0) {
- save_syscache($kname, array('ts' => TIMESTAMP, 'result' => $result));
- }
- if($result['status'] != 0) {
- $result = null;
- }
- }
- }
- return $result;
- }
- public function getRecWords($needNum = 14, $format = 'num', $fid = 0) {
- global $_G;
- $sId = $_G['setting']['my_siteid'];
- $data = array();
- if($sId) {
- $fid = $fid ? $fid : 0;
- $kname = 'search_recommend_words_' . $fid;
- loadcache($kname);
- $cacheLife = isset($_G['setting']['my_search_data']['recwords_lifetime']) ? intval($_G['setting']['my_search_data']['recwords_lifetime']) : 21600;
- $cloudSettingTime = isset($_G['setting']['my_search_data']['set_forbidden_recwords_time']) ? intval($_G['setting']['my_search_data']['set_forbidden_recwords_time']) : 0;
- $cacheSettingTime = isset($_G['cache'][$kname]['setting_ts']) ? intval($_G['cache'][$kname]['setting_ts']) : 0;
- if((!$cloudSettingTime || $cloudSettingTime == $cacheSettingTime) && isset($_G['cache'][$kname]['ts']) && (TIMESTAMP - $_G['cache'][$kname]['ts'] <= $cacheLife)) {
- $data = $_G['cache'][$kname]['result'];
- } else {
- $apiUrl = 'http://api.discuz.qq.com/search/recwords/get';
- $params = array(
- 's_id' => $sId,
- 'f_id' => $fid,
- 'need_random' => false,
- 'need_num' => $needNum,
- 'version' => $format == 'num' ? 1 : 2, // 1:返回数字下标的结果集、2:返回关联数组形式的结果集
- );
- $utilService = Cloud::loadClass('Service_Util');
- $response = dfsockopen($apiUrl, 0, $utilService->generateSiteSignUrl($params), '', false, $_G['setting']['cloud_api_ip']);
- $result = (array) unserialize($response);
- if(isset($result['status']) && $result['status'] === 0) {
- $data = $result['result'];
- if($cloudSettingTime) {
- save_syscache($kname, array('ts' => TIMESTAMP, 'setting_ts' => $cloudSettingTime, 'result' => $data));
- } else {
- save_syscache($kname, array('ts' => TIMESTAMP, 'result' => $data));
- }
- }
- }
- }
- return $data;
- }
- public function makeSearchSignUrl() {
- global $_G;
- $url = '';
- $params = array();
- $mySearchData = $_G['setting']['my_search_data'];
- $mySiteId = $_G['setting']['my_siteid'];
- $mySiteKey = $_G['setting']['my_sitekey'];
- $cloudAppService = Cloud::loadClass('Service_App');
- if($mySearchData['status'] && $cloudAppService->getCloudAppStatus('search') && $mySiteId) {
- $myExtGroupIds = array();
- $_extGroupIds = explode("\t", $_G['member']['extgroupids']);
- foreach($_extGroupIds as $v) {
- if($v) {
- $myExtGroupIds[] = $v;
- }
- }
- $myExtGroupIdsStr = implode(',', $myExtGroupIds);
- $params = array(
- 'sId' => $mySiteId,
- 'ts' => time(),
- 'cuId' => $_G['uid'],
- 'cuName' => $_G['username'],
- 'gId' => intval($_G['groupid']),
- 'agId' => intval($_G['adminid']),
- 'egIds' => $myExtGroupIdsStr,
- 'fmSign' => '',
- );
- $groupIds = array($params['gId']);
- if($params['agId']) {
- $groupIds[] = $params['agId'];
- }
- if($myExtGroupIds) {
- $groupIds = array_merge($groupIds, $myExtGroupIds);
- }
- $groupIds = array_unique($groupIds);
- foreach($groupIds as $v) {
- $key = 'ugSign' . $v;
- $params[$key] = '';
- }
- $extraParams = array();
- if (isset($_G['setting']['verify']['enabled']) && $_G['setting']['verify']['enabled']) {
- $verifyGroups = C::t('common_member_verify')->fetch($_G['uid']);
- $extraParams['ext_vgIds'] = 0;
- foreach ($verifyGroups as $k => $v) {
- if ($k != 'uid') {
- $position = dintval(substr($k, strlen('verify')));
- $extraParams['ext_vgIds'] = setstatus($position, dintval($v), $extraParams['ext_vgIds']);
- }
- }
- }
- if ($_G['cookie']['ffids' . $_G['uid']]) {
- $ext_ffids = str_replace('D', ',', authcode($_G['cookie']['ffids' . $_G['uid']], 'DECODE'));
- $extraParams['ext_ffids'] = $ext_ffids;
- }
- if (!empty($extraParams)) {
- ksort($extraParams);
- $params = array_merge($params, $extraParams);
- }
- $params['sign'] = md5(implode('|', $params) . '|' . $mySiteKey);
- if ($cloudAppService->getCloudAppStatus('connect') && $_G['member']['conopenid']) {
- $connectService = Cloud::loadClass('Service_Connect');
- $connectService->connectMergeMember();
- $params['openid'] = $_G['member']['conopenid'];
- }
- $params['charset'] = $_G['charset'];
- if($mySearchData['domain']) {
- $domain = $mySearchData['domain'];
- } else {
- $domain = 'search.discuz.qq.com';
- }
- $url = 'http://' . $domain . '/f/discuz';
- }
- return !empty($url) ? array('url' => $url, 'params' => $params) : array();
- }
- }