Beispiel #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;
 }
Beispiel #2
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());
     }
 }
Beispiel #3
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));
 }
Beispiel #4
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;
 }
Beispiel #5
0
 protected function processRequest(ArrayAdapter $params)
 {
     $UPM = UserPointsManager::inst();
     //При открытии страницы отмечаем, что пользователь знает обо всех очках
     $UPM->markUserPointsShown(PsUser::inst());
     //Получим все очки, выданные пользователю
     return new IdentPageFilling(array('points' => $UPM->getAllUserPoints(PsUser::inst())));
 }
Beispiel #6
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;
 }
Beispiel #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;
 }
Beispiel #8
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);
 }
Beispiel #9
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();
     }
 }
Beispiel #10
0
 public static function validateOldPass($oldPass)
 {
     if (isEmpty($oldPass)) {
         return 'required';
     }
     if (!PsUser::inst()->checkPassword($oldPass)) {
         return 'remote';
     }
     return false;
 }
Beispiel #11
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();
 }
Beispiel #12
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);
 }
Beispiel #13
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();
 }
Beispiel #14
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);
 }
Beispiel #15
0
 /**
  * Генерация комментариев к постам.
  * rootCount - кол-во root комментариев
  * childCount - кол-во дочерних комментариев, при этом они привязываются случайным образом
  * postType - если передан, то комментарии будут сгенерированы только к постам этого типа
  * postId - для генерации комменариев к конкретному посту
  * takeTextFromPost - признак, брать ли текст комментариев из тела поста
  */
 public final function generateComments($rootCount = 20, $childCount = 50, $postType = null, $postId = null, $takeTextFromPost = true)
 {
     $cproc = $this->getCommentsProcessor($postType);
     /* @var $proc PostsProcessor */
     foreach ($cproc as $proc) {
         $this->LOGGER->info("<<<CREATING COMMENTS FOR POSTS OF TYPE [" . $proc->getPostType() . "]>>>");
         if ($postId) {
             $posts[] = $proc->getPost($postId);
         } else {
             $posts = $proc->getPosts();
         }
         /* @var $post AbstractPost */
         foreach ($posts as $post) {
             $this->LOGGER->info("Creating comments for post " . $post->getPostType() . '|' . $post->getName());
             for ($i = 1; $i <= $rootCount; $i++) {
                 $proc->getDiscussionController()->saveMessage($post->getId(), null, $this->getText($proc, $post->getId(), $takeTextFromPost), null, PsUser::inst(TESTBean::inst()->getRandomUserId()));
             }
             for ($i = 1; $i <= $childCount; $i++) {
                 $commentsTable = $proc->dbBean()->getCommentsTable();
                 $parentId = TESTBean::inst()->getRandomCommentId($commentsTable, $post->getId());
                 $proc->getDiscussionController()->saveMessage($post->getId(), $parentId, $this->getText($proc, $post->getId(), $takeTextFromPost), null, PsUser::inst(TESTBean::inst()->getRandomUserId()));
             }
         }
     }
 }
Beispiel #16
0
 /**
  * Метод возвращает пользователя, для которого был сгенерирован код.
  * @return PsUser
  */
 public function getUser()
 {
     $userId = $this->getUserId();
     return $userId ? PsUser::inst($userId) : null;
 }
Beispiel #17
0
 /** @return PsUser */
 public function getUserTo()
 {
     return is_numeric($this->id_user_to) ? PsUser::inst($this->id_user_to) : null;
 }
Beispiel #18
0
 public function getJsParams()
 {
     $params['curAvatar'] = PsUser::inst()->hasAvatar() ? PsUser::inst()->getAvatarId() : PsConstJs::AVATAR_NO_SUFFIX;
     return $params;
 }
Beispiel #19
0
<?php

require_once 'AjaxTools.php';
$pass = RequestArrayAdapter::inst()->str(FORM_PARAM_REG_OLD_PASS);
echo $pass && PsUser::inst()->checkPassword($pass) ? 'true' : 'false';
Beispiel #20
0
 protected function assertValidDiscussionEntityId($threadId)
 {
     //Проверим существование пользователя
     PsUser::inst($threadId, true);
 }
Beispiel #21
0
 /**
  * Возвращает пользователей, у которых есть ячейки в мозайке
  */
 public function getImgUsers($imgId)
 {
     $usersArr = $this->getArray('select * from users where id_user in (select distinct id_user from ps_img_mosaic_parts where id_img=? and id_user is not null and owned=1)', $imgId);
     $users = array();
     foreach ($usersArr as $user) {
         $users[$user['id_user']] = PsUser::inst($user);
     }
     return $users;
 }
Beispiel #22
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();
 }
Beispiel #23
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}]");
    }
}
Beispiel #24
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(PsUser::inst()->getAvatarsList());
 }
Beispiel #25
0
 /**
  * Метод выполняет логаут пользователя
  */
 public static function logout()
 {
     if (self::isAuthorized()) {
         //Оповещаем слушатель о разлогинивании пользователя.
         ApplicationListener::beforeLogout(PsUser::inst());
         //Сбросим код пользователя в сессии
         SessionArrayHelper::reset(SESSION_USER_PARAM);
     }
 }
Beispiel #26
0
 /**
  * Основной метод авторизации пользователей в системе
  */
 private static final function loginImpl($login, $passwd, UserLoadType $userType, $afterRegistration = false)
 {
     self::logout();
     $userId = UserBean::inst()->getUserIdByMailPass($login, $passwd, $userType);
     if (is_integer($userId)) {
         /*
          * Пользователь авторизован!
          */
         SessionArrayHelper::setInt(SESSION_USER_PARAM, $userId);
     }
     if (self::isAuthorized()) {
         //Убедимся в наличии пользователя
         $user = PsUser::inst($userId, true);
         try {
             if ($afterRegistration) {
                 //ApplicationListener::afterUserRegistered($user);
             }
             //Оповещаем слушатель об успешной авторизации пользователя.
             //ApplicationListener::afterLogin($user);
         } catch (Exception $ex) {
             //Сделаем дамп ошибки
             ExceptionHandler::dumpError($ex);
         }
     } else {
         check_condition(!$afterRegistration, 'Не удалось авторизоваться после создания пользователя');
     }
     return self::isAuthorized();
 }
Beispiel #27
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(UserPointsManager::inst()->givePointsByRequest(PsUser::inst(), $params));
 }
Beispiel #28
0
 protected function executeImpl(ArrayAdapter $params)
 {
     return new AjaxSuccess(PsUser::inst($params->int('id'))->getIdCardContent());
 }