/** * 自动禁止用户 * * 用户积分有变动的时候执行 * 在用户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; }