Работа за базой данных. Инсталляция и деинсталляция структуры и данных БД из модуля Joomla 3.x

👁 86 просмотров

К списку «Проектирование модуля для Joomla 3.x»

И так, пришло время одного из самых главных частей нашего модуля — базы данных. Joomla может работать со многими БД: MSQL, Oracle, Postgree и т.п. Для нас сейчас интересует БД MySQL, поэтому ориентрируем подачу материала именно на эту систему управления базами данных.

Файловая структура

Как и в предыдущем посте, на данном шаге структура файловой системы тоже претерпит ряд изменений по возрастающей. Добавим 2 файла c расширением *.sql, в которых будет структура и начальные тестовые данные для установки и удаления данных из БД. При установке модуля файл инсталляции будет создавать новую таблицу mod_table_portfolio для нашего модуля, а при удалении модуля файл деинсталляции удалит эту таблицу, что разрешит проблему сохранения системы Joomla в чистоте.

Ниже представлена новая файловая структура модуля, где в корень модуля добавлена новая папка sql, а в ней файлы с конструкциями языка SQL

stage-4-module-file-structure-of-joomla-3

Как видим, добавили 2 файла, mod_portfolio.install.mysql.utf8.sql и mod_portfolio.uninstall.mysql.utf8.sql, которые имеют следующий код в себе

CREATE TABLE IF NOT EXISTS `mod_table_portfolio` (
	`id` int(10) NOT NULL AUTO_INCREMENT,
        `title` varchar(100) NOT NULL,
	`description` text NOT NULL,
	`icon` varchar(100) NOT NULL,
 
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
 
INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 1', 'Описание проекта 1', 'images/icon1.png');
INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 2', 'Описание проекта 2', 'images/icon2.png');
INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 3', 'Описание проекта 3', 'images/icon3.png');
DROP TABLE IF EXISTS `mod_table_portfolio`

 

Переопределение структуры установочного файла mod_portfolio.xml

Добавим новый теги install и uninstall, которые будут выполняться на этапе установки и удаления модуля, в этих тегах укажем пути к нашим SQL-файлам и дополнительно добавим папку sql в тег распознавания фалов и директорий в теге files

<?xml version="1.0" encoding="utf-8"?>
<extension
	type="module"
	version="3.0"
	client="site">
	<name>Module Portfolio. Stage 4</name>
	<author>David Amirkhanov</author>
	<creationDate>August 2016</creationDate>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>mail.websofter@gmail.com</authorEmail>
	<authorUrl>www.websofter.ru</authorUrl>
	<version>1.0.0</version>
	<description>Module Portfolio for Joomal CMS designed by David Amirkhanov</description>
	<files>
		<filename module="mod_portfolio">mod_portfolio.php</filename>
		<filename>index.html</filename>
        <filename>helper.php</filename>
        <folder>sql</folder>
		<folder>tmpl</folder>
        <folder>language</folder>
	</files>
        <media folder="tmpl" destination="mod_portfolio">
            <folder>images</folder>
            <folder>css</folder>
            <folder>js</folder>
        </media>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.mod_portfolio.ini</language>
		<language tag="en-GB">en-GB/en-GB.mod_portfolio.sys.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.mod_portfolio.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.mod_portfolio.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
                            <field 
                                name="title" 
                                type="text"
                                label="MOD_PORTFOLIO_TITLE"
                                description="MOD_PORTFOLIO_TITLE_DESC"
                                required="true"
                                size="30"
                                class="mod-portfolio-title"
                                validate="" />
                            <field 
                                name="description" 
                                type="editor" 
                                default="" 
                                label="MOD_PORTFOLIO_DESCRIPTION" 
                                description="MOD_PORTFOLIO_DESCRIPTION_DESC"/>
                            <field 
                                name="icon" 
                                type="file"
                                label="MOD_PORTFOLIO_FILE" 
                                description="MOD_PORTFOLIO_FILE_DESC"
                                accept="images/*"/>
			</fieldset>
		</fields>
	</config>
    <install>
        <sql>
            <file driver="mysql" charset="utf8">sql/mod_portfolio.install.mysql.utf8.sql</file>
        </sql>
    </install>
    <uninstall>
        <sql>
            <file driver="mysql" charset="utf8">sql/mod_portfolio.uninstall.mysql.utf8.sql</file>
        </sql>
    </uninstall>
</extension>

 

Установка и демо

Теперь, при установке в БД данный модуль создаст отдельную таблицу mod_table_portfolio для модуля, в котором мы сможем сохранять, изменять и удалять данные портфолио

stage-4-module-table-in-list-of-tables-joomla-3

Данная таблица будет содержать структуры и первичные данные, которые были определены в файле инсталляции таблицы модуля mod_portfolio.install.mysql.utf8.sql

stage-4-module-table-data-and-structure-joomla-3

Скачать проект для данного шага создания модуля можно скачать по ссылке mod_portfolio_v1.0.0_stage_4.zip.