понедельник, 5 марта 2012 г.

Создание компонента для CMS Joomla. Часть 15. Скрипт установки, обновления и удаления расширения

Доброго времени суток. Вот мы с Вами и подошли к последнему материалу цикла, посвящённого созданию компонента для CMS Joomla. В прошлой статье мы с Вами рассмотрели добавление прав доступа для нашего компонента. А сегодня остановимся на php-скрипте, который помогает нам установить, обновить или удалить наше расширение. Вы спросите для чего это нужно? У нас есть файл описаний, который все это делает? На, что я Вам отвечу не все файл описаний может сделать. И те операции, которые не могут быть достигнуты при помощи xml-файла, мы сделаем при помощи данного скрипта. И так, давайте приступим.

Данный файл расположен в корне нашего компонента и называется script.php. Сам скрипт состоит из класса и пяти методов:
  • предустановочный, который выполняется перед установкой или обновлением
  • установочный, который выполняется во время установки
  • обновление - выполняется во время обновления
  • удаление - во время удаления
  • послеустановочный - выполняется после установки или обновления

Прежде, чем приступить к созданию скрипта скачать исходник из предыдущего материал по этой ссылке (или воспользуйтесь своим). На базе компонента из прошлой статьи мы и создадим компонент с файлом script.php.
Ну, что ж давайте создадим наш скрипт script.php:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');

/**
* Файл скрипта для компонента HelloWorld
*/
class com_helloWorldInstallerScript
{
    /**
     * установочный метод
     */
    function install($parent)
    {
        $parent->getParent()->setRedirectURL('index.php?option=com_helloworld');
    }

    /**
     * метод удаления компонента
     */
    function uninstall($parent)
    {
        echo '<p>' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '</p>';
    }

    /**
     * метод обновления для компонента
     */
    function update($parent)
    {
        echo '<p>' . JText::_('COM_HELLOWORLD_UPDATE_TEXT') . '</p>';
    }

    /**
     * предустановочный метод, $type: установка, удаление или обновление
     */
    function preflight($type, $parent)
    {

        echo '<p>' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '</p>';
    }

    /**
     * постустановочный метод, type: установка, удаление или обновление
     */
    function postflight($type, $parent)
    {
        echo '<p>' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '</p>';
    }
}

Тут бы хотелось отметить, что название класса должно быть строго как описано в документации [com]_[helloWorld][InstallerScript], т.е. [com] - наше расширение является компонентом, [HelloWorld] - название компонента, [InstallerScript] - то, что это установочный скрипт.
На этом установочный скрипт для нашего компонента написан. Вы можете добавить в языковый файл admin/language/en-GB/en-GB.com_helloworld.sys.ini свой перевод.
Теперь изменим файл описания следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">

   <name>Hello World!</name>
   <!-- Данные о разработчике -->
   <creationDate>2012</creationDate>
    <author>zloykolobok</author>
    <authorEmail></authorEmail>
    <authorUrl>http://zloykolobok.blogspot.com</authorUrl>
    <copyright>Copyright Info</copyright>
    <license>License Info</license>
    <!--  Версия продукта-->
    <version>0.0.15</version>
    <!-- Описание компонента-->
    <description>Продолжение статей по созданию расширений для CMS Joomla</description>

    <!-- Выполняется при установке, удалении или обновленит. Доступно с версии 2.5 -->
   <scriptfile>script.php</scriptfile>

    <install> <!--Выполняется при установке -->
       <sql>
           <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
       </sql>
   </install>
   <uninstall> <!-- Выполняется при удалении-->
       <sql>
           <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
       </sql>
   </uninstall>
   <update> <!-- Выполняется при обновлении. Данная функция появиласть с версии 1.6 -->
       <schemas>
           <schemapath type="mysql">sql/updates/mysql</schemapath>
       </schemas>
   </update>

   <!-- Копирование файлов в секцию site-->
   <files folder="site">
       <filename>index.html</filename>
       <filename>helloworld.php</filename>
       <filename>controller.php</filename>
       <folder>views</folder>
       <folder>models</folder>
       <folder>language</folder>
   </files>

    <!-- в папке media создается папка com_helloworld и туда производиться копирование media-файлов-->
   <media destination="com_helloworld" folder="media">
       <filename>index.html</filename>
       <folder>images</folder>
   </media>

   <administration>
       <!-- меню в административном разделе-->
       <menu img="../media/com_helloworld/images/tux-16x16.png">COM_HELLOWORLD_MENU</menu>
       <!-- Копирование сайтов в секцию Administration  -->
       <files folder="admin">
           <!-- Admin Main File Copy Section -->
           <filename>index.html</filename>
           <filename>config.xml</filename>
           <filename>access.xml</filename>
           <filename>helloworld.php</filename>
           <filename>controller.php</filename>
           <!-- папка для SQL файлов -->
           <folder>sql</folder>
           <!-- папка для table-файлов -->
           <folder>tables</folder>
           <!-- models files section -->
           <folder>models</folder>
           <!-- папка для views-файлов -->
           <folder>views</folder>
           <!--папка для controller-файлов-->
           <folder>controllers</folder>
           <!-- папка для helpers-файлов-->
           <folder>helpers</folder>
       </files>

       <languages folder="admin">
           <language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
           <language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
       </languages>
   </administration>

</extension>
Теперь все запакуем в zip-архив и проверим.
На этом создания файла скрипта для установки, удаления или обновления расширения CMS Joomla мы завершаем. А также заканчиваем серию статей, посвященных созданию компонента для CMS Joomla. В следующем посте я подведу итог данной серии. А на этом пока все.

Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



0 коммент.:

Отправить комментарий