Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
06 апреля 2018, 07:27
+1
Очередь нужно организовать самостоятельно. Вариантов несколько. Я бы предложил использовать кэш.
Шаг 1. Отдельным скриптом сохранять письма в кэш.
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->save('birthdays');
В папке core/cache/queue появится файл birthdays.cache.php с массивом писем. У метода save() есть второй параметр, который отвечает за режим работы: true — пересоздать файл, false — дописать данные. По умолчанию, false. Т.е. очередь дописывается.

Шаг 2. Другим скриптом зачитывайте кэш, например, раз 10 минут в течение часа.
$emails = cache('birthdays', 'queue');
Бейте массив на 2 части. По первой части работаете (функция email), а вторую опять сохраняете в кэш.
cache()->set('birthdays', $emails, 'queue');
Сергей Шлоков
05 апреля 2018, 16:35
+5
Берём modHelpers и чирикаем
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkName', $user)->send();
        }
    });
Вызывать через cron.
Сергей Шлоков
04 апреля 2018, 11:56
0
Проблема может быть связана с тем, что сессия не сохраняется.
По окончании работы скрипта массив $_SESSION нужно сохранить. Для этого обычно используется функция session_write_close.
Сергей Шлоков
02 апреля 2018, 23:00
0
Ну Postgres для MODX наверно великоват будет. Вообще в рекомендациях указана MariaDB.

П.С. Вот интересно, если бы у Майкла Видениуса было больше детей, сколько бы SQL серверов он написал? У него 2 девочки по имени My и Maria (MySQL и MariaDB).
Сергей Шлоков
01 апреля 2018, 14:05
+2
Это же не багфиксы. Эти предложения нужно для начала обсудить.
Сергей Шлоков
01 апреля 2018, 08:55
0
Вот ещё один из примеров (класс modRequest).


А если присмотреться повнимательнее:
1. Если метод «alias» — ищется id ресурса методом findResource().
2. Дальше (в скриншот не попало) методом getResource() загружается этот ресурс в $modx->resource.
3. А в этом методе getResource() опять забито условие
if ($method == 'alias') {
      $resourceId = $this->modx->findResource($identifier);
}
В общем, рефакторить и рефакторить.
Сергей Шлоков
31 марта 2018, 17:54
+2
Да весь этот функционал уже давно требует рефакторинга. Мало того, что нет никакой возможности добавить свои аттрибуты в методы regClient*(), так ещё и в качестве ключей хранить код как минимум не профессионально. Т.е. при регистрации сырого кода типа
<script>
   Тут яваскрипт код...
</script>
он прописывается в качестве ключа в массив
// $src - это сырой код
$this->loadedjscripts[$src]= true;
А потом он проверяется на существование
isset ($this->loadedjscripts[$src])
Я понимаю, что PHP всё стерпит. Тут всё-таки напрашивается хэш.

Вот этот код тоже выглядит немного по школьному
$this->sjscripts[count($this->sjscripts)]= $src;


П.С. Я даже в какой-то момент при исследовании кода MODX хотел целую статью написать про то, что не боги горшки обжигают. Но потом просто PR делал. Что стоит один только код получения id страницы ошибки
$errorPageId = $modx->getOption('error_page', null, 404);
и страницы для неавторизованных пользователей
$PageId = $modx->getOption('unauthorized_page', null, 401);
Сергей Шлоков
31 марта 2018, 16:20
+2
У Сергея Шлокова тоже
type="text/javascript"
Я так понимаю, что и
type="text/css"
тоже устарел. Завтра выпущу новую версию. Заодно в ней и поправлю это дело.
Сергей Шлоков
30 марта 2018, 06:56
0
Написать в техподдержку магазина.
Сергей Шлоков
29 марта 2018, 22:09
0
modx_users — таблица пользователей.
modx_membergroup_names — таблица групп.
modx_member_groups — pivot таблица (связь пользователей с группами).
Сергей Шлоков
29 марта 2018, 11:12
0
А в этом сообществе только один Василий должен помогать? А остальные должны предварять свой ответ целым абзацем про то, что никто не помогает?
Зайди в сообщество Laravel. А затем перечитай свой комментарий.

П.С. Кроме того, сейчас модно тусоваться в Слаке и Телеграме. Лично я ушёл из Телеграм-канала MODX, надоело ломать глаза глядя на полотенца кода.
Сергей Шлоков
20 марта 2018, 22:10
+12
Не нравится MODX?
composer require laravel/laravel
Сергей Шлоков
20 марта 2018, 13:01
+1
oneBooking при установке требует miniShop2. Именно для него и созданы модули оплаты. Но имейте ввиду, что oneBooking несовместим с минишопом выше версии 2.1.12. См. документацию.

Кроме того, проверьте, есть ли нужный вам модуль оплаты в магазине.
Сергей Шлоков
20 марта 2018, 07:37
0
Доступные модули для оплаты можно посмотреть тут.
Сергей Шлоков
03 марта 2018, 13:13
+4
В нашей стране диктатура. Могут и в Гулаг сослать. А вот у них свобода и демократия — поэтому так можно. :)

П.С. Я понимаю, конечно, что Николай имел ввиду коммерческую целесообразность за данную работу. Но это решать пользователям. Не нравится — не ешь. Не вижу предмета для спора.
Сергей Шлоков
03 марта 2018, 11:17
+3
Так их, Николай. Не останавливайся. :) Вот ещё один пакет fontAwesome, который просто прописывает в head ссылку. У него аж под 2 тысячи скачиваний. %)

В общем, работы в этом направлении завались. )