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']);
 }
Exemple #11
0
 /** 
  * 激活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;
 }