Работа с пользователями через Modx API

апрель 27 , 2015
Метки:

Рассматриваем базовые приемы работы с пользователями Modx, получение их списка, создание новых, редактирование, extended-параметры

В этой небольшой заметке я приведу код, который получает список пользователей Modx, создает нового пользователя и добавляет ему extended-параметры. Extended-параметры - это обычная json-строка, где мы можем хранить любые данные пользователя, если не хватает штатных полей Modx. В нашем случае это будет числовой user_id и логическое поле checked. Это может понадобиться, например, при создании личного кабинета на сайте.

Получение списка пользователей

    // Получаем список пользователей
    $query = $modx->newQuery('modUser');
    $users = $modx->getCollection('modUser',$query);
    
    Выводим общее количество пользователей
    echo sprintf('total count = %s

', count($users)); foreach($users as $i => $user) { // Выводим id и имя пользователя $id = $user->id; $username = $user->username; echo sprintf('
%s - %s
', $username, $id); $profile = $user->getOne('Profile'); // Получаем дополнительные поля $fields = $profile->get('extended'); // Если поле не назначено if(is_null($fields['user_id'])) { $fields['user_id'] = 10; $fields['checked'] = true; // Задаем нужные значения и сохраняем их $profile->set('extended', $fields); $profile->save(); } }

Добавление нового пользователя

    $username = 'test_user';
    // Количество пользователей с таким именем
    $count = $modx->getCount('modUser', array('username' => $username));
    // Если такого пользователя нет
    if($count == 0) {
        // Создаем нового с указанным паролем
        $user = $modx->newObject('modUser', array('username' => $username));
        $user->set('password', '12345678');
        $profile = $modx->newObject('modUserProfile');
        $user->addOne($profile);

        // Назначаем дополнительные поля
        $fields = $profile->get('extended');
        $fields['user_id'] = 10;
        $fields['checked'] = true;

        // Сохраняем пользователя
        $profile->set('extended', $fields);
        $profile->save();
        $user->save();
    }

Дополнительно: получение текущего пользователя

    $user = $modx->getUser();
    $username = $user->username;

Поиск пользователя по имени

    $user = $modx->getObject('modUser', array('username' => 'name_our_user'));

Вывод имени пользователя через плейхолдер

    [ [+modx.user.id:userinfo=`username`] ]
Метки:
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!