Пример #1
0
 /**
  * 自动禁止用户
  * 
  * 用户积分有变动的时候执行
  * 在用户s_PwUserDataDao_update处作为hook执行
  *
  * @param int $uid
  * @param array $fields 
  * @param array $increaseFields 
  * @return array
  */
 public function autoBan($uid, $fields, $increaseFields)
 {
     //[如果自动禁止没有开启]
     $config = Wekit::C('site');
     if (0 == $config['autoForbidden.open'] || !$config['autoForbidden.type']) {
         return false;
     }
     //[自动禁止积分依据]如果更新的积分没有在禁止积分范围内
     $credit = $config['autoForbidden.condition']['credit'];
     $key = 'credit' . $credit;
     if (!in_array($key, array_keys($fields)) && !in_array($key, array_keys($increaseFields))) {
         return false;
     }
     //[禁止积分依据有没有到达禁止条件]
     $userBo = new PwUserBo($uid);
     if ($userBo->getCredit($credit) >= $config['autoForbidden.condition']['num']) {
         return false;
     }
     //执行禁止操作
     $dmList = array();
     $endTime = $config['autoForbidden.day'] > 0 ? $config['autoForbidden.day'] * 24 * 3600 + Pw::getTime() : 0;
     foreach ($config['autoForbidden.type'] as $type) {
         $banDm = new PwUserBanInfoDm();
         $banDm->setEndTime($endTime)->setTypeid($type)->setReason($config['autoForbidden.reason'])->setCreatedUid(0)->setUid($uid);
         $dmList[] = $banDm;
     }
     $this->banUser($dmList);
     //发送消息
     $_notice = array($uid => array('end_time' => $endTime, 'reason' => $config['autoForbidden.reason'], 'type' => $config['autoForbidden.type'], 'operator' => 'system'));
     $this->sendNotice($_notice, 1);
     return true;
 }