tbrehm
2013-08-23 eac72c62332a8627fb350b854a72df6565a28148
Added php based patch file function to update script.
1 files added
3 files modified
69 ■■■■■ changed files
install/install.php 2 ●●●●● patch | view | raw | blame | history
install/lib/update.lib.php 44 ●●●● patch | view | raw | blame | history
install/patches/upd_0001.php 21 ●●●●● patch | view | raw | blame | history
install/update.php 2 ●●●●● patch | view | raw | blame | history
install/install.php
@@ -34,6 +34,8 @@
error_reporting(E_ALL|E_STRICT);
define('INSTALLER_RUN', true);
//** The banner on the command line
echo "\n\n".str_repeat('-',80)."\n";
echo " _____ ___________   _____              __ _         ____
install/lib/update.lib.php
@@ -27,6 +27,15 @@
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//* Installer patch stub class
class installer_patch_update {
   protected function onBeforeSQL() {
   }
   protected function onAfterSQL() {
   }
}
//* DB dump function
function prepareDBDump() {
    global $conf;
@@ -151,16 +160,39 @@
        $found = true;
        while($found == true) {
            $next_db_version = intval($current_db_version + 1);
            $patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
            if(is_file($patch_filename)) {
            $sql_patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
            $php_patch_filename = realpath(dirname(__FILE__).'/../').'/patches/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.php';
            if(is_file($sql_patch_filename)) {
                //* Load php patch file and instantiate object
                if(is_file($php_patch_filename)) {
                    $php_patch_class_name = 'upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT);
                    include_once($php_patch_filename);
                    $php_patch = new $php_patch_class_name;
                }
                //* Exec onBeforeSQL function
                if(isset($php_patch) && is_object($php_patch)) {
                    $php_patch->onBeforeSQL();
                    swriteln($inst->lng('Executing PHP patch file').': '.$php_patch_filename);
                }
                //* Load patch file into database
                if( !empty($conf["mysql"]["admin_password"]) ) {
                    system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." ".escapeshellarg($conf['mysql']['database'])." < ".$patch_filename);
                    system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename);
                } else {
                    system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < ".$patch_filename);
                    system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename);
                }
                swriteln($inst->lng('Loading SQL patch file').': '.$patch_filename);
                swriteln($inst->lng('Loading SQL patch file').': '.$sql_patch_filename);
                //* Exec onAfterSQL function
                if(isset($php_patch) && is_object($php_patch)) {
                    $php_patch->onAfterSQL();
                }
                $current_db_version = $next_db_version;
                if(isset($php_patch)) unset($php_patch);
            } else {
                $found = false;
            }
@@ -332,4 +364,6 @@
    unset($new_ini);
}
?>
install/patches/upd_0001.php
New file
@@ -0,0 +1,21 @@
<?php
if(!defined('INSTALLER_RUN')) die('Patch update file access violation.');
/*
    Example installer patch update class. the classname must match
    the php and the sql patch update filename. The php patches are
    only executed when a corresponding sql patch exists.
*/
class upd_0001 extends installer_patch_update {
   public function onBeforeSQL() {
     // Do something
   }
   public function onAfterSQL() {
     // Do something
   }
}
?>
install/update.php
@@ -34,6 +34,8 @@
error_reporting(E_ALL|E_STRICT);
define('INSTALLER_RUN', true);
//** The banner on the command line
echo "\n\n".str_repeat('-',80)."\n";
echo " _____ ___________   _____              __ _         ____