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

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

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
22 декабря 2018, 16:52
0
Я предпочитаю не обновлять кроном цену товаров, а пересчитываю ее в плагине на событие msOnGetProductPrice. В price цена в долларах, а показываются пересчитанные в рублях. Курсы получаю с помощью CurrencyRate. Мне кажется что так надежнее :). Крон не повиснет при пересчете и если много товаров, то нагрузка на сервер меньше (цена персчитывается каждый раз при показе товара, но не надо пересчитывать ее для всех товатов. Только те что посмотрели).
Не знаю как способ лучше. Кому какой способ больше нравиться? Пересчитывать при показе товара или пересчитывать кроном ночью все товары? И почему?
Александр Туниеков
17 декабря 2018, 19:04
0
Нет не планируется. В принципе, скрипт написать что рассылку делает не сложно. Примерно так:
if (!$Orgs = $modx->getService('organizations', 'Organizations',$modx->getOption('organizations_core_path', null, $modx->getOption('core_path') . 'components/organizations/') . 'model/organizations/', $scriptProperties)) {
	return 'Could not load Organizations class!';
}
$orgs = $modx->getCollection('Orgs');
foreach($orgs as $org){
    ...//здесь пишете отправка письма на $org->email, если это поле заполняется.
    //если не заполняется, то можно отправить на письма на пользователей организации
    $c = $modx->newQuery('OrgsUsersLink');
    $c->leftJoin('modUserProfile', 'modUserProfile', "modUserProfile.internalKey = OrgsUsersLink.user_id");
    $c->select(array(
      'modUserProfile.email'
    ));
    $c->where(array(
        'OrgsUsersLink.org_id' => $org->id,
        'OrgsUsersLink.user_group_id' => 1, //администраторам
        'OrgsUsersLink.active' => 1,
    ));
    $users = $modx->getCollection('OrgsUsersLink', $c);
    foreach($users as $user){
        ...//отправка письма на $user->email
    }
}
Отправлять письма как здесь https://ilyaut.ru/reposts/sending-mail-through-modmail/, либо через EmailQueue если на сервере ограничение по числу писем за раз.
Александр Туниеков
15 декабря 2018, 13:48
0
Для совместимости с обновлениями компонента могу добавить событие, чтоб вы варианты в отдельном плагине писали. Но надо примерно представлять какое событие вам нужно и какие параметры в него передавать.
Александр Туниеков
15 декабря 2018, 13:22
0
Свои формулы не предусмотрены. Расчет результатов тестов очень простой. Если сумма баллов попадает в заданный диапазон результата теста, то он и присваивается. 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;
        }
    }
Исходный код открыт. Посмотрите может вы сможите модифицировать его под свои варианты рассчетов.
Александр Туниеков
15 декабря 2018, 12:53
0
Добрый день! Да только из админки. Сделать из фронта можно, но сложновато :(
Александр Туниеков
12 декабря 2018, 12:47
+1
Сам задал вопрос сам и отвечаю :).
Код php можно распарсить в токены.
$tokens = token_get_all($code);
Потом пройтись по получившемуся массиву и если T_STRING содержит название разрешенной функции и токен не запрещен, например T_EVAL, записывать функцию в базу иначе возвращать ошибку. Примерно так :). Благо нужных функций не так много.
Александр Туниеков
12 декабря 2018, 05:31
0
Можно еще часть отправлять через 12 часов а часть сразу :). Это допустим те, что через 12 часов отправляете в очередь с sender_package = «12hours». А в кроне при отправке фильтровать по sender_package.
Александр Туниеков
12 декабря 2018, 04:47
1
0
Ну можно либо крон раз в 12 часов поставить либо в кроне send.php строка 11
$q->where(array('status'=>1, 'date:<'=> date('Y-m-d', strtotime("-12 hours"))));
Примерно так. Не тестировал.
Александр Туниеков
10 декабря 2018, 19:45
+1
Сделал EmailQueueAutoResponder и остальное что хотел :). Смотрите изменения в теме и качайте новую версию с модсторе. Планировал 2 часа а потратил весь вечер :(.
Александр Туниеков
10 декабря 2018, 15:52
0
Конечно нет. К тому же я его не сам писал, а взял из FormIt github.com/Sterc/FormIt/blob/develop/core/components/formit/src/FormIt/Hook/Email.php#L61
Просто убрал все лишнее что сейчас не нужно было мне и адаптировал под компонент.
Ну я так и пишу. Подсмотреть убрать лишнее и добавить нужное :).

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

насчет FormItAutoResponder подумаю как прикрутить.
Александр Туниеков
10 декабря 2018, 15:13
0
Не возражаете если я ваш хук включу в состав компонента?
Александр Туниеков
10 декабря 2018, 14:55
+1
Мда… не продумал. Думаю тогда сделать статус Отправляется и в кроне перед циклом отправки добавить цикл, выставляющий этот статус. Это просто можно сегодня сделать. А вот я обещал еще кнопки сделать удобнее. Это сложнее надеюсь за 2 часа справлюсь и тоже сегодня сделаю.
Александр Туниеков
10 декабря 2018, 05:32
0
Добрый день! Когда писал компонент вот на использование в хуке для FormIt не планировал, что это понадобиться. Идея была в том, что за раз нельзя бывает много писем отправить и чтобы это сделать понадобился компонент. А в FormIt одно письмо за раз отправляется. Для чего вам этот хук? Мне просто не очень понятно зачем он. Раз написали думаю нужен :), но вот зачем теряюсь в догадках :).
Александр Туниеков
21 ноября 2018, 14:58
0
Мой скайп touols Давайте обсудим, что возможно сделать.
Александр Туниеков
21 ноября 2018, 14:26
0
Мне кстати такая задача интересна. Вы рассматриваете подключение к ней сторонних специалистов?
Александр Туниеков
21 ноября 2018, 14:04
0
У меня уже спрашивали сайт агрегатор, но заказчика цена не устроила. Он думал что это просто сделать :). Вообще если сделаете компонент для агрегатора и выложите его, то думаю спрос на него будет. Можно будет за 5-10т.р продавать :). Или может дороже.
Александр Туниеков
21 ноября 2018, 13:54
0
Хм… Вы сайт агрегатор планируете… Сразу не сообразил. Думал вам покупки на организации делать надо.
Вам тогда все равно надо будет либо писать компонент для организаций, либо разобраться как прикрутить мой. В принципе задачи по сложности не сильно отличаются. Именно готового функционала под сайт агрегатор нет. Нужно писать и перед этим хорошо подумать над функционалом.
Александр Туниеков
21 ноября 2018, 13:31
0
Нет к сожалению нельзя. Совместимость с минишоп не нужна была. Вообще надо разбираться как сделать совместимость и возможна ли она вообще. Компонент писался на совместимость с переработанным Shopkeeper.