Marius Cramer
2013-10-14 992797f73c92b413a7fecff02c27c61b7db55b43
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,43 @@
      $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);
               if(class_exists($php_patch_class_name)) {
                  $php_patch = new $php_patch_class_name;
               } else {
                  swriteln($inst->lng('WARNING: PHP patch file').': '.$php_patch_filename.' '.$inst->lng('contains errors.'));
               }
            }
            //* 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 +368,6 @@
   unset($new_ini);
}
?>