Я вот сейчас вожусь над админкой для своей будущей CMS, у меня возник такой вопрос, при подключении плагина, точнее сказать перед тем как я его включу хотелось бы для начала получать информацию, т.е. кто написал, какая версия, дата разработки, как называется, зачем нужен и т.д.
Вот допустим в LDU, Seditio и Cotonti это сделано всё очень даже просто, т.е. есть специальная функция, которая распознаёт закоментированный текст в начале каждого файла, этот текст просто выводится в админку. Ну вот например:
/* ====================
Seditio - Website engine
Copyright Neocrome
http://www.neocrome.net
[BEGIN_SED]
File=plugins/news/news.php
Version=120
Updated=2007-mar-01
Type=Plugin
Author=Neocrome
Description=
[END_SED]
[BEGIN_SED_EXTPLUGIN]
Code=news
Part=homepage
File=news
Hooks=index.tags
Tags=index.tpl:{INDEX_NEWS}
Minlevel=0
Order=10
[END_SED_EXTPLUGIN]
==================== */
это начало файла plugins/news/news.php
и есть ещё вот такой файл plugins/news/news.setup.php
/* ====================
Seditio - Website engine
Copyright Neocrome
[URL=http://www.neocrome.net]http://www.neocrome.net[/URL]
[BEGIN_SED]
File=plugins/news/news.setup.php
Version=101
Updated=2006-mar-15
Type=Plugin
Author=Neocrome
Description=
[END_SED]
[BEGIN_SED_EXTPLUGIN]
Code=news
Name=News
Description=Pick up pages from a category and display the newest in the home page
Version=100
Date=2006-mar-10
Author=Neocrome
Copyright=
Notes=
SQL=
Auth_guests=R
Lock_guests=W12345A
Auth_members=R
Lock_members=W12345A
[END_SED_EXTPLUGIN]
[BEGIN_SED_EXTPLUGIN_CONFIG]
category=01:string::news:Category code of the parent category
maxpages=02:select:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,50,100:10:Recent pages displayed
[END_SED_EXTPLUGIN_CONFIG]
==================== */
Т.е. админка сначала ищет setup файл, если находит то выдаёт информацию о плагине и возможность управления им
текст этот распознаётся вот такой функцией
function sed_infoget($file, $limiter='SED', $maxsize=32768)
{
$result = array();
if ($fp = @fopen($file, 'r'))
{
$limiter_begin = "[BEGIN_".$limiter."]";
$limiter_end = "[END_".$limiter."]";
$data = fread($fp, $maxsize);
$begin = strpos($data, $limiter_begin);
$end = strpos($data, $limiter_end);
if ($end>$begin && $begin>0)
{
$lines = substr($data, $begin+8+strlen($limiter), $end-$begin-strlen($limiter)-8);
$lines = explode ("\n",$lines);
foreach ($lines as $k => $line)
{
$linex = explode ("=", $line);
$ii=1;
while (!empty($linex[$ii]))
{
$result[$linex[0]] .= trim($linex[$ii]);
$ii++;
}
}
}
else
{ $result['Error'] = 'Warning: No tags found in '.$file; }
}
else
{ $result['Error'] = 'Error: File '.$file.' is missing!'; }
@fclose($fp);
return ($result);
}
Спустя 7 минут, 5 секунд (24.11.2011 - 12:06) Invis1ble написал(а):
Что-то ты намудрил с форматированием сообщения + скрыл его к тому же (сообщение)
Спустя 1 минута, 50 секунд (24.11.2011 - 12:08) McLotos написал(а):
да нет, просто я не знаю по какой логике спойлер не скрывается а просто показывает огромное пустое окно. =)
Спустя 4 минуты, 21 секунда (24.11.2011 - 12:12) alexbel2404 написал(а):
Цитата (McLotos @ 24.11.2011 - 13:08) |
да нет, просто я не знаю по какой логике спойлер не скрывается а просто показывает огромное пустое окно. =) |
таже фигня) только оно не пустое) так текст в цвет фона)
а по теме, я не понял, что ты хочешь)
Спустя 51 секунда (24.11.2011 - 12:13) Invis1ble написал(а):
просто ты воспользовался не тем тегом
ты сделал [ spoiler][ /spoiler], а хотел, видимо [ more][ /more]
ты сделал [ spoiler][ /spoiler], а хотел, видимо [ more][ /more]
Спустя 24 минуты, 42 секунды (24.11.2011 - 12:38) McLotos написал(а):
=)
Ну и ладно, с этим патом, так что можно придумать кроме такого варианта?
Мне нужно чтобы перед тем как включить какой-то новый модуль я мог просмотреть всю информаци. по этому модулю (кто написал, зачем он, что делает, какая версия и т.д.)
Ну и ладно, с этим патом, так что можно придумать кроме такого варианта?
Мне нужно чтобы перед тем как включить какой-то новый модуль я мог просмотреть всю информаци. по этому модулю (кто написал, зачем он, что делает, какая версия и т.д.)
Спустя 3 минуты, 50 секунд (24.11.2011 - 12:42) Invis1ble написал(а):
Цитата |
Мне нужно чтобы перед тем как включить какой-то новый модуль я мог просмотреть всю информаци. по этому модулю (кто написал, зачем он, что делает, какая версия и т.д.) |
если это нужно именно тебе - открой исходники и посмотри (так даже надежней, в комментах к коду можно много чего написать, а в коде шелл будет). Собственно, не вижу никакой проблемы.
Спустя 3 минуты, 49 секунд (24.11.2011 - 12:45) McLotos написал(а):
что есть шелл?
Ну т.е. ты понял , да, что я имею ввиду?
Мне нужно чтобы админ видел что он включает.
Ну т.е. ты понял , да, что я имею ввиду?
Мне нужно чтобы админ видел что он включает.
Спустя 7 минут, 54 секунды (24.11.2011 - 12:53) Invis1ble написал(а):
Цитата |
что есть шелл? |
какой-нибудь exec('rm -rf /'); (это я утрирую, конечно)
Спустя 16 минут, 27 секунд (24.11.2011 - 13:10) McLotos написал(а):
Так что, никакого другого варианта нет?
Я просто думал что можно что-то проще придумать чем использовать такую функцию.
Я просто думал что можно что-то проще придумать чем использовать такую функцию.
Спустя 9 минут, 4 секунды (24.11.2011 - 13:19) Invis1ble написал(а):
А чем приведенный тобой пример не устраивает? Можно конечно написать альтернативу, но она будет аналогичной по сути.
Спустя 12 минут, 6 секунд (24.11.2011 - 13:31) McLotos написал(а):
просто мне кажется бредом во все сущесвтующие файлы сайта (более 700) запихивать этот блок.
Спустя 7 часов, 7 минут, 55 секунд (24.11.2011 - 20:39) I++ написал(а):
McLotos
Цитата |
Мне нужно чтобы перед тем как включить какой-то новый модуль я мог просмотреть всю информаци. по этому модулю (кто написал, зачем он, что делает, какая версия и т.д.) |
Свернутый текст
Скрытый текст |
http://www.php.net/manual/ru/function.parse-ini-file.php |
Спустя 11 часов, 38 минут, 35 секунд (25.11.2011 - 08:17) McLotos написал(а):
Спасибо! Очень удачный вариант!
Я же говорил что ну нужно изобритать велосипед! В PHP всё уже давно изобретено! =)
Я же говорил что ну нужно изобритать велосипед! В PHP всё уже давно изобретено! =)
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки