Александр Туниеков

Александр Туниеков

Был в сети 9 часов назад
Заказы принимаю
Для проверки установил Tickets. На modAction ругается 3 раза. А должно 1 раз на это
if ($action = $modx->getObject('modAction', array('namespace' => 'tickets'))) {
                $action->remove();
                /** @var modMenu $menu */
                if ($menu = $modx->getObject('modMenu', array('text' => 'tickets'))) {
                    $menu->remove();
                }
Похоже наши гуру и сами не знают, что там такого нужно поменять, чтоб не ругалось :)
Я это читал перед тем как тему создать :(, но увы нефига не понял :(. Какие-то ссылки на коммиты Tickets, в которые я смотрю и не вижу никаких modAction. Смотрю код build modExtra и тоже не нахожу никаких modAction.
Я в том как генерируется и устанавливается транспортный пакет внутри кода MODX практически ничего не знаю. Просто тупо брал modExtra переименовывал и писал что нужно в нем :). А теперь прямо засада.
Недавно делал сайт обучения по недвижимости
Вопрос первый — как закрыть доступ к платным курсам?
Делал компонент — регистр курсов. Табличка ид курса, ид юзера, зарегистрирован, куплен, пройден. На странице курса сниппет который проверяет платный ли курс, куплен ли курс этим юзером и выдает плейсхолдеры в шаблон на феноме где на плейсхолдеры ставится {if $placeholder}. То есть в зависимости от плейсхолдеров активируются разные части шаблона. (а можно, проще, в сниппете возвращать просто разные чанки на куплен и не куплен. У нас было просто много мест где менять поведение надо.)
Вопрос второй — на каждом курсе будет по 5-6 видео разделов, планируется делать проверку домашнего задания.
Допустим мы зарегистрировались, зашли на бесплатный или купили платный курс, и попадаем в раздел lesson1, смотрим видео — сдаем домашнее задание посредством чата. Такой чат будет подразумеваться на каждом видео.
У нас задания сдавались тестами, а не чатами.
Нормального чата под MODx нет. Это надо сторонний юзать наверно.
Я предпочитаю не обновлять кроном цену товаров, а пересчитываю ее в плагине на событие msOnGetProductPrice. В price цена в долларах, а показываются пересчитанные в рублях. Курсы получаю с помощью CurrencyRate. Мне кажется что так надежнее :). Крон не повиснет при пересчете и если много товаров, то нагрузка на сервер меньше (цена персчитывается каждый раз при показе товара, но не надо пересчитывать ее для всех товатов. Только те что посмотрели).
Не знаю как способ лучше. Кому какой способ больше нравиться? Пересчитывать при показе товара или пересчитывать кроном ночью все товары? И почему?
Для совместимости с обновлениями компонента могу добавить событие, чтоб вы варианты в отдельном плагине писали. Но надо примерно представлять какое событие вам нужно и какие параметры в него передавать.
Свои формулы не предусмотрены. Расчет результатов тестов очень простой. Если сумма баллов попадает в заданный диапазон результата теста, то он и присваивается. http://z9233215.bget.ru/manager/?a=element/snippet/update&id=44 строка 852:
$Variants = $modx->getIterator('UserTestVariants', array('test_id'=>$id, 'category_id'=> 0));
    foreach($Variants as $var){
        if($test_point >= $var->start_point and $test_point <= $var->end_point){
            $var_id = $var->id;
            $var_result = $var->result;
			$var_passed = $var->passed;
            break;
        }
    }
Исходный код открыт. Посмотрите может вы сможите модифицировать его под свои варианты рассчетов.
Сам задал вопрос сам и отвечаю :).
Код php можно распарсить в токены.
$tokens = token_get_all($code);
Потом пройтись по получившемуся массиву и если T_STRING содержит название разрешенной функции и токен не запрещен, например T_EVAL, записывать функцию в базу иначе возвращать ошибку. Примерно так :). Благо нужных функций не так много.
Конечно нет. К тому же я его не сам писал, а взял из FormIt github.com/Sterc/FormIt/blob/develop/core/components/formit/src/FormIt/Hook/Email.php#L61
Просто убрал все лишнее что сейчас не нужно было мне и адаптировал под компонент.
Ну я так и пишу. Подсмотреть убрать лишнее и добавить нужное :).

С поддержкой всех параметров сложно. Не думаю что я буду это делать :(. У меня в этом потребности нет. И все прописать достаточно сложно. Сегодня я сделаю топбар и статус отправляется и выложу на гитхаб. Если вы захотите, можете сделать форк доработать компонент прислать мне пулл-реквест.

насчет FormItAutoResponder подумаю как прикрутить.
Мда… не продумал. Думаю тогда сделать статус Отправляется и в кроне перед циклом отправки добавить цикл, выставляющий этот статус. Это просто можно сегодня сделать. А вот я обещал еще кнопки сделать удобнее. Это сложнее надеюсь за 2 часа справлюсь и тоже сегодня сделаю.