LiveStreet Mod Installer
Приветствую. LS Mod Installer, как многие уже могли догадаться, служит для установки (а в будущем и удалении) модификаций, хаков и модулей для LiveStreet в полуавтоматическом режиме (всё же придется кликнуть на кнопочку). Я считаю, что данный модуль будет очень полезен в плане популяризации проекта LiveStreet ну и конечно же для повышения КПД даже тех, кто особо брезгует подобными «автоматами» (проходили это уже). В первую очередь модуль создан для сокращения времени танцев с бубном, подобным
На данный момент реализован рабочий минимум, а именно поиск строк в файлах на сервере, замена, либо добавление необходимых строк в полуавтоматическом режиме.
Для описания действий модифицирования служит валидный файл XML с командами.
Модуль бесплатен и защищен открытой лицензией LGPL.
Пока единственную проблему я вижу лишь в написании сторонними разрабротчиками файлов-установщиков для данного движка, хотя для начала я лично буду делать инсталляторы для добавляемых модификаций. А дальше будет видно. Планирую создать некую базу модификаций, доступную из админки вашего сайта и установки их в один клик.
Данная версия предназначена только для тестирования и общего обзора! Известны не критические ошибки. Пока не рекомендуется использовать его на рабочих проектах! Поэтому пока не выкладываю в разделе модулей.
Итак, если же вам понравится эта идея, то в будущем планируется реализовать:
— Возможность отката/удаления любой модификации.
— Создание/копирование/удаление файлов на сервере.
— Поддержка *.tar.gz пакетов с графикой и большим количеством файлов.
— Поддержка SQL запросов.
— Поддержка подгрузки отдельных массивных SQL файлов (возможно).
— Самостоятельный сервис для установки и полуавтоматического обновления модификаций в один клик, доступный прямо с вашего сайта.
— Проверка модификаций на соответствие с неким сертифицированием через собственный сервис и оповещение при установке.
— Улучшение работы парсера и обработки ошибок.
— Проверка на соответствие версии LiveStreet.
— Описание и reaadme файл от разработчика для уведомления пользователя.
А теперь всё зависит от вас и ваших отзывов.
Установка:
— Скопируйте все файлы из архива.
Всё :)
Далее идём на _http://ваш_сайт/mod/install
Ниже информация для разработчиков.
Общий шаблон XML файла модификации:
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">
<modification>
<id>ls_mod_installer</id>
<name>LiveStreet Mod Installer</name>
<version>0.1.90611</version>
<lsversion>0.3.1</lsversion>
...
</modification>
Спецификация XML документа
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">
Тег, указывающий, что ниже перечислены рабочие команды для модифицирования.
<modification></modification>
Системное ID модификации (для учёта и контроля)
<id></id>
Название модификации
<name></name>
Версия модификации
<version></version>
Поддерживаемая версия LiveStreet
<lsversion></lsversion>
Далее существующие на данный момент команды.
Объявление файла, с которым будет работать парсер
<file name="editit.php"></file>
Объявление о начале конкретного изменения файла.
<operation></operation>
Поиск определённой строки в файле, указанном в дерективе file выше. Поддерживает табуляцию и переносы строк.
<search position="..."><![CDATA[...]]></search>
Значения параметра position
replace — замена куска кода дерективы search на значение тега add (ниже)
before — запись перед искомой строкой дерективы search значения дерективы add
after — запись после искомой строки дерективы search значения дерективы add
Заменяемый/добавляемый код при дерективе operation. работает соместно с тегом search. Поддерживает табуляцию и переносы строк.
<add><![CDATA[...]]></add>
Рабочий пример модифицирования двух файлов тремя командами:
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">
<modification>
<id>invite_list</id>
<name>Хак «Invite List»</name>
<version>1.0</version>
<lsversion>0.3.1</lsversion>
<file name="test.php">
<operation>
<search position="replace"><![CDATA[<?php Search me! ?>]]></search>
<add><![CDATA[<?php
//replace this string!
// or kill it
?>]]></add>
</operation>
</file>
<file name="test2.php">
<operation>
<search position="before"><![CDATA[php Search me2!!!]]></search>
<add><![CDATA[<?php//add this string before?>]]></add>
</operation>
<operation>
<search position="after"><![CDATA[php Search me3!!!]]></search>
<add><![CDATA[//add this string after this!]]></add>
</operation>
</file>
</modification>
XML синтаксис не будет меняться от версии к версии.
Ну и чтобы не быть совсем многословным, сделал полностью
Спасибо DPX-Infinity за помощь в реализации.
ps. пока не могу перенести в соответствующий блог. Как только, так сразу.
UPD1: Забыл добавить комментарии основного файла парсера parseexecution.php Обновил.
UPD2: Обновление архива с модулем и способ установки.
18 комментариев
как уже неоднократно писал — я буду удалять первые комменты от авторов топика. Если нужно, что то дополнить — можно отредактировать топик. Оставлять коммент для поднятия топика в прямой эфире не хорошо. И еще, стал минусовать все такие топики не зависимо от их содержания. Надо же как то с этим бороться? )
Спасибо за такое решение! А то давно хотелось.
Просто самого залюбили случаи, когда кто-то написал топик (чаще всего, с вопросом или просьбой о помощи) и тут же сам на него ответил. Лезешь под кат, глянуть, что ему ответили (и, может, самому ответ узнать интересно), а видишь малозначащий комментарий в стиле «и ещё, а то лень было топик редактировать» или даже «кто-нибудь, помогите, хелп».
И сразу одно «но» — а нафига config/config.route.php трогать, если с таким же успехом можно просто положить свой config.route.php с нужными строками в config/modules/имя_модуля/?
И еще — как бы в XML предусмотреть модификацию файлов папки текущего шаблона? Явное название папки тут не катит — на разных сайтах она может быть своя.
Я уже писал что это презентация и сделано «чтоб работало» ну и основной функционал. В будущем учту про шаблон (хотя я вспоминал об этом, но не стал особо заморачиваться). Я думаю в XML будет что-то типа , либо массово копировать для каждого шаблона: Над этим я ещё подумаю.
avadim +1