Exemplo n.º 1
1
 /**
  * Регистрирует решение задачи
  * 
  * @return bool - признак, был ли ответ привязан к авторизованному пользователю
  */
 public function registerSolution($taskIdent, $matchesStr)
 {
     $task = $this->taskByIdent($taskIdent);
     $matchesStr = normalize_string($matchesStr, true);
     $mCnt = $task['m'];
     $sCnt = $task['s'];
     $cols = $task['c'];
     $rows = $task['r'];
     $excluded = $this->strToArray($matchesStr, $mCnt, $cols, $rows);
     ksort($excluded);
     //Вычисляем оставшиеся спички (пробегаем по всем точкам и берём правую и верхнюю спичку)
     $matches = array();
     for ($x = 0; $x <= $cols; $x++) {
         for ($y = 0; $y <= $rows; $y++) {
             $matchId = $this->matchId($x, $y, $x + 1, $y);
             if (!array_key_exists($matchId, $excluded) && $x + 1 <= $cols) {
                 $matches[$matchId] = true;
             }
             $matchId = $this->matchId($x, $y, $x, $y + 1);
             if (!array_key_exists($matchId, $excluded) && $y + 1 <= $rows) {
                 $matches[$matchId] = true;
             }
         }
     }
     $sqCnt = 0;
     //Скопируем массив
     $badMatches = $matches;
     //Вычисляем координаты всех квадратов
     for ($x = 0; $x < $cols; $x++) {
         for ($y = 0; $y < $rows; $y++) {
             //Проверяем точку
             $endX = $x;
             $endY = $y;
             while (++$endX <= $cols && ++$endY <= $rows) {
                 $bounds = $this->isFullSquare($x, $y, $endX, $endY, $matches);
                 if ($bounds) {
                     ++$sqCnt;
                     foreach ($bounds as $key => $val) {
                         unset($badMatches[$key]);
                     }
                 }
             }
         }
     }
     $badMatches = empty($badMatches) ? false : concat(array_keys($badMatches));
     check_condition(!$badMatches, "Bad matches left: [{$badMatches}]");
     check_condition($sqCnt == $sCnt, "Invalid squares cnt: [{$sqCnt}], required: [{$sCnt}].");
     //Сохраняем в базу
     $userId = AuthManager::getUserIdOrNull();
     //Склеим строку из отсартированных спичек
     $matchesStr = $this->arrToStr($excluded);
     //Регистрируем ответ пользователя
     $ansBindedToUser = MatchesBean::inst()->registerAnswer($taskIdent, $matchesStr, $userId);
     //Если зарегистрировали, попробуем дать очки
     if ($ansBindedToUser && $userId) {
         PL_matches::inst()->givePoints(PsUser::inst());
     }
     //Возвратим признак выданных очков
     return $ansBindedToUser;
 }
Exemplo n.º 2
0
 protected function executeImpl(ArrayAdapter $params)
 {
     $unique = $params->str(DiscussionController::JS_DATA_UNIQUE);
     $upDown = $params->bool(DiscussionController::JS_DATA_UPDOWN);
     $entity = $params->str(DiscussionController::JS_DATA_THREAD);
     $theme = $params->str(self::JS_PARAM_THEME);
     $comment = $params->str(self::JS_PARAM_COMMENT);
     $parentId = $params->int(self::JS_PARAM_PARENT_ID);
     $controller = Handlers::getInstance()->getDiscussionController($unique);
     //Валидируем тему
     if (!$parentId && $controller->getDiscussionSettings()->isThemed()) {
         if (!$theme) {
             return 'Введите тему';
         }
         $error = UserInputValidator::validateShortText($theme);
         if ($error) {
             return $error;
         }
         $theme = UserInputTools::safeShortText($theme);
     }
     //Валидируем комментарий
     if (!$comment) {
         return 'Введите комментарий';
     }
     $error = UserInputValidator::validateLongText($comment);
     if ($error) {
         return $error;
     }
     $comment = UserInputTools::safeLongText($comment);
     $msgObj = $controller->saveMessage($entity, $parentId, $comment, $theme, PsUser::inst());
     if (!$msgObj instanceof DiscussionMsg) {
         return 'Ошибка добавления сообщения';
     }
     return new AjaxSuccess($controller->buildLeaf($msgObj));
 }
Exemplo n.º 3
0
 /**
  * Даёт очки пользователю
  */
 public final function givePoints2Users($userId = null, $cnt = 15)
 {
     $users = TESTBean::inst()->getUserIds($userId);
     foreach ($users as $uid) {
         UP_fromadmin::inst()->givePoints(PsUser::inst($uid), $cnt, getRandomString());
     }
 }
Exemplo n.º 4
0
 protected function executeImpl(ArrayAdapter $params)
 {
     $url = $params->str('url');
     $text = $params->str('text');
     $note = $params->str('note');
     if (!$url || !$text) {
         return 'Не передан url или текст';
     }
     /*
      * Если пользователь не просматривал эту страницу и это не администратор - игнорируем.
      */
     $wasOpened = PageOpenWatcher::isPageOpenedByUser($url, PsUser::instOrNull());
     if (!$wasOpened && !AuthManager::isAuthorizedAsAdmin()) {
         return 'Пользователь не открывал страницу';
         //---
     }
     $text = UserInputTools::safeShortText($text);
     $note = $note ? UserInputTools::safeLongText($note) : $note;
     $saved = UtilsBean::inst()->saveMisprint($url, $text, $note, AuthManager::getUserIdOrNull());
     if (!$saved) {
         return 'Запись не была сохранена';
         //---
     }
     return new AjaxSuccess();
 }
Exemplo n.º 5
0
 public function registerSolution($hodes)
 {
     if (is_string($hodes)) {
         $hodes = $this->strToArray($hodes);
     }
     if (!is_array($hodes) || count($hodes) != 64) {
         return false;
     }
     $hodesDone = array();
     $hodesAllowed = null;
     $hodesString = '';
     foreach ($hodes as $hod) {
         $x = $hod[0];
         $y = $hod[1];
         $hodesString .= "{$x}{$y}";
         $hodId = $this->hodId($x, $y);
         if ($x > 0 && $x < 9 && $y > 0 && $y < 9 && !array_key_exists($hodId, $hodesDone) && (!$hodesAllowed || array_key_exists($hodId, $hodesAllowed))) {
             $hodesDone[$hodId] = true;
             $hodesAllowed = $this->getNextAllowedHodes($x, $y);
             continue;
         }
         return false;
     }
     //Пользователь может быть и не авторизован
     $userId = AuthManager::getUserIdOrNull();
     $answerBinded = ChessKnightBean::inst()->registerAnswer($hodesString, $userId);
     if ($userId && $answerBinded) {
         //Дадим очки
         PL_chessknight::inst()->givePoints(PsUser::inst());
     }
     return true;
 }
Exemplo n.º 6
0
 protected function processRequest(ArrayAdapter $params)
 {
     $UPM = UserPointsManager::inst();
     //При открытии страницы отмечаем, что пользователь знает обо всех очках
     $UPM->markUserPointsShown(PsUser::inst());
     //Получим все очки, выданные пользователю
     return new IdentPageFilling(array('points' => $UPM->getAllUserPoints(PsUser::inst())));
 }
Exemplo n.º 7
0
 public function getClients()
 {
     $result = array();
     foreach ($this->getIds('select id_user as id from users where b_admin=0 order by id_user asc') as $userId) {
         $result[] = PsUser::inst($userId);
     }
     return $result;
 }
Exemplo n.º 8
0
 /** @return DateTimeZone */
 public function getCurrentDateTimeZone()
 {
     if (!isset($this->curTZ)) {
         $tzName = AuthManager::isAuthorized() ? PsUser::inst()->getTimezone() : null;
         $this->curTZ = $tzName ? $this->getDateTimeZone($tzName) : $this->getDateTimeZone();
     }
     return $this->curTZ;
 }
Exemplo n.º 9
0
 protected function executeImpl(ArrayAdapter $params)
 {
     $testingId = $params->int('id');
     $tasks = $params->arr('tasks');
     $time = $params->int('time');
     TestingManager::getInstance()->updateTestingResults($testingId, $time, $tasks);
     $pointsGiven = PL_testing::inst()->givePoints(PsUser::inst(), $testingId);
     return new AjaxSuccess($pointsGiven);
 }
Exemplo n.º 10
0
 protected function processImpl(PostArrayAdapter $adapter, $button)
 {
     $FEEDBACK = FeedbackManager::inst();
     /*
      * Тема
      */
     $theme = $adapter->str(FORM_PARAM_THEME);
     $error = UserInputValidator::validateShortText($theme);
     if ($error) {
         return array(FORM_PARAM_THEME => $error);
     }
     $theme = UserInputTools::safeShortText($theme);
     /*
      * Комментарий
      */
     $text = $adapter->str(FORM_PARAM_COMMENT);
     $error = UserInputValidator::validateLongText($text);
     if ($error) {
         return array(FORM_PARAM_COMMENT => $error);
     }
     $text = UserInputTools::safeLongText($text);
     /*
      * АВТОРИЗОВАН - пользуемся стандартным механизмом добавления сообщения в тред.
      * Кодом треда, при этом, является сам пользователь.
      */
     if (AuthManager::isAuthorized()) {
         $msg = $FEEDBACK->saveMessage(PsUser::inst()->getId(), null, $text, $theme, PsUser::inst());
         return new AjaxSuccess($FEEDBACK->buildLeaf($msg));
     }
     /*
      * НЕ АВТОРИЗОВАН - сохраняем сообщение в таблицу анонимных пользователей.
      */
     if (!AuthManager::isAuthorized()) {
         /*
          * Имя пользователя
          */
         $name = $adapter->str(FORM_PARAM_NAME);
         $error = UserInputValidator::validateShortText($name);
         if ($error) {
             return array(FORM_PARAM_NAME => $error);
         }
         $name = UserInputTools::safeShortText($name);
         /*
          * Контакты
          */
         $contacts = $adapter->str(FORM_PARAM_REG_CONTACTS);
         if ($contacts) {
             $error = UserInputValidator::validateShortText($contacts, false);
             if ($error) {
                 return array(FORM_PARAM_REG_CONTACTS => $error);
             }
             $contacts = UserInputTools::safeShortText($contacts);
         }
         $FEEDBACK->saveAnonimousFeedback($name, $contacts, $theme, $text);
         return new AjaxSuccess();
     }
 }
Exemplo n.º 11
0
 public static function validateOldPass($oldPass)
 {
     if (isEmpty($oldPass)) {
         return 'required';
     }
     if (!PsUser::inst()->checkPassword($oldPass)) {
         return 'remote';
     }
     return false;
 }
Exemplo n.º 12
0
 protected function processImpl(PostArrayAdapter $adapter, $button)
 {
     $tzName = $adapter->str(FORM_PARAM_TIMEZONE);
     if (!$tzName) {
         return array(FORM_PARAM_TIMEZONE => 'required');
     }
     if (!PsTimeZone::inst()->isTimeZoneExists($tzName)) {
         return array(FORM_PARAM_TIMEZONE => "Временная зона [{$tzName}] не существует");
     }
     PsUser::inst()->updateTimezone($tzName);
     return new AjaxSuccess();
 }
Exemplo n.º 13
0
 public function send($email)
 {
     //Загружаем код пользователя по e-mail
     $userId = PsUser::instByMail($email)->getId();
     //Генерируем код
     $CODE = PsUserCode::passRecover()->generateAndSave($userId);
     //Отправляем письмо
     try {
         $content = $this->foldedEntity->fetchTpl(array('code' => $CODE->getCode()));
         PsMailSender::fastSend('Восстановление пароля на ' . ServerArrayAdapter::HTTP_HOST(), $content, $email);
     } catch (Exception $ex) {
         //Коды, высланные пользователю, нужно удалить
         $CODE->dropUnusedCodes($userId);
         throw $ex;
     }
 }
Exemplo n.º 14
0
 protected function processImpl(PostArrayAdapter $adapter, $button)
 {
     $oldPass = $adapter->str(FORM_PARAM_REG_OLD_PASS);
     $newPass = $adapter->str(FORM_PARAM_REG_PASS);
     $newPassConfirm = $adapter->str(FORM_PARAM_REG_PASS_CONF);
     $error = UserInputValidator::validateOldPass($oldPass);
     if ($error) {
         return array(FORM_PARAM_REG_OLD_PASS => $error);
     }
     $error = UserInputValidator::validatePass($newPass, $newPassConfirm);
     if ($error) {
         return array(FORM_PARAM_REG_PASS => $error);
     }
     $error = UserInputValidator::validatePassConfirm($newPass, $newPassConfirm);
     if ($error) {
         return array(FORM_PARAM_REG_PASS_CONF => $error);
     }
     PsUser::inst()->changePassword($oldPass, $newPass);
     return new AjaxSuccess();
 }
Exemplo n.º 15
0
 protected function executeImpl(ArrayAdapter $params)
 {
     $avatarId = $params->int('id');
     //Может быть передан и PsConstJs::AVATAR_NO_SUFFIX, а значит - null
     $action = $params->str('action');
     $USER = PsUser::inst();
     switch ($action) {
         case 'set':
             check_condition($USER->setAvatar($avatarId), 'Ошибка установки текущего аватара.');
             break;
         case 'del':
             check_condition($USER->deteleAvatar($avatarId), 'Ошибка удаления аватара.');
             break;
         default:
             raise_error("Неизвестное действие [{$action}].");
     }
     $result['id'] = $USER->hasAvatar() ? $USER->getAvatarId() : PsConstJs::AVATAR_NO_SUFFIX;
     $result['src_big'] = $USER->getAvatarRelPath(PsUser::ID_CARD_AVATAR_DIM);
     return new AjaxSuccess($result);
 }
Exemplo n.º 16
0
 public static function beforeLogout(PsUser $user)
 {
     //Аудит
     UserAudit::inst()->beforeLogout($user->getId());
 }
Exemplo n.º 17
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(PsUser::inst()->getAvatarsList());
 }
Exemplo n.º 18
0
 /**
  * Имплементация метода, создающего сообщение
  * 
  * @return DiscussionMsg созданное сообщение
  */
 public final function saveMessageImpl($threadId, $parentId, $text, $theme, $templateId, $templateData, PsUser $author)
 {
     $threadId = $this->validateThreadId($threadId);
     $unique = $this->SETTINGS->getUnique();
     check_condition($templateId === null || is_integer($templateId), "Код шаблона [{$templateId}] должен быть целочисленным");
     check_condition($templateId === null || $this->SETTINGS->isTemplatable(), "Дискуссия [{$unique}] не работает с шаблонными сообщениями");
     /* @var $parent DiscussionMsg */
     $parent = is_numeric($parentId) ? $this->getMsgById($parentId) : null;
     $checkThreadId = $parent ? $this->validateThreadId($parent->getThreadId()) : $threadId;
     check_condition($threadId === $checkThreadId, "Не совпадают коды тредов: [{$threadId}]!=[{$checkThreadId}]");
     if ($parent) {
         check_condition(!$parent->isDeleted(), 'Родительское сообщение удалено.');
         check_condition(!$parent->isMaxDeepLevel(), 'Достигнут максимальный уровень вложенности.');
     }
     $this->assertCanSaveDiscussionMsg($author, $parent, $threadId);
     $idUserTo = $parent ? $parent->getUser()->getId() : AuthManager::validateUserIdOrNull($this->getIdUserTo4Root($author, $threadId));
     $userTo = is_integer($idUserTo) ? PsUser::inst($idUserTo, true) : null;
     return $this->BEAN->saveMsg($threadId, $text, $theme, $templateId, $templateData, $author, $userTo, $parent);
 }
Exemplo n.º 19
0
 /**
  * Функция, отправляющая сообщение от имени системного администратора.
  * Нужна для отправки всяких уведомлений.
  */
 public final function sendSystemMsg(PsUser $receiver, $param1 = null, $param2 = null)
 {
     $arguments = func_get_args();
     array_unshift($arguments, PsUser::defaultAdmin());
     call_user_func_array(array($this, 'sendMsg'), $arguments);
 }
Exemplo n.º 20
0
 /**
  * Основной метод сохранения сообщения в базу
  * 
  * @return DiscussionMsg
  */
 public function saveMsg($threadId, $text, $theme, $templateId, $templateData, PsUser $author, PsUser $userTo = null, DiscussionMsg $parent = null)
 {
     //Строим запрос
     $insert = array();
     $params = array();
     //Код родителя
     if ($parent) {
         $insert['id_parent'] = '?';
         $params[] = $parent->getId();
     }
     //Пользователь, написавший сообщение
     $insert['id_user'] = '******';
     $params[] = $author->getId();
     //Пользователь, которому предназначено это сообщение
     $insert['id_user_to'] = '?';
     $params[] = $userTo ? $userTo->getId() : null;
     //Глубина сообщения
     $insert['n_deep'] = '?';
     $params[] = $parent ? $parent->getDeep() + 1 : 1;
     //Известен ли комментарий пользователю
     $insert['b_known'] = '?';
     $params[] = $userTo && !$userTo->isIt($author) ? 0 : 1;
     //Подтверждён ли комментарий админом (только если сообщение пишет админ или сообщение написано от имени дефолтного администратора)
     $insert['b_confirmed'] = '?';
     $params[] = $author->isAuthorisedAsAdmin() || PsUser::defaultAdmin()->isIt($author) ? 1 : 0;
     if (is_integer($templateId)) {
         $insert['id_template'] = '?';
         $params[] = $templateId;
         $insert['v_template'] = '?';
         $params[] = $templateData;
     } else {
         //Тема. Если есть предок - тема не нужна
         if (!$parent && $this->themeColumn) {
             $insert[$this->themeColumn] = '?';
             $params[] = $theme;
         }
         //Содержимое
         $insert['content'] = '?';
         $params[] = $text;
     }
     //entityId
     if ($this->threadIdColumn) {
         $insert[$this->threadIdColumn] = '?';
         $params[] = $threadId;
     }
     //date
     $insert['dt_event'] = 'UNIX_TIMESTAMP()';
     //Ссылка на root
     $msgId = null;
     if ($parent) {
         $insert['id_root'] = '?';
         $params[] = $parent->getRootId();
     } else {
         $msgId = $this->getNextRootId();
         $insert['id_root'] = '?';
         $params[] = $msgId;
         $insert[$this->idColumn] = '?';
         $params[] = $msgId;
     }
     $query = 'insert into ' . $this->table . ' (' . implode(', ', array_keys($insert)) . ') values (' . implode(', ', $insert) . ')';
     if ($msgId) {
         $this->update($query, $params);
     } else {
         $msgId = $this->insert($query, $params);
     }
     //Если мы писали ответ на сообщение, написанное нам - отметим, что мы знаем об этом сообщении
     if ($parent && !$parent->isKnown() && $parent->isToUser($author)) {
         $this->update("update {$this->table} set b_known=1 where {$this->idColumn}=? and id_user_to=?", array($parent->getId(), $author->getId()));
     }
     //Если админ отвечает на какое-то сообщение, то оно считается подтверждённым
     if ($parent && !$parent->isConfirmed() && $author->isAuthorisedAsAdmin()) {
         $this->update("update {$this->table} set b_confirmed=1 where {$this->idColumn}=?", $parent->getId());
     }
     return $this->getMsgById($msgId);
 }
Exemplo n.º 21
0
 /**
  * Метод возвращает пользователя, для которого был сгенерирован код.
  * @return PsUser
  */
 public function getUser()
 {
     $userId = $this->getUserId();
     return $userId ? PsUser::inst($userId) : null;
 }
Exemplo n.º 22
0
 public function getJsParams()
 {
     $params['curAvatar'] = PsUser::inst()->hasAvatar() ? PsUser::inst()->getAvatarId() : PsConstJs::AVATAR_NO_SUFFIX;
     return $params;
 }
Exemplo n.º 23
0
 /**
  * Метод вовзращает ссылку на DirItem аватара по умолчанию.
  * Если задан пользователь, то будет возвращён его аватар по умолчанию, иначе - anonymous.
  * 
  * @return DirItem
  */
 public static function getDefaultAvatarDi(PsUser $user = null, $dim = null)
 {
     return $user ? $user->getDefaultAvatarDi($dim) : null;
 }
Exemplo n.º 24
0
 protected function getIdUserTo4Root(PsUser $author, $threadId)
 {
     //Если пользователь сам пишетв ленту, то это сообщение - админу, в противном случае все сообщения идут самому пользователю
     return $author->isIt($threadId) ? DEFAULT_ADMIN_USER : $threadId;
 }
Exemplo n.º 25
0
function smarty_function_html_input($params, Smarty_Internal_Template &$smarty)
{
    $adapter = ArrayAdapter::inst($params);
    $fieldId = $adapter->get('id');
    $label = $adapter->get('label');
    $value = $adapter->get('val');
    $inputType = $adapter->str('type');
    $help = $adapter->str('help');
    $RQ = PostArrayAdapter::inst();
    $attrs = array();
    switch ($inputType) {
        case 'hidden':
            echo PsHtml::hidden($fieldId, $value);
            break;
        case 'text':
            echo PsHtmlForm::text($label, $fieldId, $RQ->str($fieldId, $value), $attrs, $help);
            break;
        case 'datetime':
            $attrs['class'][] = 'ps-datetime-picker';
            echo PsHtmlForm::text($label, $fieldId, $RQ->str($fieldId, $value), $attrs, $help);
            break;
        case 'pass':
            echo PsHtmlForm::password($label, $fieldId, $RQ->str($fieldId));
            break;
        case 'file':
            $label = $adapter->get('label', 'Файл');
            $fieldId = $fieldId ? $fieldId : FORM_PARAM_FILE;
            echo PsHtmlForm::file($label, $fieldId, $help);
            break;
        case 'user':
            $label = $adapter->get('label', 'Ваше имя');
            if (AuthManager::isAuthorized()) {
                echo PsHtmlForm::textInfo($label, PsUser::inst()->getName());
            } else {
                $fieldId = $fieldId ? $fieldId : FORM_PARAM_NAME;
                echo PsHtmlForm::text($label, $fieldId, $RQ->str($fieldId), $attrs, $help);
            }
            break;
        case 'textarea':
            $label = $adapter->get('label', 'Текст сообщения');
            $fieldId = $fieldId ? $fieldId : FORM_PARAM_COMMENT;
            $value = $value ? $value : $RQ->str($fieldId, $value);
            $maxlen = $adapter->str(array('maxlen', 'maxlength'));
            $manual = $adapter->bool('manual');
            $codemirror = $adapter->str('codemirror');
            echo PsHtmlForm::textarea($label, $fieldId, $value, $maxlen, $manual, $codemirror, $attrs, $help);
            break;
        case 'submit':
            $buttons[] = $label ? $label : 'Отправить';
            for ($idx = 0; $idx <= 10; $idx++) {
                $button = $adapter->get("label{$idx}");
                if ($button) {
                    $buttons[] = $button;
                }
            }
            $canReset = $adapter->bool('reset');
            echo PsHtmlForm::submit($buttons, $canReset);
            break;
        case 'yesno':
            $fieldId = $fieldId ? $fieldId : 'yesno';
            $options[] = PsHtml::comboOption(0, 'Нет');
            $options[] = PsHtml::comboOption(1, 'Да');
            echo PsHtmlForm::select($label, $fieldId, $attrs, $options, 0);
            break;
        case 'sex':
            $value = $value ? $value : $RQ->int($fieldId);
            $options[] = PsHtml::comboOption(SEX_GIRL, 'Женский');
            $options[] = PsHtml::comboOption(SEX_BOY, 'Мужской');
            echo PsHtmlForm::select($label, $fieldId, $attrs, $options, $value);
            break;
        case 'posttype':
            $label = $label ? $label : 'Тип поста';
            $fieldId = $fieldId ? $fieldId : FORM_PARAM_POST_TYPE;
            $options = array();
            /* @var $pr PostsProcessor */
            foreach (Handlers::getInstance()->getPostsProcessors() as $type => $pr) {
                $title = $pr->postTitle();
                $options[] = PsHtml::comboOption($type, "{$title} ({$type})");
            }
            echo PsHtmlForm::select($label, $fieldId, $attrs, $options);
            break;
        case 'select':
            echo PsHtmlForm::select($label, $fieldId, $attrs, $adapter->arr('options'), $adapter->str('curVal'), $adapter->bool('hasEmpty'), $help);
            break;
        case 'timezone':
            $label = $label ? $label : 'Выберите временную зону';
            $tzSelect = PsTimeZone::inst()->zonesSelectHtml();
            echo PsHtmlForm::field($label, $tzSelect, $help);
            break;
        default:
            raise_error("Unsupported html input type: [{$inputType}]");
    }
}
Exemplo n.º 26
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(PsUser::inst($params->int('id'))->getIdCardContent());
 }
Exemplo n.º 27
0
 public function send($templateData = null)
 {
     FeedbackManager::inst()->saveTemplatedMessage($this->receiver->getId(), null, $this->templateId, $templateData, $this->author);
 }
Exemplo n.º 28
0
 /**
  * Метод загружает все очки, выданные пользователю
  */
 public function getAllUserPoints(PsUser $user)
 {
     return UserPointsBean::inst()->getAllUserPoints($user->getId());
 }
Exemplo n.º 29
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(UserPointsManager::inst()->givePointsByRequest(PsUser::inst(), $params));
 }
Exemplo n.º 30
0
 protected function processImpl(PostArrayAdapter $adapter, $button)
 {
     $data = new RegFormData();
     /*
      * Имя пользователя
      */
     $name = $adapter->str(FORM_PARAM_REG_NAME);
     $error = UserInputValidator::validateShortText($name);
     if ($error) {
         return array(FORM_PARAM_REG_NAME => $error);
     }
     $name = UserInputTools::safeShortText($name);
     $data->setUserName($name);
     /*
      * Пол
      */
     $sex = $adapter->int(FORM_PARAM_REG_SEX);
     $error = UserInputValidator::validateSex($sex);
     if ($error) {
         return array(FORM_PARAM_REG_SEX => $error);
     }
     $data->setSex($sex);
     /*
      * Обо мне
      */
     $about = $adapter->str(FORM_PARAM_REG_ABOUT);
     if ($about) {
         $error = UserInputValidator::validateLongText($about, false);
         if ($error) {
             return array(FORM_PARAM_REG_ABOUT => $error);
         }
         $data->setAboutSrc($about);
         $data->setAbout(UserInputTools::safeLongText($about));
     }
     /*
      * Контакты
      */
     $contacts = $adapter->str(FORM_PARAM_REG_CONTACTS);
     if ($contacts) {
         $error = UserInputValidator::validateLongText($contacts, false);
         if ($error) {
             return array(FORM_PARAM_REG_CONTACTS => $error);
         }
         $data->setContactsSrc($contacts);
         $data->setContacts(UserInputTools::safeLongText($contacts));
     }
     /*
      * Цитата
      */
     $msg = $adapter->str(FORM_PARAM_REG_MSG);
     if ($msg) {
         $error = UserInputValidator::validateLongText($msg, false);
         if ($error) {
             return array(FORM_PARAM_REG_MSG => $error);
         }
         $data->setMsgSrc($msg);
         $data->setMsg(UserInputTools::safeLongText($msg));
     }
     PsUser::inst()->updateInfo($data);
     return new AjaxSuccess();
 }