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

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

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
06 августа 2018, 07:55
0
Спасибо не знал или уже забыл.
pdoPage все равно 88-93мс занимает. Его надо еще сокращать. Правда стало Total parse time 0.1874032 s. Но у гугла время ответа сервера от 210мс до 420мс. Как еще сократить время pdoPage?
Александр Туниеков
06 августа 2018, 07:18
0
Спасибо за ответ.
js и css от компонентов можно тоже в minifyx загнать (не забыть отключить их в настройках или в вызове)
До этого еще просто не добрался. Завис на скорости ответа сайта.
Это очень плохо yadi.sk/i/rvBAyF2g3ZvLEq

Это вообще не понятно зачем такое. В модальном окне зум работает. Наверно разраб сайта под одну гребенку все сделал.
Не работал с Gallery, но на каждую картинку слайдера идет запрос на коннектор — отсюда короткое время кеширования. может есть там возможность уже готовый статичный путь получать?
Тоже удивило. Здесь еще не копался. Только стандартные параметры сниппета смотрел. Наверно напишу свой сниппет для вывода галереи. А то стандартный сниппет работает аж 50мс. Что он там делает столько времени не понятно :(.
Пока больше интересует скорость работы. Кто-нибудь замерял насколько феном убыстряет?
Александр Туниеков
06 августа 2018, 07:04
0
У вас функционал похожий, но явно другой зачем-то табличка в базе создается и какое-то ограничение по пользователям и группам. А у меня все просто скрипт загружает чанк, что указали в параметрах и запускает модальное окно в нем. Если конечно оно там есть. И больше ничего не делает. Функционала на 2 часа работы :). И то в основном на то чтобы из modExtra лишнее вырезать и описание написать.
Александр Туниеков
06 августа 2018, 01:05
0
Спасибо большое. Только добрался проверить. все работает.
Александр Туниеков
03 августа 2018, 16:46
-1
Добрый день! На тикетах доска объявлений не очень. Всякие доп и платные функции сложно программировать.
Александр Туниеков
09 июля 2018, 17:19
0
В плагине usertest сейчас
/*Адрес получателя нашего письма*/
		$teachers_email = explode(",",$teachers_email);
		foreach($teachers_email as $te){
			$modx->mail->address('to', trim($te));
		}
Можно вместо этого сделать примерно так:
switch($test['id']){
	case 1:
		$modx->mail->address('to', 'teacher1@mail.ru');
	break;
}
Александр Туниеков
09 июля 2018, 17:12
0
Вот и придумали. В текущем плагине нету. Но переписать плагин для этого не сложно :).
Александр Туниеков
09 июля 2018, 17:11
0
К сожалению, я чисто программист и подавать красиво не сильно умею :(. На практике, можно отправить отправку сообщения администратору. Что и сделано. Но в сообщении, можно, не только итоговый балл, как сейчас, отправлять но еще и отправить отчет со всеми ответами пользователя. Можно прикрутить счетчик пройденных тестов. Больше вариантов, пока, в голову не приходит :). Событие сделано чтоб программисты не лезя в основной код могли что угодно сделать по окончании сеанса тестирования. Мне в голову не приходит что еще можно, но Думаю что-нибудь оригинально придумают.
Александр Туниеков
09 июля 2018, 16:12
0
Ну когда топик выкладываешь, лучше покупают. Обновление маленькое, но повод напомнить :). Стараюсь не спамить, но что-то по краю спама пошел :(. Извиняюсь если что не так.
Александр Туниеков
25 июня 2018, 13:04
+1
Похоже я понял в чем косяк. $modx внутри функции вызывается. А внутри функции его нет. Попробуйте перед if (is_email($user['email'])) { вставить global $modx;

->each(function($user, $idx) {
       global $modx;
	 if (is_email($user['email'])) {
           $queue_email = $modx->newObject('EmailQueueItem');
Александр Туниеков
25 июня 2018, 12:59
0
Поставил Cron Manager. Запустил такой код. И все успешно.
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);


if (!$EmailQueue = $modx->getService('emailqueue', 'EmailQueue', $modx->getOption('emailqueue_core_path', null,
	$modx->getOption('core_path') . 'components/emailqueue/') . 'model/emailqueue/', array())) {
	return;
}
$user['email'] = 'a@b.ru';
$queue_email = $modx->newObject('EmailQueueItem');
$data1 = array(
	'sender_package'=>'UsersSend', //дополнение отправитель письма
	'to'=>$user['email'], //емаил
	'from_name'=>'Тест',
	'subject'=>'Поздравляем с Днём рождения!', // тема письма
	'body'=>$modx->getChunk('email_ru', $user), // тело письма
	'date'=>date("Y-m-d H:i:s"), // дата в очереди. Нужно чтоб письма удалялись по истечении срока хранения.
);
$queue_email->fromArray($data1);
if(!$queue_email->save())
	$modx->log(1,"Письмо для ".$user['email']." не удалось добавить в очередь писем!");
Александр Туниеков
25 июня 2018, 12:35
0
Не работал с Cron Manager. По идее в нем не надо $modx подключать. он уже должен быть подключен. Надо разбираться. Так ничего не понятно. Мой скайп touols. Можите доступ скинуть?
странно что на $modx->getService не ругается
Александр Туниеков
25 июня 2018, 12:04
0
Полностью код можно? И путь до файла
Александр Туниеков
25 июня 2018, 11:32
0
Fatal error: Call to a member function getChunk() on a non-object
У вас в начале скрипта сам $modx подключен?
что то вроде такого
require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/config.core.php';
require_once MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
require_once MODX_CONNECTORS_PATH . 'index.php';
Александр Туниеков
25 июня 2018, 11:26
0
Блин поторопился. Конечно
$queue_email=$modx->newObject('EmailQueueItem');
Александр Туниеков
25 июня 2018, 10:42
0
Ну это известная проблема. Позже переделаю на выпадающий список
Александр Туниеков
25 июня 2018, 10:06
+1
ошибку заметил
if (!$EmailQueue = $modx->getService('emailqueue', 'EmailQueue', $modx->getOption('emailqueue_core_path', null,
	$modx->getOption('core_path') . 'components/emailqueue/') . 'model/emailqueue/', array())) {
	return;
}
users()
    ->members('en')
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->joinGroup('group2')
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            	$queue_email->newObject('EmailQueueItem'); //забыл создать объект :(
		$data1 = array(
			'sender_package'=>'UsersSend', //дополнение отправитель письма
			'to'=>$user['email'], //емаил
			'subject'=>'Поздравляем с Днём рождения!', // тема письма
			'body'=>$modx->getChunk('chunkName', $user), // тело письма
			'date'=>date("Y-m-d H:i:s"), // дата в очереди. Нужно чтоб письма удалялись по истечении срока хранения.
		);
		$queue_email->fromArray($data1);
		if(!$queue_email->save())
			$modx->log(1,"Письмо для ".$user['email']." не удалось добавить в очередь писем!");
        }
    });
Александр Туниеков
25 июня 2018, 09:52
0
Примерно так думаю
if (!$EmailQueue = $modx->getService('emailqueue', 'EmailQueue', $modx->getOption('emailqueue_core_path', null,
	$modx->getOption('core_path') . 'components/emailqueue/') . 'model/emailqueue/', array())) {
	return;
}
users()
    ->members('en')
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->joinGroup('group2')
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            $data1 = array(
			'sender_package'=>'UsersSend', //дополнение отправитель письма
			'to'=>$user['email'], //емаил
			'subject'=>'Поздравляем с Днём рождения!', // тема письма
			'body'=>$modx->getChunk('chunkName', $user), // тело письма
			'date'=>date("Y-m-d H:i:s"), // дата в очереди. Нужно чтоб письма удалялись по истечении срока хранения.
		);
		$queue_email->fromArray($data1);
		if(!$queue_email->save())
			$modx->log(1,"Письмо для ".$user['email']." не удалось добавить в очередь писем!");
        }
    });
sender_package Нужно только чтоб видеть откуда письмо в очереди. Если вдруг несколько компонентов сразу отправляют. Можно написать что угодно или даже оставить пустым.
Александр Туниеков
18 июня 2018, 19:50
0
Ну тут идея компонента не совсем такая :). В очереди хранятся уже готовые письма. А письма в очередь добавляются кодом, в котором как раз письмо красиво и оформляется.
'body'=>$modx->getChunk('tpl.UserTest.InviteEmail',array('test_name' => $test->name,'link'=>$invite->url)),
Создание и редактирование писем в компоненте это просто на всякий случай. Чтоб протестировать компонент или просто отправку писем. Посмотреть что вообше в очереди лежит.