public function handleRequest(ChainContainer $chain) { $user = $chain->getFrom(); if (isset($chain->getRequest()['subject']) && $chain->getRequest()['subject'] == 'Ping') { return $this->manageRequest($user, $this->pingTimers, false); } return $this->manageRequest($user, $this->otherTimers); }
public function handleRequest(ChainContainer $chain) { $user = $chain->getFrom(); if (isset($chain->getRequest()['subject']) && $chain->getRequest()['subject'] == 'Message') { $this->setMsgTimer($user); return true; } if (!isset($this->adTimers[$user->getId()])) { $this->setAdLoop($user); } return true; }
protected function processJoin(ChainContainer $chain) { if (isset($chain->getRequest()['user_id'])) { ChannelHandler::joinPrivate($chain); } else { ChannelHandler::joinPublic($chain); } }
public function handleRequest(ChainContainer $chain) { $request = $chain->getRequest(); if (!isset($request['subject']) || !isset($this->map[$request['subject']])) { return false; } $controllerName = $this->map[$request['subject']]; $controller = new $controllerName(); /* @var $controller ControllerBase */ if ($controller->validateFields($chain) === false) { return false; } $controller->handleRequest($chain); }
public function validateFields(ChainContainer $chain) { $request = $chain->getRequest(); if (empty($this->getFields())) { return; } $user = $chain->getFrom(); foreach ($this->getFields() as $field) { if (!isset($request[$field])) { RespondError::make($user, $user->getLang()->getPhrase('RequiredPropertyNotSpecified')); return false; } } }
protected function processRemove(ChainContainer $chain) { $request = $chain->getRequest(); $user = $chain->getFrom(); if (!($unbanUser = UserDAO::create()->getById($request['user_id']))) { RespondError::make($user, ['user_id' => $user->getLang()->getPhrase('ThatUserNotFound')]); return; } if ($unbanUser->getId() == $user->getId()) { RespondError::make($user, ['user_id' => $user->getLang()->getPhrase('CantDoToYourself')]); return; } $user->getBlacklist()->unbanUserId($unbanUser->getId()); $user->save(); $this->unbanResponse($user, $unbanUser); }
protected function processSave(ChainContainer $chain) { $request = $chain->getRequest(); $user = $chain->getFrom(); if (!($notedUser = UserDAO::create()->getById($request[UserNotesDAO::USER_ID]))) { RespondError::make($user, ['user_id' => $user->getLang()->getPhrase('ThatUserNotFound')]); return; } if ($notedUser->getId() == $user->getId()) { RespondError::make($user, ['user_id' => $user->getLang()->getPhrase('CantDoToYourself')]); return; } $dao = $user->getUserNotes()->setUserId($user->getId())->setNotedUserId($notedUser->getId())->setNote($this->filterInput($request[UserNotesDAO::NOTE])); $dao->save(); $this->guestResponse($user); }
private function manageKarma(ChainContainer $chain, $mark) { $operator = $chain->getFrom(); $request = $chain->getRequest(); if (!isset($request['user_id'])) { RespondError::make($operator, ['user_id' => $operator->getLang()->getPhrase('RequiredPropertyNotSpecified')]); return; } if ($request['user_id'] == $operator->getId()) { RespondError::make($operator, ['user_id' => $operator->getLang()->getPhrase('CantDoToYourself')]); return; } if (!$operator->isRegistered()) { RespondError::make($operator, ['user_id' => 'Only available for registered user']); return; } if ($operator->getProperties()->getOnlineCount() < 3600) { RespondError::make($operator, ['user_id' => $operator->getLang()->getPhrase('OnlineTimeTooLow')]); return; } $users = DI::get()->getUsers(); $user = $users->getClientById($request['user_id']); if (!$user) { $properties = PropertiesDAO::create()->getByUserId($request['user_id']); } else { $properties = $user->getProperties(); } $lastMark = UserKarmaDAO::create()->getLastMarkByEvaluatorId($request['user_id'], $operator->getId()); if ($lastMark) { if (time() - strtotime($lastMark->getDateRegister()) < DI::get()->getConfig()->karmaTimeOut) { RespondError::make($operator, ['user_id' => $operator->getLang()->getPhrase('profile.KarmaTimeOut')]); return; } } $karma = UserKarmaDAO::create()->getKarmaByUserId($request['user_id']); $properties->setKarma($karma + $mark)->save(); $mark = UserKarmaDAO::create()->setUserId($request['user_id'])->setEvaluator($operator)->setMark($mark)->setDateRegister(DbQueryHelper::timestamp2date()); $mark->save(); $chatId = $operator->getChannelId(); $response = (new MessageResponse())->setGuests($users->getUsersByChatId($chatId))->setChannelId($chatId)->setTime(null); DI::get()->getUsers()->setResponse($response)->notify(); }
private static function checkRestrictions(ChainContainer $chain, UserCollection $users) { $user = $chain->getFrom(); $request = $chain->getRequest(); $lang = $user->getLang(); if (!isset($request[PropertiesDAO::USER_ID])) { RespondError::make($user); return; } if (!($desiredUser = $users->getClientById($request[PropertiesDAO::USER_ID]))) { RespondError::make($user, [PropertiesDAO::USER_ID => $lang->getPhrase('ThatUserNotFound')]); return; } if ($desiredUser->getId() == $user->getId()) { RespondError::make($user, [PropertiesDAO::USER_ID => $lang->getPhrase('CantDoToYourself')]); return; } if ($desiredUser->isInPrivateChat()) { RespondError::make($user, [PropertiesDAO::USER_ID => $lang->getPhrase('UserAlreadyInPrivate')]); return; } if ($user->isInPrivateChat()) { RespondError::make($user, [PropertiesDAO::USER_ID => $lang->getPhrase('YouAlreadyInPrivate')]); return; } return $desiredUser; }
private function filterInput(ChainContainer $appChain) { $from = $appChain->getFrom(); $request = $appChain->getRequest(); unset($request['self']); // skip direct command from client $chain = (new Chain())->setRequest($request)->setUser($from)->addHandler(new InputFilter())->addHandler(new BlackListFilter())->addHandler(new LineBreakFilter())->addHandler(new CommandFilter())->addHandler(new MusicFilter()); $chain->run(); $request = $chain->getRequest(); if (isset($request['self'])) { unset($request['self']); $appChain->setRequest($request); return true; } $appChain->setRequest($request); }
protected function processRegister(ChainContainer $chain) { $user = $chain->getFrom(); $request = $chain->getRequest(); $email = $request['login']; $duplUser = UserDAO::create()->getByEmail($email); $isSameUser = $duplUser->getId() == $user->getId(); if ($duplUser->getId() && !$isSameUser) { RespondError::make($user, ['email' => $user->getLang()->getPhrase('EmailAlreadyRegistered')]); return; } if (!$user->isRegistered()) { $this->checkReferral($user); } $userDAO = $user->getUserDAO(); $userDAO->setEmail($email)->setPassword(password_hash($request['password'], PASSWORD_BCRYPT)); $userDAO->save(); $this->sendNotifyResponse($user); }