Обновление плагина¶
После того как плагин написан и выложен в магазине Oxwall разработчикам зачастую требуется постоянный механизм позволяющий просто и быстро вносить свои изменения в плагины и распространять эти изменения среди своих клиентов. Давайте посмотрим как это можно просто сделать на платформе Oxwall.
Исправляем ошибки в плагине¶
Наша задача исправить вымышленную ошибку в коде нашего плагина. Представим, что мы уже написали наш первый плагин и его plugin.xml описывающий мета информацию плагина выглядит так: (подробнее про структуру файлов плагина можно прочитать в разделе - Структура плагина) :
<?xml version="1.0" encoding="utf-8"?>
<plugin>
<name>My Super Plugin</name>
<key>superplugin</key>
<description>My super plugin.</description>
<author>Me</author>
<authorEmail>me@oxwall.org</authorEmail>
<authorUrl>http://www.me.com</authorUrl>
<developerKey>MY_DEV_KEY</developerKey>
<build>1</build>
<copyright>(C) 2015 My. All rights reserved.</copyright>
<license>OSCL</license>
<licenseUrl>http://www.oxwall.org/store/oscl</licenseUrl>
</plugin>
Мы нашли и исправили ошибку и теперь просто повышаем номер билда в нашем plugin.xml c 1 до 2. И наш результирующий файл стал выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<plugin>
<name>My Super Plugin</name>
<key>superplugin</key>
<description>My super plugin.</description>
<author>Me</author>
<authorEmail>me@oxwall.org</authorEmail>
<authorUrl>http://www.me.com</authorUrl>
<developerKey>MY_DEV_KEY</developerKey>
<build>2</build>
<copyright>(C) 2015 My. All rights reserved.</copyright>
<license>OSCL</license>
<licenseUrl>http://www.oxwall.org/store/oscl</licenseUrl>
</plugin>
Теперь можно запаковать наш плагин с обновленным файлом plugin.xml, а также с нашими исправлениями в коде и загрузить архив в магазин Oxwall (не забудьте сделать пакет с исправлениями основным в настройках загруженного плагина). Система автоматически оповестит всех клиентов о наличии обновлений и клиентам останется только нажать на ссылку обновить плагин в админ панели своего сайта. Но бывает ситуации когда не достаточно внести изменения только в файлы кода, но также необходимо внести изменения в структуру базы данных, добавить/удалить виджет или просто выполнить произвольный php код, для этого мы можем написать скрипт обновления, о чем и пойдет речь ниже.
Скрипты обновления¶
Что такое скрипт обновления? - это просто произвольный php скрипт который завязан на определенный билд плагина, т.е если номер билда у нас 2, то ему возможно будет соответствовать скрипт обновления с таким же номером, но не всегда, скрипты обновлений является опциональными. И так представим, что нам нужно внести изменения в базу данных в таблицы нашего плагина, а также добавить новые переводы. Для этого нам нужно создать в директории update нашего плагина директорию с названием 2 которая соответствует нашему последнему билду с исправлениями (выше в разделе - Обновление плагина мы исправляли вымышленную ошибку) и так структура директорий нашего плагина должны выглядеть примерно так:
Внутрь созданной директории помещаем наш скрипт обновления - update.php (название скрипта менять не нужно). Ниже приведу пример содержимого этого файла:
<?php
// импорт новых переводов плагина
Updater::getLanguageService()->importPrefixFromZip(dirname(__FILE__) . DS . 'langs.zip', 'superplugin') ;
// добавляем новый индекс в таблицу
$sql = "ALTER TABLE `".OW_DB_PREFIX."my_table` ADD UNIQUE `userId` (`userId`)";
Updater::getDbo()->query($sql);
Скрипт обновления создан, теперь мы можем запаковать весь плагин и выложить его в магазине Oxwall. С основными сервисами которые могут вам помогут эффективно работать при написании плагинов или обновлений можно познакомиться в разделе - Основные сервисы приложения