Ксения

Ксения

С нами с 05 апреля 2018; Место в рейтинге пользователей: #407
Ксения
25 июня 2018, 11:53
0
Подключила
require_once
, изменила
$queue_email=$modx->newObject('EmailQueueItem');
и всё равно выход то же
Fatal error: Call to a member function newObject() on a non-object
Ксения
25 июня 2018, 11:38
0
Нет. Сейчас буду разбираться.
Ксения
25 июня 2018, 11:16
0
Получила вот такое
Fatal error: Call to a member function newObject() on a non-object
Если без этой
$queue_email->newObject('EmailQueueItem');
строки то
Fatal error: Call to a member function getChunk() on a non-object
Ксения
25 июня 2018, 10:36
0
Спасибо, буду пробовать.
ps пока помню — есть небольшая ошибка в верхнем меню компонента.
тэг title (всплывающая подсказка) при наведении на кнопки не выводится в FF, а в chrome выводится только при наведении на иконку внутри кнопки, а не на саму кнопку. Может пригодится.
Ксения
25 июня 2018, 09:34
0
Добрый день! Подскажите пожалуйста, как лучше организовать помещение в очередь если используется сниппет (вызывается по cron)
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'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkName', $user)->send();
        }
    });
который использует компонент modHelpers?
На первый взгляд кажется, что проще переписать весь сниппет и сделать по вашему шаблону, но непонятно, что вписывать в графе
$data1 = array(
	'sender_package'=>'UserTest', //дополнение отправитель письма
Ксения
20 июня 2018, 21:11
-1
Есть certbot который сам всё прописывает, обновляет и т.д.
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
Пункты 1,4 и 5.
Ксения
19 июня 2018, 13:51
0
Ставила компонент xLike и не поставила в TV значения по умолчанию «0», отсюда и ошибки
Ксения
09 июня 2018, 20:30
0
Спасибо, всё заработало как надо.
PS При использовании tv надо в настройках системы cache_resource выставить на Нет
Ксения
09 июня 2018, 19:28
0
Я с fenom как-то совсем ни как
в снипете заменить
'likes' => $_modx->resource['likes']
на
'likes' => $_modx->resource['likes_fake'] + $_modx->resource['likes']
?

PS Значения не накрученные, попрошу, просто переношу данные из LikeDislike )

Ксения
09 июня 2018, 19:08
0
Очень странно. Все настройки кэширования по умолчанию.
в tv like стояло 520 стало 2
в tv dislike стояло 70 стало 0
то есть просто записались(посчитались) данные из БД, минуя значения в tv
Ксения
09 июня 2018, 17:43
0
Объясните пожалуйста, как вот это работает?
{'!xLike' | snippet : [
    'mode' => 'local',
    'likes' => $_modx->resource['likes'],
    'dislikes' => $_modx->resource['dislikes'],
    'rating' => $_modx->resource['rating'],
]}
В TV записаны значения и они нормально выводятся пользователю.
Если он «голосует» то в БД попадает соответствующая запись. (НО другому пользователю опять выведется то же значение TV что и было)
Я переношу систему рейтингов и думала, что к значению в TV будут прибавляться значения из БД, но видимо это не так.
Чтобы обновлять TV создала плагин
<?php
switch ($modx->event->name) {
    case "xLikeOnVote":
        if ($class == 'modResource' && $list == 'default') {
            if ($resource = $modx->getObject($class, array('id' => $parent))) {
                $resource->setTVValue('myLike', $rating);
                $resource->setTVValue('likes', $likes);
                $resource->setTVValue('dislikes', $dislikes);
                $resource->save();
            }
        }
        break;
}
но он все предыдущие значения TV обнуляет.

Так как он должен работать?
Делать как-то так?
$resource->setTVValue('likes', $resource->getTVValue('likes') + $likes);
Ксения
09 июня 2018, 13:26
0
Как правильно записать это
{'!xLike' | snippet : [
    'mode' => 'local',
    'likes' => $_modx->resource['likes'],
    'dislikes' => $_modx->resource['dislikes'],
    'rating' => $_modx->resource['rating'],
]}
не в fenom?
[[!xLike?
          &parent=[[*id]]
          &mode=`local`
          &likes=`tv.likes`
          &dislikes=`tv.dislikes`
          &rating=`tv.myLike`
          &tpl=`tpl.xLike`
        ]]
что-то не работает корректно
Ксения
14 мая 2018, 12:23
0
Может есть какой-то пример по работе с датами? Сделала копию столбца dob и назвала dov. Все что ни делала приводит к тому, что если в phpmyadmin в одинаковых столбцах стоят 0, то в админке у пользователя в первом поле пусто, а в новом 1970-01-01. Что приводит к проблемам при сохранении (если сохранить пользователя у которого стоит в админке 1970-01-01 то в БД вместо 0 появится -10800, замкнутый круг) В остальном всё работает, только вот эти ноли.
Ксения
01 мая 2018, 20:55
0
вопрос решился заменой на
->members(10,12)
(причем с названиями групп не работало, заработало только с id)
Ксения
01 мая 2018, 20:30
0
Опытным путём выяснила, что это происходит из-за того, что в начале идёт выборка по 2м группам.
->members('ru')
->members('work')
Если выбирать по одной группе, то сниппет отрабатывает нормально. Но мне надо выбирать по двум группам, есть какое-то решение для данной ситуации?

Такой сниппет работает
users()
    ->members('ru')
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->leaveGroup(4)
    ->leaveGroup(12)
    ->joinGroup(5,2)
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkRuName', $user)->send();
        }
    });
а такой выполняет только две операции и отваливается
users()
    ->members('ru')
    ->members('work')
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->leaveGroup(4)
    ->leaveGroup(12)
    ->joinGroup(5,2)
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkRuName', $user)->send();
        }
    });
Ксения
01 мая 2018, 16:49
0
Можно ещё вопрос? Такое ощущение, что количество операций с массивом ограничено 2 двумя
например в сниппете
users()
    ->members('ru')
    ->members('work')
    ->profile()
    ->select('id,email,dob')
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->leaveGroup(4)
    ->leaveGroup(12)
    ->joinGroup(5,2)
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkRuName', $user)->send();
        }
    });
последней операцией будет
leaveGroup(12)
и дальше ничего происходить не будет. Ошибок в журналах тоже нет. (Если убрать любые пару строк про группы, например
->leaveGroup(12)
->joinGroup(5,2))
то весь сниппет отработает.
(то есть работают любые 2 операции после where и всё )

Это так и должно быть или я что-то не так делаю?
Ксения
09 апреля 2018, 22:19
0
Я её уже всю прочитала, но без примеров сложно.
Я так понимаю, надо добавить строку
->select('id')
, но как выбрать сразу несколько полей
->select('id,email,dob')
так будет работать?
Ксения
09 апреля 2018, 22:07
0
посоветовал ограничить список полей через select()
пример бы очень пригодился
Ксения
09 апреля 2018, 21:21
0
С доступами сложно… Сделала копию на modhost, правда там функция mail отключена, но сделала вывод в лог, вроде всё идентично.
Так и должно быть, что при 2м проходе в array указано два email? Если так и должно быть поищу хостинг где можно сделать копию с рабочей функцией mail.
Array
(
[sender] => admin@s13574.h10.modhost.pro
[from] => admin@s13574.h10.modhost.pro
[fromName] => MODX Revolution
[setHTML] => 1
[to] => Array
(
[0] => 1@mail.com
)

[subject] => Поздравляем с Днём рождения!
[tpl] => Array
(
[name] => email
[data] => Array
(
[id] => 2
[username] => user1
[password] => ypnyTP15I2wEXrPw7NSykSmXp21POXOiRPr9IRgL56A=
[cachepwd] =>
[class_key] => modUser
[active] => 1
[remote_key] =>
[remote_data] =>
[hash_class] => hashing.modPBKDF2
[salt] => b47e3229aafa83301fb7f659731a8f0b
[primary_group] => 0
[session_stale] =>
[sudo] => 0
[createdon] => 1523295667
[internalKey] => 2
[fullname] =>
[email] =>1@mail.com
[phone] =>
[mobilephone] =>
[blocked] => 0
[blockeduntil] => 0
[blockedafter] => 0
[logincount] => 0
[lastlogin] => 0
[thislogin] => 0
[failedlogincount] => 0
[sessionid] =>
[dob] => 1523221200
[gender] => 0
[address] =>
[country] =>
[city] =>
[state] =>
[zip] =>
[fax] =>
[photo] =>
[comment] =>
[website] =>
[extended] => []
)

)

[content] => Поздравляем с Днём рождения!

)

[2018-04-09 21:11:37] (DEBUG @ /home/s13574/www/core/components/modhelpers/classes/Mailer.php: 444) Array
(
[sender] => admin@s13574.h10.modhost.pro
[from] => admin@s13574.h10.modhost.pro
[fromName] => MODX Revolution
[setHTML] => 1
[to] => Array
(
[0] => 1@mail.com
[1] => 2@mail.com
)

[subject] => Поздравляем с Днём рождения!
[tpl] => Array
(
[name] => email
[data] => Array
(
[id] => 3
[username] => user2
[password] => mtOJWSyxaSy2wZBFN2h34kFdltdGX4qZvxRMa3xnc+4=
[cachepwd] =>
[class_key] => modUser
[active] => 1
[remote_key] =>
[remote_data] =>
[hash_class] => hashing.modPBKDF2
[salt] => d289198fee7c610d6212d2e3314f3771
[primary_group] => 0
[session_stale] =>
[sudo] => 0
[createdon] => 1523295710
[internalKey] => 3
[fullname] =>
[email] => 2@mail.com
[phone] =>
[mobilephone] =>
[blocked] => 0
[blockeduntil] => 0
[blockedafter] => 0
[logincount] => 0
[lastlogin] => 0
[thislogin] => 0
[failedlogincount] => 0
[sessionid] =>
[dob] => 1523221200
[gender] => 0
[address] =>
[country] =>
[city] =>
[state] =>
[zip] =>
[fax] =>
[photo] =>
[comment] =>
[website] =>
[extended] => []
)

)

[content] => Поздравляем с Днём рождения!

)
Ксения
09 апреля 2018, 17:08
0
Через cron то же самое. Все, кроме первого письма, отправляются не с ящика указанного в настройках сайта, а с не существующего ящика «владельца» сервера user_owner@site.com и без форматирования. Похоже, что настройки подхватываются только для первого письма (пользователя) из массива.