Перейти к публикации

MSW

новички
  • Публикации

    37
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем MSW

  1. Предложение: добавить функцию открытия страницы после установки плагина, например, для дополнительной инструкции по установке модуля, внесению правок в шаблон, настройки параметров и т.д.

    Для безопасности можно ограничить - открывать только файлы загруженные на сайт, а не внешние ссылки

  2. 11 минут назад, celsoft сказал:

    система логирования ошибок в системе плагинов, просто выведет что поля уже существуют в таблице.

    Просто было бы логично и красивее, если бы такие моменты были учтены и происходили проверки в процессе установки плагина, а не выводились ошибки и потом раздавать всем пояснения, что это нормально, так задумано и реализовано в CMS :( что это не разработчик плагина виноват...

  3. 23 минуты назад, celsoft сказал:

    Зачем вам вообще эти проверки делать?

    это да, вот только это справедливо для того случая, когда ставим всё на чистую полностью CMS, но вот если обновляться со старой версии, то база уже есть, значит в ней уже поля имеются и тут мы через систему плагинов снова пытаемся добавить уже имеющиеся поля в базе и получаем конфуз

  4. Может в "шаблонизатор" запросов модульной системы добавить теги для добавления полей в таблицу, что то типа:

    [ADD_COLUMN_IF_NOTEXIST=таблица|поле|свойство]

    например:

    [ADD_COLUMN_IF_NOTEXIST={prefix}_files|field1|VARCHAR(40) NOT NULL]

    и уже на стороне пхп перед выполнением/компиляцией запроса делать проверку, по типу как в моём примере с пхп

    • Поддерживаю 1
  5. Проблемка при выполнении запросов в базу при установке плагина, при установке происходит добавление необходимых для модуля столбцов, раньше использовал проверку в пхп, на подобии:

        $f = $f_sql = array();
    
        $dbZ = $db->query("SHOW columns FROM " . PREFIX . "_files");
        while($row = $db->get_row($dbZ)) {
            $f[] = $row['Field'];
        }
        if( !in_array("field1", $f) ) {
            $f_sql[] = "ADD `field1` VARCHAR(40) NOT NULL";
        }
        if( !in_array("field2", $f) ) {
            $f_sql[] = "ADD `field2` VARCHAR(40) NOT NULL";
        }
    
        if( count($f_sql)>0 ) {
            $db->query("ALTER TABLE " . PREFIX . "_files " . implode(", ", $f_sql) );
    
        }

    теперь эти проверки требуется перенести на сторону плагиновой системы, то есть на сторону MySQL

    пока что приходит на ум такой вариант:

    DROP PROCEDURE IF EXISTS PluginAddColumn;
    DELIMITER $$
    CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName tinytext, IN fieldName tinytext, IN fieldDef text)
    BEGIN
        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE column_name=fieldName AND table_name=tableName AND table_schema=dbName)
        THEN
            set @ddl = CONCAT("ALTER TABLE `",tableName,"` ADD COLUMN `",fieldName,"` ",fieldDef);
            prepare stmt from @ddl;
            execute stmt;
        END IF;
    END $$
    DELIMITER ;
    
    call PluginAddColumn(Database(), '{prefix}_files', 'field1', "VARCHAR(40) NOT NULL");
    call PluginAddColumn(Database(), '{prefix}_files', 'field2', "VARCHAR(40) NOT NULL");
    
    DROP PROCEDURE PluginAddColumn;

    Кроме того что это выполняется медленее, ещё проблема:

    Цитата

     

    Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName ' at line 1

    продолжить

     

    хотя в "скомпилированном" виде запрос из окна ошибки выполняется без ошибок

  6. 4 минуты назад, Sander1 сказал:

    Заменять больший кусок кода...

    про больший кусок кода подумал, но думал что вдруг есть предусмотренный вариант какой

    хотя конешно предусмотреть все случаи вариантов поиска и замены вряд ли удастся полностью и целиком

  7. 17 минут назад, celsoft сказал:

    Он там ошибочно

    ещё вопрос, если требуется заменить второе вхождение

    например: engine/classes/uploads/upload.class.php

    поиск:

    } else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png";  $data_url = "#"; $file_play = ""; };

    первое вхождение из таблицы " . PREFIX . "_static_files, оно не нужно, а нужно второе из таблицы " . PREFIX . "_files

    как в этом случае быть? :)

     

  8. ещё в дополнение к файлу крона, проблема с файлом  /engine/inc/include/functions.inc.php

    в нём происходит удаление файлов, загруженных в новость, собственно нужны правки в строки:

    @unlink( ROOT_DIR . "/uploads/files/" . $folder_prefix . $file );

    $db->query( "DELETE FROM " . PREFIX . "_files WHERE news_id = '{$id}'" );

    но:

    Файл engine/inc/include/functions.inc.php находится в списке защищенных файлов. Он не может быть модифицирован при помощи системы плагинов.

  9. только пришлось бы для последнего задания, по бекапу, тоже определить $cronmode, а то оно каждый раз выполнялось бы

    хотя при вписывании крон заданий для модулей, достаточно было бы заканчивать их die ("done"); или подобным, тогда бекап каждый раз не дёргался бы

  10. 20 минут назад, celsoft сказал:

    Свою функциальность вы должны добавлять в файлы, которые они подключают.

    вот с cron.php как раз проблема, в нём нет стороннего файла, в который можно внести свою функциональность при определённом запросе

    может в него подключить файл заглушку, в который уже через систему плагинов можно вписывать нужные $cronmode?

     

    например перед if($cronmode == "sitemap") {

    добавить инклуд:

    include_once (DLEPlugins::Check(ENGINE_DIR . '/modules/cron_plugins.php'));

     

    и все нужные задания для крона модулей уже через систему плагинов вносились бы в этот файл

  11. Вопросик:

    Нельзя вносить правки в плагине для файлов в engine/inc

    например для отслеживания добавляемых новостей, а они могут добавляться не только с сайта но и с админ панели

    а так как система не вносит правки в эти файлы то надо вручную вносить часть правок в эти файлы и каждый раз снова перевносить после обновления движка

    так же как и файл cron.php в корне сайта - не сохраняются правки в плагине

    как с этим быть? есть идеи кроме старой системы внесения правок вручную?

×
×
  • Создать...