public function gainReward($uid, $reward, $taskname) { $userBo = Wekit::getLoginUser(); list($id) = explode('-', $reward['value'], 2); $time = abs(intval($reward['time'])); /* @var $userBelongDs PwUserBelong */ $userBelongDs = Wekit::load('user.PwUserBelong'); $info = $userBelongDs->getUserBelongs($uid); $_groups = array(); foreach ($info as $_item) { $_groups[$_item['gid']] = $_item['endtime']; } $_groups[$id] = $time ? Pw::getTime() + 24 * 3600 * $time : 0; /* @var $userService PwUserService */ $userService = Wekit::load('user.srv.PwUserService'); list($gid, $groups) = $userService->caculateUserGroupid($userBo->gid, $_groups); $dm = new PwUserInfoDm($uid); $dm->setGroupid($gid)->setGroups($groups); /* @var $userDs PwUser */ $userDs = Wekit::load('user.PwUser'); $result = $userDs->editUser($dm, PwUser::FETCH_MAIN); if ($result instanceof PwError) { return $result; } return true; }
/** * 根据版主名单更新数据<1.pw_user_belong 2.pw_user中的groups字段> * * @param array $manager 所有的版主名单 */ public function updateManager($manager) { $newManager = Wekit::load('user.PwUser')->fetchUserByName($manager); $uids = array_keys(Wekit::load('user.PwUserBelong')->getUserByGid(5)); $oldManager = Wekit::load('user.PwUser')->fetchUserByUid($uids); if (!$newManager && !$oldManager) { return; } $newUids = array_keys($newManager); $oldUids = array_keys($oldManager); $add = array_diff($newUids, $oldUids); $del = array_diff($oldUids, $newUids); if (!$add && !$del) { return; } Wind::import('SRV:user.dm.PwUserInfoDm'); $belongs = $this->getBelongs(array_merge($add, $del)); foreach ($add as $uid) { $dm = new PwUserInfoDm($uid); $belong = isset($belongs[$uid]) ? $belongs[$uid] : array(); if ($newManager[$uid]['groupid']) { $belong[5] = 0; $dm->setGroupid($newManager[$uid]['groupid']); } else { $dm->setGroupid(5); } $dm->setGroups($belong); Wekit::load('user.PwUser')->editUser($dm, PwUser::FETCH_MAIN); } foreach ($del as $uid) { $dm = new PwUserInfoDm($uid); $belong = isset($belongs[$uid]) ? $belongs[$uid] : array(); unset($belong[5]); if ($oldManager[$uid]['groupid'] == 5) { $dm->setGroupid(0); } else { $dm->setGroupid($oldManager[$uid]['groupid']); } $dm->setGroups($belong); Wekit::load('user.PwUser')->editUser($dm, PwUser::FETCH_MAIN); } }
public function setUser($username, $password, $email, $groupid = 3, $uid = 0) { if (!$email) { return new PwError('ADMIN:founder.edit.fail.email.empty'); } Wind::import('SRV:user.dm.PwUserInfoDm'); $userDm = new PwUserInfoDm($uid); $userDm->setEmail($email); $userDm->setGroupid($groupid); $password && $userDm->setPassword($password); if (!$uid) { $userDm->setUsername($username); return $this->loadUser()->addUser($userDm); } else { return $this->loadUser()->editUser($userDm); } }
public function deleteBan($uid) { if (!$uid) { return false; } $userDm = new PwUserInfoDm($uid); $userDm->setGroupid(0)->setGroups(array()); /* @var $groupService PwUserGroupsService */ $groupService = Wekit::load('usergroup.srv.PwUserGroupsService'); $strategy = Wekit::C('site', 'upgradestrategy'); $_credit = $this->_getUserDs()->getUserByUid($uid, PwUser::FETCH_DATA); $credit = $groupService->calculateCredit($strategy, $_credit); $memberid = $groupService->calculateLevel($credit, 'member'); $userDm->setMemberid($memberid); /* @var $userDs PwUser */ $userDs = Wekit::load('SRV:user.PwUser'); $userDs->editUser($userDm, PwUser::FETCH_MAIN); return $memberid; }
public function setUser($username, $password, $email, $groupid = 3, $uid = 0) { if (!$email) { return new PwError('ADMIN:founder.edit.fail.email.empty'); } Wind::import('SRV:user.dm.PwUserInfoDm'); $userDm = new PwUserInfoDm($uid); $userDm->setUsername($username); $userDm->setEmail($email); $userDm->setGroupid($groupid); $password && $userDm->setPassword($password); if (!$uid) { $uid = $this->loadUser()->addUser($userDm); //默认头像处理 windid处理 //Wekit::load('SRV:user.srv.PwUserService')->restoreDefualtAvatar($uid); return $uid; } else { return $this->loadUser()->editUser($userDm); } }
public function welcome(PwUserBo $userBo, $ip) { if (0 != $userBo->info['groupid'] || $userBo->info['groups']) { /* @var $_userBelong PwUserBelong */ $_userBelong = Wekit::load('user.PwUserBelong'); $belongs = $_userBelong->getUserBelongs($userBo->uid); $_groups = array(); $gid = 0; foreach ($belongs as $_gid => $_item) { $_groups[$_gid] = $_item['endtime']; } if ($_groups) { /* @var $userService PwUserService */ $userService = Wekit::load('user.srv.PwUserService'); list($gid, $_groups) = $userService->caculateUserGroupid($userBo->info['groupid'], $_groups); } $dm = new PwUserInfoDm($userBo->uid); $dm->setGroupid($gid)->setGroups($_groups); Wekit::load('user.PwUser')->editUser($dm, PwUser::FETCH_MAIN); } return true; }
/** * 过滤用户DM同时设置用户的相关信息 * * @param PwUserInfoDm $userDm * @param array $hasCredit * @return PwUserInfoDm */ protected function filterUserDm(PwUserInfoDm $userDm, $hasCredit = array()) { //如果开启邮箱激活,则设置该状态为0,否则设置该状态为1 $_uncheckGid = false; if ($this->config['active.mail']) { $userDm->setUnactive(true); $_uncheckGid = true; } //如果开启审核,则设置该状态为0,否则设置该状态为1 if ($this->config['active.check']) { $userDm->setUncheck(true); $_uncheckGid = true; } //【用户注册】未验证用户组 if ($_uncheckGid) { $userDm->setGroupid(7); $userDm->setGroups(array()); } $_credit = $this->_getRegisterAddCredit($hasCredit); //【用户注册】计算memberid /* @var $groupService PwUserGroupsService */ $groupService = Wekit::load('usergroup.srv.PwUserGroupsService'); $credit = $groupService->calculateCredit(Wekit::C('site', 'upgradestrategy'), $_credit); $memberid = $groupService->calculateLevel($credit); $userDm->setMemberid($memberid); return $userDm; }
/** * 批量激活用户 * */ public function doactiveAction() { $uids = $this->getInput('uid', 'post'); if (!$uids) { $this->showError('operate.select'); } /* @var $userDs PwUser */ $userDs = Wekit::load('user.PwUser'); $infos = $userDs->fetchUserByUid($uids, PwUser::FETCH_MAIN); /* @var $groupService PwUserGroupsService */ $groupService = Wekit::load('usergroup.srv.PwUserGroupsService'); $strategy = Wekit::C('site', 'upgradestrategy'); $clearUid = array(); foreach ($infos as $_temp) { $clearUid[] = $_temp['uid']; if (Pw::getstatus($_temp['status'], PwUser::STATUS_UNACTIVE)) { $userDm = new PwUserInfoDm($_temp['uid']); $userDm->setUnactive(false); if (!Pw::getstatus($_temp['status'], PwUser::STATUS_UNCHECK)) { $userDm->setGroupid(0); $_credit = $userDs->getUserByUid($_temp['uid'], PwUser::FETCH_DATA); $credit = $groupService->calculateCredit($strategy, $_credit); $memberid = $groupService->calculateLevel($credit, 'member'); $userDm->setMemberid($memberid); } $userDs->editUser($userDm, PwUser::FETCH_MAIN); } } $this->_getDs()->batchActiveUser($clearUid); $this->showMessage('operate.success'); }
/** * 设置用户组 */ public function dosetAction() { $gid = $this->getInput('gid', 'post'); if (!$gid) { $this->showError('USER:right.gid.require'); } if (in_array($this->loginUser->gid, $this->banGid)) { $this->showError('USER:update.error'); } /* @var $belongDs PwUserBelong */ $belongDs = Wekit::load('user.PwUserBelong'); $belongs = $belongDs->getUserBelongs($this->loginUser->uid); $_groups = array(); $time = Pw::getTime(); foreach ($belongs as $_item) { if ($_item['endtime'] == 0 || $_item['endtime'] > $time) { $_groups[$_item['gid']] = $_item['endtime']; } } //普通组不能作为当前组,如果拥有拥有附加组的话,当前组必定产生于附加用户组 if (!$_groups || !in_array($gid, array_keys($_groups))) { $gid = 0; } if ($gid == 0) { /* @var $userService PwUserService */ $userService = Wekit::load('user.srv.PwUserService'); list($gid, $_groups) = $userService->caculateUserGroupid($gid, $_groups); } $dm = new PwUserInfoDm($this->loginUser->uid); $dm->setGroupid($gid)->setGroups($_groups); /* @var $userDs PwUser */ $userDs = Wekit::load('user.PwUser'); $result = $userDs->editUser($dm, PwUser::FETCH_MAIN); if ($result instanceof PwError) { $this->showError($result->getError()); } $this->showMessage('USER:update.success', 'profile/right/run'); }
/** * 操作用户组设置 * * @return void */ public function doEditGroupAction() { $info = $this->checkUser(); list($groupid, $groups, $endtime) = $this->getInput(array('groupid', 'groups', 'endtime'), 'post'); /* @var $groupDs PwUserGroups */ $groupDs = Wekit::load('usergroup.PwUserGroups'); $banGids = array_keys($groupDs->getGroupsByType('default')); //默认用户组 $clearGids = array(); //如果用户原先的用户组是在默认组中,则该用户组不允许被修改 if (in_array($info['groupid'], $banGids) && $info['groupid'] != $groupid) { switch ($info['groupid']) { case 6: $this->showError('USER:user.belong.delban.error'); break; case 7: $this->showError('USER:user.belong.delactive.error'); break; default: $this->showError('USER:user.belong.default.error'); break; } } //如果用户原先的用户组是不在默认组中,新设置的用户组在默认组中,则抛错 if (!in_array($info['groupid'], $banGids) && in_array($groupid, $banGids) && $info['groupid'] != $groupid) { switch ($groupid) { case 6: $this->showError('USER:user.belong.ban.error'); break; case 7: $this->showError('USER:user.belong.active.error'); break; default: $this->showError('USER:user.belong.default.error'); break; } } if (($if = in_array($groupid, $banGids)) || ($r = array_intersect($banGids, $groups))) { $this->showError('USER:user.belong.default.error'); // (!$if && $r) && $groupid = array_shift($r); } else { foreach ($groups as $value) { $clearGids[$value] = isset($endtime[$value]) && $endtime[$value] ? Pw::str2time($endtime[$value]) : 0; } if ($groupid == 0) { /* @var $userService PwUserService */ $userService = Wekit::load('user.srv.PwUserService'); list($groupid, $clearGids) = $userService->caculateUserGroupid($groupid, $clearGids); } elseif (!isset($clearGids[$groupid])) { $clearGids[$groupid] = 0; } } $oldGid = explode(',', $info['groups']); $info['groupid'] && array_push($oldGid, $info['groupid']); //总版主处理 if (in_array(5, $oldGid) && !isset($clearGids[5])) { $this->showError('USER:user.forumadmin.delete.error'); } if (!in_array(5, $oldGid) && isset($clearGids[5])) { $this->showError('USER:user.forumadmin.add.error'); } Wind::import('SRV:user.dm.PwUserInfoDm'); $dm = new PwUserInfoDm($info['uid']); $dm->setGroupid($groupid)->setGroups($clearGids); /* @var $userDs PwUser */ $userDs = Wekit::load('user.PwUser'); $result = $userDs->editUser($dm, PwUser::FETCH_MAIN); if ($result instanceof PwError) { $this->showError($result->getError()); } /* if (in_array($groupid, $banGids)) { Wekit::load('SRV:forum.srv.PwForumMiscService')->updateDataByUser($info['username']); } */ $this->showMessage('USER:update.success', 'u/manage/editGroup?uid=' . $info['uid']); }
/** * 激活email * * @param int $uid 用户ID * @param string $email 用户Email * @param string $code 激活码 * @return boolean */ public function activeEmail($uid, $email, $code) { /* @var $activeCodeDs PwUserActiveCode */ $activeCodeDs = Wekit::load('user.PwUserActiveCode'); $info = $activeCodeDs->getInfoByUid($uid); if (!$info || $info['email'] != $email || $info['code'] != $code) { return new PwError("USER:illegal.request"); } if ($info['active_time'] > 0) { return new PwError('USER:active.email.dumplicate'); } $validTime = $this->activeCodeValidTime * 3600; if ($info['send_time'] + $validTime < Pw::getTime()) { return new PwError('USER:active.email.overtime'); } $activeCodeDs->activeCode($uid, Pw::getTime()); $info = $this->_getUserDs()->getUserByUid($uid, PwUser::FETCH_MAIN); if (Pw::getstatus($info['status'], PwUser::STATUS_UNACTIVE)) { $userDm = new PwUserInfoDm($info['uid']); $userDm->setUnactive(false); !Pw::getstatus($info['status'], PwUser::STATUS_UNCHECK) && $userDm->setGroupid(0); $this->_getUserDs()->editUser($userDm, PwUser::FETCH_MAIN); } /* @var $registerCheckDs PwUserRegisterCheck */ $registerCheckDs = Wekit::load('user.PwUserRegisterCheck'); $registerCheckDs->activeUser($uid); return true; }