public function updateSessionId(User $user, $oldUserId) { SessionDAO::create()->dropByUserId($oldUserId); $session = SessionDAO::create()->getByUserId($user->getId()); $session->setSessionId($user->getWSRequest()->getCookie('token'))->setAccessTime(date(self::TIMESTAMP))->setUserId($user->getId()); $session->save(); PropertiesDAO::create()->dropByUserId($oldUserId); UserBlacklistDAO::create()->dropByUserId($oldUserId); NameChangeDAO::create()->dropByUserId($oldUserId); UserDAO::create()->dropById($oldUserId); }
public function run(User $user, $args) { $request = explode(' ', $args, 1); $name = $request[0]; if (!($targetUser = PropertiesDAO::create()->getByUserName($name))) { RespondError::make($user, ['name' => "{$name} не найден"]); return; } $list = NameChangeDAO::create()->getHistoryByUserId($targetUser->getUserId()); $html = '<table class="table table-striped">'; /** @var $row NameChangeDAO */ foreach ($list as $row) { $html .= '<tr>'; $html .= '<td>' . $row->getDateRaw() . '</td>'; $html .= '<td>' . $row->getName() . '</td>'; $html .= '</tr>'; } $html .= '</table>'; return [$html, true]; }
http_response_code(400); return; } /** @var SessionDAO $session */ $session = $container->get('session')->read($_COOKIE['token']); if (!$session->getUserId()) { http_response_code(400); return json_encode(['error' => 'Unauthorized']); } $owner = \SocioChat\DAO\UserDAO::create()->getById($session->getUserId()); $user = \SocioChat\DAO\UserDAO::create()->getById($userId); if (!$user->getId()) { http_response_code(400); return json_encode(['error' => 'No user found']); } $props = $user->getPropeties(); $avatarDir = DI::get()->getConfig()->uploads->avatars->wwwfolder . DIRECTORY_SEPARATOR; $note = $owner->getUserNotes()->getNote($user->getId()); $total = $props->getTotal(); $dtF = new DateTime("@0"); $dtT = new DateTime("@" . $props->getOnlineCount()); $names = []; foreach (NameChangeDAO::create()->getHistoryByUserId($user->getId()) as $name) { /** @var NameChangeDAO $name */ $names[] = $name->getName(); } $response = ['id' => $user->getId(), 'name' => $props->getName(), 'about' => nl2br($props->getAbout()), 'avatar' => $props->getAvatarImg() ? $avatarDir . $props->getAvatarImg() : null, 'tim' => $props->getTim()->getName(), 'sex' => $props->getSex()->getName(), 'city' => $props->getCity(), 'birth' => $props->getAge() ?: $lang->getPhrase('NotSpecified'), 'note' => $note ?: '', 'karma' => $props->getKarma(), 'dateRegister' => $user->getDateRegister(), 'onlineTime' => $dtF->diff($dtT)->format('%a дней %h часов %i минут'), 'wordRating' => $props->getWordRating() ? $props->getWordRating() . '-й из ' . $total : $lang->getPhrase('NotSpecified'), 'rudeRating' => $props->getRudeRating() ? $props->getRudeRating() . '-й из ' . $total : $lang->getPhrase('NotSpecified'), 'musicRating' => $props->getMusicRating() ? $props->getMusicRating() . '-й из ' . $total : $lang->getPhrase('NotSpecified'), 'names' => implode(', ', $names)]; $userActions = new \SocioChat\Permissions\UserActions($owner); $response['allowed'] = $userActions->getAllowed($user); http_response_code(200); echo json_encode($response);
private function handleNameChange(User $user, $request) { $name = $request[PropertiesDAO::NAME]; $guestName = $user->getLang()->getPhrase('Guest'); $nameChangeFreq = DI::get()->getConfig()->nameChangeFreq; $isNewbie = mb_strpos($name, $guestName) !== false; $changeLog = NameChangeDAO::create()->getLastByUser($user); $hasNameChanged = $name != $user->getProperties()->getName(); if ($isNewbie) { $newname = str_replace($guestName, TimEnum::create($request[PropertiesDAO::TIM])->getShortName(), $name); $duplUser = PropertiesDAO::create()->getByUserName($newname); if (!($duplUser->getId() && $duplUser->getUserId() != $user->getId())) { $name = $newname; } } elseif ($changeLog && $hasNameChanged && !$this->isExpired($changeLog, $nameChangeFreq)) { RespondError::make($user, $user->getLang()->getPhrase('NameChangePolicy', date('Y-m-d H:i', $changeLog->getDate() + $nameChangeFreq))); return; } if ($changeLog = NameChangeDAO::create()->getLastByName($name)) { if ($changeLog->getUserId() != $user->getId()) { if (!$this->isExpired($changeLog, $nameChangeFreq)) { RespondError::make($user, $user->getLang()->getPhrase('NameTakePolicy', date('Y-m-d H:i', $changeLog->getDate() + $nameChangeFreq))); return; } } } if ($hasNameChanged && !$isNewbie) { NameChangeDAO::create()->setUser($user)->save(); } }