Регистрация пользователя с суммой на счёте

Простенький скрипт, который пробегает по массиву email => name, регистрирует пользователя в системе и кладёт ему определённую сумму на внутренний счёт miniShop2.

Запускать ровно один раз, результатом будет вывод списка имён, ящиков и паролей (если юзер еще не был зарегистрирован). При повторном запуске юзерам зачислится еще раз такая же сумма.

Можно использовать для раздачи рекламных аккаунтов в магазинах.
<?php
/** @var modX $modx */
define('MODX_API_MODE', true);
require dirname(__FILE__) . '/index.php';
$modx->getService('error', 'error.modError');

$money = 1000; // Сумма
$group = 2; // Группа для регистрации
// Массив пользователей
$users = [
    'user1@yandex.ru' => 'User 1',
    'user2@yandex.ru' => 'User 2',
];

echo '<pre>';
foreach ($users as $email => $name) {
    if (!$user = $modx->getObject('modUser', ['username' => $email])) {
        /** @var modUser $user */
        $user = $modx->newObject('modUser', ['username' => $email]);
        /** @var modUserProfile $profile */
        $profile = $modx->newObject('modUserProfile', ['fullname' => $name, 'email' => $email]);
        $user->addOne($profile, 'Profile');

        $password = $user->generatePassword();
        $user->set('password', $password);
        $user->save();

        $user->joinGroup($group);
    } else {
        $password = 'пользователь уже зарегистрирован, пароль неизвестен';
    }

    echo "$name: $email --- $password\n\n";

    if ($profile = $modx->getObject('msCustomerProfile', $user->get('id'))) {
        $account = $profile->get('account');
	$profile->set('account', $account + $money);
	$profile->save();
    }
}

На выходе будет примерно такое
User 1: user1@yandex.ru --- t8BDSubK8J

User 2: user2@yandex.ru --- Ras8WavDtk

Для работы со счётом пользователя можно использовать дополнение msProfile.
Василий Наумкин
12 апреля 2017, 05:00
modx.pro
14
2 144
+12

Комментарии: 5

Raimei
12 апреля 2017, 12:54
0
Василий, извиняюсь за вопрос не по-теме заранее.

А есть возможность использовать msProfile например с Tickets? Чтобы не ставить minishop из-за 2-3 услуг которые хочется продавать.

Пример использования: сайт типа modx.pro с возможностью проапгрейдить аккаунт чтобы пользователь имел какие-то привелегии.
    Василий Наумкин
    12 апреля 2017, 13:05
    +4
    Нет. msProfile испольует всё от miniShop2.

    Для продажи услуг всё равно нужен будет какой-то магазин, обработчики платежей, история заказов и личный кабинет. Так что, не понимаю проблемы — нужно просто поставить ms2 и не заморачиваться.
    Михаил
    12 апреля 2017, 18:34
    0
    Только наверное лучше использовать процессоры для создания пользователя
      Василий Наумкин
      12 апреля 2017, 18:38
      0
      Мне наоборот не было нужно, чтобы отработали какие-то проверки и события с плагинами.
        Михаил
        13 апреля 2017, 05:55
        0
        А ну тогда да, согласен. Я просто пихаю эти процессоры куда не лень )))))))))))))))))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5