public function check($permission) { if (!isset($permission['move']) || !$permission['move']) { return false; } if (!$this->srv->user->comparePermission(Pw::collectByKey($this->srv->data, 'created_userid'))) { return new PwError('permission.level.move', array('{grouptitle}' => $this->srv->user->getGroupInfo('name'))); } if (isset($this->fid)) { Wind::import('SRV:forum.bo.PwForumBo'); $this->forum = new PwForumBo($this->fid); if (!$this->forum->isForum()) { return new PwError('BBS:manage.error.move.targetforum'); } if ($this->topictype && !$this->forum->forumset['topic_type']) { return new PwError('BBS:post.topictype.closed'); } if ($this->forum->forumset['topic_type'] && $this->forum->forumset['force_topic_type'] && !$this->topictype) { $topicTypes = Wekit::load('SRV:forum.PwTopicType')->getTypesByFid($this->forum->fid); if ($topicTypes) { return new PwError('BBS:post.topictype.empty'); } } } return true; }
public function check($permission) { if (!isset($permission['lock']) || !$permission['lock']) { return false; } if (!$this->srv->user->comparePermission(Pw::collectByKey($this->srv->data, 'created_userid'))) { return new PwError('permission.level.lock', array('{grouptitle}' => $this->srv->user->getGroupInfo('name'))); } return true; }
public function check($permission) { if (!isset($permission['topped']) || !$permission['topped']) { return false; } if (array_diff(Pw::collectByKey($this->srv->data, 'topped'), array('0'))) { $log = Wekit::load('log.PwLog')->fetchLogByTid(array_keys($this->srv->data), array('19', '20', '21')); if (!$this->srv->user->comparePermission(Pw::collectByKey($log, 'created_userid'))) { return new PwError('permission.level.topped', array('{grouptitle}' => $this->srv->user->getGroupInfo('name'))); } } if ($this->topped) { if ($this->topped > $permission['topped_type']) { return new PwError('BBS:manage.error.topped.permission.' . $this->topped); } } return true; }
public function displayReplylist($replies, $contentLength = 140) { $users = Wekit::load('user.PwUser')->fetchUserByUid(array_unique(Pw::collectByKey($replies, 'created_userid'))); foreach ($replies as $key => $value) { $value['content'] = WindSecurity::escapeHTML($value['content']); if (!empty($value['ifshield'])) { $value['content'] = '<div class="shield">此帖已被屏蔽</div>'; } elseif ($users[$value['created_userid']]['groupid'] == '6') { $value['content'] = '用户被禁言,该主题自动屏蔽!'; } elseif ($value['useubb']) { $ubb = new PwUbbCodeConvertThread(); $value['reminds'] && $ubb->setRemindUser($value['reminds']); $value['content'] = PwSimpleUbbCode::convert($value['content'], $contentLength, $ubb); } else { $value['content'] = Pw::substrs($value['content'], $contentLength); } !$value['word_version'] && ($value['content'] = Wekit::load('SRV:word.srv.PwWordFilter')->replaceWord($value['content'], $value['word_version'])); $replies[$key] = $value; } return $replies; }
private function _getAutoData($param) { $model = $this->bo->getModel(); if (!$model) { return false; } $cls = sprintf('PwDesign%sDataService', ucwords($model)); $service = Wekit::load('design.srv.model.' . $model . '.' . $cls); $service->setModuleBo($this->bo); $PwDesignShield = Wekit::load('design.PwDesignShield'); $limit = $param['limit']; $start = $param['start']; $times = 20; do { $data = $service->buildAutoData($param, $param['order'], $limit, $start); $count = count($data); if ($count < 1) { break; } $shield_num = 0; $fromids = Pw::collectByKey($data, 'standard_fromid'); $shields = $PwDesignShield->fetchByFromidsAndApp($fromids, $model); $shieldids = $shields ? Pw::collectByKey($shields, 'from_id') : array(); foreach ($data as $k => $v) { if (in_array($v['standard_fromid'], $shieldids) || $v['standard_title'] === '') { $shield_num++; continue; } else { $v['from_type'] = 'auto'; $v['data_type'] = 1; $this->_newAutoIds[$v['standard_fromid']] = $v; } } $start += $limit; if ($count < $limit) { break; } $limit = $shield_num; } while (--$times > 0 && $limit > 0); return true; }
/** * 获取用户权限列表 * * @param int $page * @param int $perpage * @return array|PwError */ public function fetchByPage($page, $perpage) { list($count, $list, $page) = $this->_loadAuthService()->findByPage($page, $perpage); $uids = Pw::collectByKey($list, 'uid'); $users = $this->getAdminUserService()->getUserByUids($uids); foreach ($list as $key => $value) { if (isset($users[$value['uid']])) { $value['username'] = $users[$value['uid']]['username']; } $list[$key] = $value; } return array($count, $list, $page); }
public function initData($threaddb) { $tids = Pw::collectByKey($threaddb, 'tid'); $this->_data = Wekit::load('forum.PwThread')->fetchHit($tids); }
/** * 根据版块id获取子版块 * * @param int $fid * @return array */ public function getChildForumByFid($fid) { $fid = intval($fid); if ($fid < 1) { return $this->buildResponse(FORUM_INVALID_PARAMS); } $forumService = $this->_getFroumService(); $map = $forumService->getForumMap(); $forumList = $forumService->getForumsByLevel($fid, $map); if ($forumList instanceof PwError) { return $this->buildResponse(-1, $forumList->getError()); } $forums = $subForums = $secondSubForums = array(); $count = 0; $fids = Pw::collectByKey($forumList, 'fid'); $domains = $this->_getDomainDs()->fetchByTypeAndId('forum', $fids); foreach ($forumList as $v) { $v['domain'] = ''; if (isset($domains[$v['fid']])) { $v['domain'] = $domains[$v['fid']]['domain']; } $statistics = $this->_getPwForum()->getForum($v['fid'], PwForum::FETCH_STATISTICS); if ($v['type'] == 'forum') { //TODO 用户版块访问权限 $forums[$v['fid']] = array('fid' => $v['fid'], 'forumname' => strip_tags($v['name']), 'type' => $v['type'], 'todaypost' => $statistics['todayposts'], 'domain' => $v['domain']); } elseif ($v['type'] == 'sub') { $subForums[$v['parentid']][$v['fid']] = array('fid' => $v['fid'], 'forumname' => strip_tags($v['name']), 'type' => $v['type'], 'todaypost' => $statistics['todayposts'], 'domain' => $v['domain']); } elseif ($v['type'] == 'sub2') { $secondSubForums[$v['parentid']][$v['fid']] = array('fid' => $v['fid'], 'forumname' => strip_tags($v['name']), 'type' => $v['type'], 'todaypost' => $statistics['todayposts'], 'domain' => $v['domain']); } $count++; } $result = array(); foreach ($forums as $k => $v) { $v['child'] = isset($subForums[$k]) ? $this->_fetchSubForum($subForums[$k], $secondSubForums) : array(); $result[] = $v; } return $this->buildResponse(0, array('count' => $count, 'forums' => $result)); }
/** * 与指定用户比较权限等级 * * @param array $uids 用户id序列 * @return bool */ public function comparePermission($uids) { is_array($uids) || ($uids = array($uids)); $level = $this->getPermission('manage_level'); $users = $this->_getUserDs()->fetchUserByUid($uids); if ($gids = array_diff(Pw::collectByKey($users, 'groupid'), array('0'))) { $array = $this->_getPermissionDs()->getPermissionByRkeyAndGids('manage_level', $gids); foreach ($array as $key => $value) { if ($value['rvalue'] && $level < $value['rvalue']) { return false; } } } return true; }