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

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

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
31 января 2022, 14:27
+1
Можно попробовать плагин на ondocformprerender. https://docs.modx.com/current/en/extending-modx/plugins/system-events/ondocformprerender
<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormPrerender':
        if($mode == 'new'){
            if($count = $modx->getCount("modResource',['parent'=>$resource->parent])){
                $count = $count +1;
            }
            $modx->regClientStartupHTMLBlock('
            <script type="text/javascript">
        		Ext.onReady(function() {
                    var pagetitle = Ext.select("#modx-resource-pagetitle");
                    pagetitle.setValue("Page '.$count.');
        		});
        	</script>');
        }
        break;
}
Не тестировал. Но вруг сработает. Главное чтоб $resource->parent был определен.
Александр Туниеков
20 декабря 2021, 21:08
0
У меня все TV пропадали, кроме тех, что вне категорий. Выяснилось, что исчезло поле rank таблицы категорий, а при построении TV делается запрос категорий с сортировкой по rank. И соответственно запрос ничего не возвращал.
Проверяй таблицу категорий, файлы manager\templates\default\resource\sections\tvs.tpl, manager\controllers\default\resource\update.class.php, manager\controllers\default\resource\resource.class.php.
Александр Туниеков
19 ноября 2021, 18:06
0
Ну вот на модсторе сертификат проверить не может.
У вас что-за ось и настройки php?
Александр Туниеков
18 ноября 2021, 17:04
0
php перезапускали?
попробуйте в консоле или скрипте
<?php
echo file_get_contents("https://modx.com/");
Если сертификаты устаревшие, то выдаст ошибку:
PHP warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
Александр Туниеков
18 ноября 2021, 16:19
+1
Вот похожее решали modx.pro/development/22383
У тебя другие пакеты с модсторе сейчас ставятся?
Александр Туниеков
26 октября 2021, 12:53
0
Проблему с модсторе это решает. Но если на сайте используется загрузка файлов, https запросы, парсер или websocket, то проблема с сертификатом там может проявиться. И не только на локалке, но и на любых старых не обновленных серверах.
Проверить можно в консоле или в php скрипте:
<?php
echo file_get_contents("https://modx.com/");
Если сертификаты устаревшие, то выдаст ошибку:
PHP warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
Александр Туниеков
26 октября 2021, 03:54
+5
А вот и решение :-) PHP ошибка OpenSSL error:14090086 и Failed to enable crypto in
Оказывается у php свой список корневых сертификатов.
На openserver качаем cacert.pem с сайта https://curl.se/docs/caextract.html и заменяем им cacert.pem по пути
"%sprogdir%/userdata/config/cacert.pem"
Перезагружаем openserver и модсторе работает :-)
Александр Туниеков
26 октября 2021, 02:45
+2
В общем, сайты починил. Надо было поиск в инете сделать правильный :-).
Устранение ошибки ERR CERT DATE INVALID неверный сертификат
Но вот модсторе так и не заработал :-(.
30 Сентября 2021 произошло катастрофическое событие. У крупнейшего поставщика сертификатов Let's Encrypt истек корневой сертификат IdentTrust DST Root CA X3, который использовался на миллионах устройств, выпущенных или обновленных до 2015 года.

Были задеты не только ОС Windows, но и множество других девайсов — смартфоны, «маки», консоли старых поколений (PlayStation, Xbox).
Александр Туниеков
26 октября 2021, 02:00
0
Может поможет найти корень проблемы.
windows 2008 openserver. Пакеты с модсторе долго грузятся и не открываются. 20% сайтов не работают. Недели 2-3 назад заметил. Кажется кончился один из корневых сертификатов windows.
Помощи себе не прошу :-). но может поможет другим.
Знать бы еще какой из сертификатов улетел :-(. Просто обновление не помогает :-(.
Александр Туниеков
08 октября 2021, 05:24
0
Тоже с этой проблемой столкнулись. При загрузки модалки вызывается msOptionsPrice.Product.action('modification/get',form) и он ставит цену. Но не ставит опцию. Писали разрабу не ответил.
Кто знает что делать подскажите плиз!!!
Александр Туниеков
06 октября 2021, 00:42
+1
Мнда… Чудесный код :-). echo и getChunk. getChunk вообще ничего не делает. все через echo идет.
Попробуй лучше так:
Чанк
<div class="row">
    <div class="col-md-3">[[+Date]]</div>
    <div class="col-md-3">[[+Name]]</div>
    <div class="col-md-3">[[+LastName]]</div>
    <div class="col-md-3">[[+DepName]]</div>
</div>
сниппет
$result = $modx->query("SELECT * FROM $tableName ORDER BY id DESC LIMIT 27");
$data = $result->fetchAll(PDO::FETCH_ASSOC);
$out = '';
foreach ($data as $list){
        $out .= $modx->getChunk('OverlapCounter', $list);
}
return $out;
Александр Туниеков
24 сентября 2021, 21:20
0
Хм. ошибки не смотрел тогда. А сейчас минишоп уже откатили до прежней версии :)
Александр Туниеков
24 сентября 2021, 20:02
0
Владелец обновил минишоп. Сломался заказ. При создании заказа ни данных получателя ни адреса. Только товары. Фиг знает куда рыть.
Александр Туниеков
24 августа 2021, 21:55
0
Может плагин левый на изменение статуса заказа. Ну так не угодаешь. Надо цепочку создания заказа смотреть.
Могу посмотреть. Стоимость часа 600р. Если устраивает пиши на t.me/touols
Александр Туниеков
24 августа 2021, 12:55
0
У вас фильтры vlag_massiv и glubina_do_40 еще подключены и на них чанков почему-то нет
Александр Туниеков
22 августа 2021, 22:19
0
А какую ошибку выдает? И где? в коносоли? Можно скриншот?
Александр Туниеков
21 августа 2021, 10:30
0
2. А я добавил исключение
preg_match('/DISTINCT/i',
                        $fields)
В блоке
if ($fields == 'all' || $fields == '*' || empty($fields)) {
                        $fields = $this->modx->getSelectColumns($class, $alias);
                    } elseif(preg_match('/DISTINCT/i',
                        $fields)){
                    }else {
                        $fields = $this->modx->getSelectColumns($class, $alias, '',
                            array_map('trim', explode(',', $fields)));
                    }
3.
Это чудит xPDO.
В курсе. Если select строка, xPDO разбивает select по запятым и затем решает, что 1 это колонка и ставит апострофы.
Блок
if (is_string($fields) && strpos($fields, '(') !== false) {
                    // Commas in functions
                    $fields = preg_replace_callback('/\(.*?\)/', function($matches) {
                        return str_replace(",", "|", $matches[0]);
                    }, $fields);
                    $fields = explode(',', $fields);
                    foreach ($fields as &$field) {
                        $field = str_replace('|', ',', $field);
                    }
                    $this->query->select($fields);
                    $this->addTime('Added selection of <b>' . $class . '</b>: <small>' . str_replace('`' . $alias . '`.',
                            '', implode(',', $fields)) . '</small>', microtime(true) - $time);
                }
вообще не был бы нужен, если бы XPDO не чудила.

Но так как запрос простой и без логики, я бы не стал вообще использовать xPDO, а сделал бы маленький и лёгкий запрос (без кучи объектов xPDO)
У меня pdoTools в компонентах используется, чтобы изменить запрос не трогая сам компонент. Например из excelconvertrule
{
    "class": "MaterialZakupList",
    "leftJoin": {
        "MaterialZakup": {
            "class": "MaterialZakup",
            "on": "MaterialZakup.id = MaterialZakupList.order_id"
        },
        "gtsBAccount": {
            "class": "gtsBAccount",
            "on": "gtsBAccount.id = MaterialZakup.account_id"
        },
        "raschetsMaterial": {
            "class": "raschetsMaterial",
            "on": "raschetsMaterial.id = MaterialZakupList.mat_id"
        },
        "Orgs": {
            "class": "Orgs",
            "on": "Orgs.id = MaterialZakup.org_id"
        }
    },
    "select": {
        "MaterialZakupList": "*",
        "Orgs": "Orgs.shortname",
        "gtsBAccount": "gtsBAccount.label as account",
        "raschetsMaterial": "IF(MaterialZakupList.prihod_date IS NULL,'в дороге','получено') as status1,IF(MaterialZakupList.type_id = 3,raschetsMaterial.name,MaterialZakupList.tovar) as tovar1,raschetsMaterial.type,raschetsMaterial.metall,raschetsMaterial.ed_izm",
        "MaterialZakup": "MaterialZakup.date,MaterialZakup.document"
    },
    "sortby": {
        "MaterialZakupList.id": "ASC"
    }
}
При экспорте в excel без правок pdoTools на строке
IF(MaterialZakupList.prihod_date IS NULL,'в дороге','получено')
'в дороге' обрамляется апострофами.
Александр Туниеков
17 августа 2021, 19:37
+1
Отправил соточку :). С наумкиным не сложилось PR отправлять. Ошибки в pdoTools такие: кавычки неправильно ставит собака. Часто подсчет строк в кавычках, на функциях и where может неправильно кавычки поставит. Как вспомню где именно так отправлю Issues. В моей версии pdoTools они поправлены. Хотя и костылями.
Александр Туниеков
17 августа 2021, 19:27
0
Всем кому интересно. Где-то неверно скопировали. Сам применил и все заиграло как надо :-).
Александр Туниеков
17 августа 2021, 17:37
0
Ну вот :-(. На боевом сайте сразу тестировать не стоит. Надо копию, чтоб все обкатать можно было. У меня на локалке, после переноса с боевого, до всякого кеширования, сразу время работы с 4 секунд до минуты подлетело. Сейчас хотелось бы вне виндоус локалки протестировать. Можите все-таки сделать копию, чтоб не на локалке протестировать можно было?