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

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

С нами с 31 января 2013; Место в рейтинге пользователей: #30
Сергей Шлоков
15 января 2019, 08:43
0
Небольшой баг. Список тикетов в админке при первой загрузке (хоть в компоненте, хоть в документе TicketSection) вызывается с сортировкой по id.
class TicketGetListProcessor extends modObjectGetListProcessor
{
    public $classKey = 'Ticket';
    public $defaultSortField = 'id';
    public $defaultSortDirection = 'DESC';
При работе с пагинацией (вперёд, назад, обновить), сортировка по createdon.
Сергей Шлоков
12 января 2019, 14:58
0
Весь код MODX пестрит таким
function __construct(modX &$modx) {
        $this->modx= & $modx;
}
Т.е. разработчики MODX не знают как работают объекты и ссылки. Описанный выше код я считаю опасным. Ибо при изменении $this->modx глобальный объект $modx тоже измениться. А если убрать ссылки, то даже если сделать так $this->modx = null, глобальный объект останется невредимым.
Сергей Шлоков
12 января 2019, 14:53
0
Ни секунды не сомневался, что ты знаешь матчасть. Поэтому и спросил, что ты имеешь ввиду. И то, что ты описал верно для всего, кроме объектов. В самой первой ссылке в твоем комменте есть пример с функцией, демонстрирующий специфику объектов. Я в своё время разбирал это отличие. Поэтому, если ты передашь объект, то передастся не копия, а указатель на объект. И твой пример не сработает.

Я, кстати, тоже несколько раз порывался сделать PR с EXTR_REFS, но забил. Простейшие изменения принимаются годами, а тут даже надеяться не на что. С этим нужно разбираться, а у них ни времени ни желания нету, а возможно и знаний.
Сергей Шлоков
12 января 2019, 08:51
0
Извиняюсь, что вмешиваюсь. Говоря про объекты ты имеешь ввиду объекты PHP или параметры плагина?
MODX не всегда корректно использует ссылки на объекты. В результате передается не объект, а его копия, и теряется связь с оригиналом.
Если объекты PHP, то уверен, что ты просто оговорился.
Сергей Шлоков
10 января 2019, 07:03
+4
По-моему, это даже не полусладкое, а полусухое. Ну для чанков, допустим, подсластитель в том, чтобы не писать папку «chunk» и разширение «tpl». А для сниппета где он? Профит в том, чтобы не писать палку и двоеточие?
// pdoTools
{'pdoResources' | snippet : ['param' => 'value']}
// Твой вариант
{snippet 'pdoResources' ['param' => 'value']}
Кроме того возможна путаница (для стороннего разработчика) — chunk вызывает файловый чанк, а snippet — обычный сниппет.

Для чанков, подключаемых таким способом, нужно соблюдать 2 условия. Они должны
1) Быть файловыми и лежать в /core/elements/chunks/
2) Иметь расширение .tpl
1. Необязательно. Так как ты сломал механизм pdoTools, то можно указать любой путь.
2. Тут да. Так как nul байт пофиксили в 5.3.

Дерзайте!
Спасибо!
Сергей Шлоков
24 декабря 2018, 21:33
0
а вы научили компонент нормально удаляться?
Сергей Шлоков
24 декабря 2018, 21:33
0
а вы научили компонент нормально удаляться?
Сергей Шлоков
21 декабря 2018, 08:35
0
В своё время делал возможность для админа удалять комментарии с фронта.
Сергей Шлоков
21 декабря 2018, 08:28
0
Единственный вопрос — почему 1.9.3, а не 1.10.0? Это же не багфиксы.
Сергей Шлоков
21 декабря 2018, 07:59
1
+2
В чём проблема-то с этим граватаром?
<img src="https://www.gravatar.com/avatar/{md5($email)}?s=128&amp;d=mm">
Сергей Шлоков
20 декабря 2018, 09:33
+1
10:22
разработчик молчит как рыба об лёд
11:44
Да, автор не молчит,
Навеяло…
Если блондинка включила левый поворотник, это ещё не значит, что она повернёт направо. Она может поехать и прямо. ))
Сергей Шлоков
17 декабря 2018, 15:39
+2
В общем, нравится сидеть в Телеграме — сиди на здоровье, я вижу там только бессмысленный трёп про дошираки за очень редким исключением.
+100500.
Сергей Шлоков
14 декабря 2018, 19:34
0
Ага, как только Windows станет бесплатной Open Source :)
Сергей Шлоков
13 декабря 2018, 20:06
0
Как раз сейчас мир к этому и идет.
Здесь как обычно — широкий выбор. Где-то такое же отношение как у тебя, где-то обратное. Всё зависит от подходов. Попробуй какую-нибудь авторскую песню добавить в своё видео на ютубе. У последнего есть библиотека бесплатных треков. Так что это не весь мир к этому идёт, а определённая часть сообщества. Другая свято чтит неприкосновенность авторского права.
Сергей Шлоков
13 декабря 2018, 16:46
0

MODX.pro взломал Ляшко?
Сергей Шлоков
11 декабря 2018, 18:22
0
Что-то типа истории как это было. Почему решился, что даёт, какие плюсы минусы. Ты выше коротенько писал про сервер, версию light и т.д.
Интересно впечатление. Я выбрал Laravel. Ты ноду. Я в свое время тоже хотел погружаться в неё, но одумался :)
Сергей Шлоков
11 декабря 2018, 17:59
0
А вот минус поставить никогда не сложно :)
Да, можно уже вводить номинацию «Золотой минус года». И я даже знаю победителя ;)

П.С. Я бы почитал про опыт работы с нодой. Планируешь написать?
Сергей Шлоков
11 декабря 2018, 13:38
0
А вот с коллекцией не совсем понял. А как иначе?
Поищи тут статьи Василия про xPDO.

Лично мне нужно сбрасывать кэш, т.к. данные потраченных денег, я вывожу на фронте у авторизированных пользователей через сниппет. При отработке скрипта без чистки кэша, на фронте данные не меняются, только если очистки кэша.
Такие вещи нужно выводить через некэшированные сниппеты.
Сергей Шлоков
11 декабря 2018, 10:40
+3
П.С. Не знаю, аксакал я или нет, но просил ревью, получай )
Сергей Шлоков
11 декабря 2018, 10:37
+3
Позволю себе выложить решение с помощью modHelpers.
$usergroup = 1;
users()
        ->profile()
        ->select(['modUser.id, modUser.username, Profile.fullname, Profile.email' ])
        ->members($usergroup )
        ->where(['active' => true])
        ->each(function($user) {
              foreach($user as $key => $value) {
                  echo $key, ": ", $value, "< br>";  // Убрать пробел
              }
              echo "< br>";  // Убрать пробел
              // Ну и всем пользователям группы указываем значение потраченных денежек на покупку
              object('msCustomerProfile',$user['id'])->set(['spent' => 15000]);
});
// Сбрасываем кэш (если нужно)
$modx->cacheManager->refresh();
Но это, конечно, очень не оптимально.Такой код оправдан только если нужно выводить данные каждого пользователя. Вопрос — а нужно ли?

Вот оптимизированный вариант. Всего 2 запроса к БД
$usergroup = 1;
$ids = users()
        ->members($usergroup)
        ->where(['active' => true])
        ->get('id');

collection('msCustomerProfile', ['id:IN' => $ids])->set(['spent' => 15000]);

// Сбрасываем кэш (если нужно)
$modx->cacheManager->refresh();
По-моему, выглядит покороче и попроще )