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

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

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
25 сентября 2019, 06:54
0
Сам задал вопрос. Сам и отвечу :-).
Проблема не в MODX а в классе php finfo. На одном хостинге он на тип файла возвращает «text/html», на другом «application/xml». Или от версии php зависит.
Я поправил в MODX файл core/model/modx/modfilehandler.class.php
/**
     * Tells if a file is a binary file or not.
     *
     * @param string $file
     * @return boolean True if a binary file.
     */
    public function isBinary($file) {
        if (!file_exists($file) || !is_file($file)) {
            return false;
        }

        if (filesize($file) > 0 && class_exists('\finfo')) {
            $finfo = new \finfo(FILEINFO_MIME);
            $info_file = $finfo->file($file);
            //$this->modx->log(1,"$file ".$info_file);
            if(strpos($info_file, "application/xml") !== false) {
                //$this->modx->log(1,"$file ".$info_file);
                return false;
            }
            return substr($info_file, 0, 4) !== 'text';
        }

        $fh = @fopen($file, 'r');
        $blk = @fread($fh, 512);
        @fclose($fh);
        @clearstatcache();
        return (substr_count($blk, "^ -~" /*. "^\r\n"*/) / 512 > 0.3) || (substr_count($blk, "\x00") > 0);
    }
Теперь xml редактируется у меня.
Александр Туниеков
24 сентября 2019, 12:16
0
2 раза подобный модуль делал, а прилизать и оформить в отдельный компоненть и выложить руки не добрались :-).
Александр Туниеков
20 сентября 2019, 10:11
0
Понятно. Что-то это оказалось мне неожиданно :-(.
Александр Туниеков
01 сентября 2019, 18:22
0
Я вот работаю только с MODX. Пробовал и WP и Joomla. Не завелось. А вот с MODX взял и начал что-то писать. Все просто и интуитивно понятно для меня. Только два дня потратил на освоение ModExtra. MODX Revo почти идеален ;-). Может он и устаревает, но от новой MODX-like системы хотелось бы такой же легкости освоения, стандартизованную админку и стандартные средства такие как сниппеты, чанки, шаблоны, tv, formit, fenom,pdoTools, minishop, tickets, множество готовых компонентов для программирования-сборки сайтов, исчерпывающею русскую документацию и активное сообщество. И это главное :). Например WP мне не понравился зоопарком плагинов. Для того чтобы что-то сделать нужно изучить плагины, на которых сделали сайт до меня. И таких плагинов очень много. Как-то пробовал сделать програмку на VB сдох на программировании авторизации пользователей. А в MODX все что нужно для авторизации уже есть. Пробовал освоить Октябрь, но выяснилось, что он заточен под англоязычных, и документация приложений в магазине не слишком подробная.
У MODX есть недостатки: сайт тупит когда много ресурсов и tv, нет дополнений таких как чат, форум, делать компоненты на продажу не слишком выгодно (для большей части аудитории хватает бесплатных и на платные мало покупателей, не считая конечно office и msearch). С tv, наверно, можно было сделать галочку «хранить в отдельной таблице» и, при ее включении, создавать для tv таблицу с типом value определенном правилами tv и переносить в нее все данные этой tv.
Уф. Высказался. Не очень мне нравится разговоры про новый MODX и отказ от обратной совместимости.
Александр Туниеков
28 августа 2019, 14:12
0
Купили компонент. Что-то статистика не айс. В списке хитов можно сделать фильтрацию? Хотя бы убрать заблокированные запросы. И может сделать в запросе mySQL группировку по юзер агент или по айпи с подсчетом кол-ва запросов? И соотвественно кнопки группировка по айпи и группировка по юзар агент в топбаре списка хитов.
Александр Туниеков
09 июня 2019, 07:42
0
1. Картинки и файлы у меня практически не спрашивали. Они сделаны просто чтоб были. Зачем размер картинок ставил уже не помню :(. Уберу размеры в следующей версии. Пусть сами настраивают как хотят.
2. Захватываешь ответ мышкой и перетаскиваешь напротив нужной строки. yadi.sk/i/g4e9MtRiSWoixA
Александр Туниеков
07 июня 2019, 19:43
0
А вот это не предусмотрели :(.
Попробуйте все что в case 'OnBeforeUserFormSave': обернуть в
if($_POST['action']=='auth/formRegister'){
Александр Туниеков
30 мая 2019, 19:03
0
Добрый день! Картинку к вопросу прикрепить можно. Посмотреть демо здесь http://z9233215.bget.ru/testyi.html. Тестовый менеджер: demo пароль: demo z9233215.bget.ru/manager
Александр Туниеков
09 мая 2019, 20:05
0
Конечно можно. Я делал php скрипт который выдавал товары в json, а на андроид запрашивал с него данные парсил и вставлял в базу SQLite.
Александр Туниеков
09 мая 2019, 19:57
0
Ну с андроид я знаком уже :). а с iphone нет. Для андроид приложение сделать что-то около 30 т.р. плюс вам где-то надо будет дизайн сделать на него. На iphone мне придется учиться и это получиться дороже.
Вот так если захотите у меня заказать.
А вообще лучше на сайтах для программистов андроид и iphone вам поискать.
Александр Туниеков
09 мая 2019, 19:46
0
Приложение для андроид? насколько большая база товаров? синхронизация может будет долгая :(
Александр Туниеков
09 мая 2019, 17:15
0
Мобильное приложение для андроид или iphone? Что в нем нужно? Я делал для андроид приложение калькулятор товаров, но во первых дизайн не мое, во вторых никто им пока не пользуется :).
Александр Туниеков
31 марта 2019, 13:24
0
Вообщем надо было в build.config.php добавить define('PKG_PROVIDER_ID', 3); чтобы при установке знало с какого провайдера брать ключ. 3 — это у меня ид модсторе. Теперь при установке с модсторе пакет ставиться, а с локальной установкой не ставиться. Как и должно быть. Только порылся я по транспортному пакету и вообще не нашел что там зашифровано :(.
Александр Туниеков
31 марта 2019, 11:41
0
Попробовал так https://gist.github.com/touol/af98f895e770debff7aad9b128e6debd. Но попытка не удалась :(. Пакет на тесте ставится, а не должен.
Помогите пожалуйста
Александр Туниеков
31 марта 2019, 09:57
0
К сожалению, я это пример не понял :(.
Александр Туниеков
26 марта 2019, 18:13
0
Попробовали использовать и
1 вешался модкс на строке
$mes = $modx->getChunk($tpl, $scriptProperties);
2 не отправлял сообщения с пробелами.
Вот переписанный smschook
<?php
$fields = $hook->getValues();
$phones = $scriptProperties['smschook_phones'];
if(empty($phones)){
    $phones = $modx->getOption('smschook_phones', null, '');
}

$tpl = $scriptProperties['smschook_tpl'];
$mes = $modx->getChunk($tpl, $fields);
//return true;
$data = [
    'login' => $modx->getOption('smschook_login', null, ''),
    'psw' => $modx->getOption('smschook_password', null, ''),
    'phones' => $phones,
    'mes' => $mes
];

if (empty($data['login']) || empty($data['psw'])
    || empty($data['phones']) || empty($data['mes']) || empty($scriptProperties['smschook_tpl'])) {
    $modx->log(modX::LOG_LEVEL_ERROR, '[smscHook] Error sending SMS: empty login, password, phones, message or tpl'.$data['login'].$data['psw'].$phones.$tpl );
    return true;
}

$link = 'https://smsc.ru/sys/send.php?login=' . $data['login'] . '&psw=' . $data['psw'] . '&phones=' . $data['phones'] . '&mes=' . urlencode($data['mes']) . '&charset=utf-8';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200 && substr($res, 0, 2) == 'OK') {
    curl_close($ch);
    return true;
}
$modx->log(modX::LOG_LEVEL_ERROR, '[smscHook] Error sending SMS: ' . print_r(curl_getinfo($ch), true));
curl_close($ch);
return true;
Александр Туниеков
02 марта 2019, 21:56
0
Заводи допполе status Дополнительные поля профиля юзера (не extended).
Затем сниппет юзеру, который меняет этот статус. Например status это чекбокс
...
$modx->user->set("status", !$modx->user->get("status") );
$modx->user->save();
можно менять статус по ajax.
Вывод таблицы пользователей через pdoUsers
Александр Туниеков
02 марта 2019, 09:22
0
Кажется немного не верно. Здесь https://github.com/modxcms/revolution/blob/769b4f498bfc486b6417835f01443666178abc72/core/model/modx/transport/modtransportpackage.class.php#L233 Происходит сохранение пакета в таблицу до его установки. То есть ваш запрос вернет версию, которая ставиться. Надо добавить фильтр по installed не null.
Наверно так
$c = $modx->newQuery('transport.modTransportPackage');
$c->select('version_major')
    ->where(array(
    'package_name' => 'ИМЯ ПАКЕТА',
    'installed:!=' => null,
))
    ->sortby('version_major','DESC')
    ->limit(1);
$version = (int) $modx->getValue($c->prepare());

if ($version == 3)  {
    ...
}
Проверять надо. Но проверка на пустое содержимое таблицы мне подходит. Надеюсь никто не додумается поставить пакет и потом сразу же обновить.
Александр Туниеков
02 марта 2019, 05:41
0
Спасибо. Этот вариант как-то не пришел в голову :)