Василий

Василий

Был в сети 24 августа 2023, 14:24
Заказы не принимаю
Тоже столкнулся с такой проблемой. В логах написано
Error 42000 executing statement:

INSERT command denied to user 'bla-bla-bla'@'localhost' for table 'modx_session'

И аналогичные записи в логах для других таблиц. Зашел на хостинг — оказывается, лимиты по базе превышены и заблокировали доступ до пополнения средств. Вдруг у кого тоже такой случай будет.
Тоже столкнулся с отправкой через smtp, для меня решением было добавление сертификата ssl в параметры PHPMailer:
$mail->SMTPOptions = array(
        'ssl' => [
            'verify_peer' => true,
            'verify_depth' => 3,
            'allow_self_signed' => true,
            'peer_name' => 'smtp.yandex.ru',
            'cafile' => $_SERVER['DOCUMENT_ROOT'].'/PHPMailer/cacert.pem',
        ],
    );
А сам сертификат благополучно утащил из папки /core/model/aws/lib/requestcore/, но можно получить и свой, но не стал заморачиваться пока. Тестил на своем сниппете, в modx пока не пробовал добавлять, но думаю, что там проблема решится, т.к. PHPMailer той же версии брал, что и в modx стоит.
Тоже долго искал решение, в итоге сделал, чтобы при сохранении ресурса проверялось значение и если оно совпадает со значением по-умолчанию, принудительно его прописать в этом ресурсе. Значение пробрасывается в базу и тогда фильтрация работает нормально.
А не планируется в новых версиях ajaxform сделать возможность работы с кэшируемыми ресурсами? Есть плагины, которые замечательно кешируют страницы в modx, увеличивая в разы скорость работы (например, xfpc), но из-за ajaxForm приходится либо от них отказываться, либо свои обработчики писать.
Плагин выдает ошибку, если включить в настройках «сайт недоступен».
Решается простой проверкой
if($modx->event->name=='OnWebPagePrerender'){
$id = $modx->resource->get('id');
if($page = $modx->getObject('modResource', $id)){
$tv = $page->getTVValue('Minify');
if($tv == 1){
$html = &$modx->resource->_output;
$html = preg_replace('|\s+|', ' ', $html);
}
}

а вообще, получение id ресурса, потом получение ресурса по id, а затем получение тв и проверку этого тв можно заменить одной строчкой и получится вот так (проверил у себя, работает):
if($modx->resource->getTVValue('Minify') == 1){
$html = &$modx->resource->_output;
$html = preg_replace('|\s+|', ' ', $html);
}
Да, про allowGuestEdit знаю, но проблема заключается не в запрете изменения комментариев, а в невозможности отправить его на модерацию. Авторизованный пользователь тоже может сначала написать нормальное сообщение, а потом его исправить и нецензурщины какой-нибудь понаписать, и модератор об этом не узнает(