Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 protected function processJoin(ChainContainer $chain)
 {
     if (isset($chain->getRequest()['user_id'])) {
         ChannelHandler::joinPrivate($chain);
     } else {
         ChannelHandler::joinPublic($chain);
     }
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 7
0
 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();
 }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
 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);
 }