== How to make automatic upgrade script for module == There is a prepared zip package with the simplest update for Dolphin 7 module [http://www.boonex.com/trac/dolphin/attachment/wiki/HowToMakeAutomaticUpgradeScriptForModule/update_100_110.zip here]. Download it, unpack and upload to the '''modules/me/bloggie/updates/''' folder. '''bloggie''' folder is the root folder of Bloggie module which was described [http://www.boonex.com/trac/dolphin/wiki/DolphinTutorialMyFirstModule here], '''updates''' folder is a folder for all updates for Bloggie module, if it doesn't exist then you need to create it.[[BR]] The zip package contains '''update_100_110''' folder. It is up to you how to name the folder but it is a good practice to include "version from" and "version to" into the folder name, it is just more clear. Lets describe each file in the update. This is almost the minimal set of files for the module's update:[[BR]] '''bloggie/updates/update_100_110/install/'''[[BR]] Update installation directory, where all installation files are located, like SQL files and language files.[[BR]] '''bloggie/updates/update_100_110/install/config.php'''[[BR]] Update installation config file. We will take a closer look at this later.[[BR]] '''bloggie/updates/update_100_110/install/installer.php'''[[BR]] Update installer class. You can add some custom installation scripts and override default behaviour.[[BR]] '''bloggie/updates/update_100_110/install/info'''[[BR]] Installation information messages folder. If you need to display information messages upon update install, you will need to place files here - also special instructions are needed to point to in the install config file to display these messages properly.[[BR]] {{{ 'install' => array( 'show_introduction' => 1, ... 'show_conclusion' => 1 ), }}} '''bloggie/updates/update_100_110/install/langs'''[[BR]] Update languages must be located in this dir. The language file must be a php file with the name of two letters of the language code. We will take a closer look at an example of the language file later.[[BR]] '''bloggie/updates/update_100_110/install/langs/en.php'''[[BR]] An update for default English language file.[[BR]] '''bloggie/updates/update_100_110/install/sql'''[[BR]] SQL script for update install is here.[[BR]] '''bloggie/updates/update_100_110/install/sql/install.sql'''[[BR]] Update installation SQL file.[[BR]] '''bloggie/updates/update_100_110/source'''[[BR]] A folder with files and folders which should be uploaded in module's folder. So, files and folders structure should match module's one. You may read more about module's file structure [http://www.boonex.com/trac/dolphin/wiki/DolphinTutorialMyFirstModule here].[[BR]] == Configuration file. == Module's update script has its own '''config.php''' file. The main differences between module's and update's configuration files are listed below. Update's configuration file has the following additional parameters 1. Config file should specify the version which it can be applied to. Also it should specify the version which you'll have after the update was applied. {{{ 'version_from' => '1.0.0', 'version_to' => '1.1.0', }}} 2. Home directory and URI of the module which the update relates to. {{{ 'module_dir' => 'me/bloggie/', 'module_uri' => 'bloggie', }}} Update's configuration file doesn't have the following parameters in comparison with module's config file. 1. Everything related to uninstallation. {{{ 'uninstall' => array ( ... ), ... 'uninstall_permissions' => array(), ... 'uninstall_info' => array( 'introduction' => 'uninst_intro.html', 'conclusion' => 'uninst_concl.html' ), }}} 2. Dependencies settings. {{{ 'dependencies' => array(), }}} == Language file. == In comparison with module's language file update's language file has tree separate arrays. 1. An array for language keys which should be deleted. The array should contain language keys only. {{{ $aLangContentDelete = array( '_language_key', ); }}} 2. An array for language keys which should be added. The array should contain key => translation pairs. {{{ $aLangContentAdd = array( '_language_key' => 'translation' ); }}} 3. An array for language keys which should be updated. The array should contain key => translation pairs. {{{ $aLangContentUpdate = array( '_language_key' => 'translation', ); }}}