Advertisement
b4lduin

Update PHP

Jun 7th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.91 KB | None | 0 0
  1. if($server_version_number > $shop_version_number)
  2. {
  3.     //only make a update if we have enough space
  4.     $update_size    = (3 *(($this->curlGetFileSize(self::$update_address)/1024)/1024));
  5.     $free_space     = $this->getFreeWebspaceSize();
  6.  
  7.     if($free_space > $update_size)
  8.     {
  9.         //...
  10.  
  11.         $load_status = $this->loadUpdateFile();
  12.  
  13.         //check the update file status if ok start backup
  14.         if($load_status)
  15.         {
  16.             exec('mysqldump --host=' . DB_HOST . ' --user=' . DB_USERNAME . ' --password=' . DB_PASSWORD . ' --opt ' . DB_DATABASE . ' > ' . $path . '.sql');
  17.  
  18.             //...
  19.  
  20.             $zip_status     = $this->zipFolder($_SERVER['DOCUMENT_ROOT'], self::$zip_exceptions, self::$zip_templates);
  21.             $free_space_bkp = $this->getFreeWebspaceSize();
  22.  
  23.             if($zip_status && $free_space_bkp > $update_size)
  24.             {
  25.                 //now remove the old update files and extract the new ones
  26.                 $this->cleanUpdateFilesDir();
  27.  
  28.                 //...
  29.  
  30.                 if($unzip_status)
  31.                 {
  32.                     $sql_files  = array_diff(scandir(self::$update_sql_dir), array('.', '..'));
  33.                     $db_status  = -2;
  34.  
  35.                     if(!empty($sql_files))
  36.                     {
  37.                         foreach($sql_files as $id => $sql_file)
  38.                         {
  39.                             list($file_main, $file_sub, $file_fix, $file_type) = explode('.', $sql_file);
  40.  
  41.                             $file_version_number = $this->calculateVersionNumber($file_main, $file_sub, $file_fix);
  42.  
  43.                             if($file_version_number <= $shop_version_number || $file_version_number > $server_version_number)
  44.                             {
  45.                                 unset($sql_files[$id]);
  46.                             }
  47.                         }
  48.  
  49.                         if(!empty($sql_files))
  50.                         {
  51.                             $this->transactionBegin();
  52.  
  53.                             //variable needed to only rollback in case there was a db update
  54.                             $db_update      = true;
  55.                             $db_response    = $this->doDbUpdate($sql_files);
  56.                             $db_status      = $db_response['status'];
  57.                             $db_rollback    = $db_response['commit'];
  58.                         }
  59.                     }
  60.                     else
  61.                     {
  62.                         //...
  63.                     }
  64.  
  65.                     if($db_status == -2)
  66.                     {
  67.                         //...
  68.                     }
  69.                     else if($db_status == -1)
  70.                     {
  71.                         //...
  72.  
  73.                         $error = $this->lang->get_lang('t_error_sql_update', 'Fehler! Das Update konnte aufgrund eines Datenbankfehlers nicht durchgeführt werden.');
  74.                     }
  75.                     else if($db_status == 0)
  76.                     {
  77.                         //...
  78.                     }
  79.  
  80.                     if($db_status == 0 || $db_status == 1 || $db_status == -2)
  81.                     {
  82.                         $file_status = $this->copyFiles();
  83.                        
  84.                         if($file_status)
  85.                         {
  86.                             $worker_files = array_diff(scandir(self::$update_worker_dir), array('.', '..'));
  87.  
  88.                             if(!empty($worker_files))
  89.                             {
  90.                                 foreach($worker_files as $file)
  91.                                 {
  92.                                     list($file_main, $file_sub, $file_fix, $file_type) = explode('.', $file);
  93.  
  94.                                     $file_version_number = $this->calculateVersionNumber($file_main, $file_sub, $file_fix);
  95.  
  96.                                     if($file_version_number <= $shop_version_number || $file_version_number > $server_version_number)
  97.                                     {
  98.                                         //...
  99.                                     }
  100.                                     else
  101.                                     {
  102.                                         //...
  103.                                     }
  104.                                 }
  105.                             }
  106.                             else
  107.                             {
  108.                                 //...
  109.                             }
  110.  
  111.                             if($db_status !== -2 && $db_rollback === false)//when the rollback is false we do have a transaction to end
  112.                             {
  113.                                 try
  114.                                 {
  115.                                     $this->transactionEnd();
  116.                                 }
  117.                                 catch(Exception $e)
  118.                                 {
  119.                                     //...
  120.                                 }
  121.                             }
  122.                         }
  123.                         else
  124.                         {
  125.                             $file_error = true;
  126.                             $error      = $this->lang->get_lang('t_error_copy_files', 'Fehler beim kopieren der Dateien.');
  127.                         }
  128.                     }
  129.                 }
  130.                 else
  131.                 {
  132.                     $error = $this->lang->get_lang('t_error_extracting_update', 'Fehler! Das Update wurde nicht richtig entpackt.');
  133.                 }
  134.             }
  135.             else
  136.             {
  137.                 $error = $this->lang->get_lang('t_error_creating_backup', 'Fehler! Das Backup konnte nicht erstellt werden. Bitte sorgen Sie für genug freien Speicher damit das Backup vom Shop erstellt werden kann.');
  138.             }
  139.         }
  140.         else
  141.         {
  142.             $error = $this->lang->get_lang('t_error_loading_update', 'Fehler! Das Update wurde leider nicht richtig geladen bitte versuchen Sie es später nochmal.');
  143.         }
  144.     }
  145.     else
  146.     {
  147.         $error = $this->lang->get_lang('t_not_enough_space', 'Fehler! Es steht leider nicht genug Speicher für ein Update zur Verfügung.');
  148.     }
  149. }
  150. else
  151. {
  152.     //...
  153. }
  154.  
  155. if($error)
  156. {
  157.     if($db_update)
  158.     {
  159.         $this->transactionCancel();
  160.  
  161.         if($db_rollback) //implicit commit detected rollback ...
  162.         {
  163.             rename($_SERVER['DOCUMENT_ROOT'] . '/shop_db.php', $_SERVER['DOCUMENT_ROOT'] . '/shop_db.sql');
  164.             exec('mysql --host=mysql5.dr-webshops.de --user=' . DB_USERNAME . ' --password=' . DB_PASSWORD . ' ' . DB_DATABASE . ' < ' . $_SERVER['DOCUMENT_ROOT'] . '/shop_db.sql');
  165.         }
  166.     }
  167.  
  168.     if($file_error)
  169.     {
  170.         //when there is a file error do a complete restore
  171.         $this->restoreBackup();
  172.     }
  173.     else if($zip_status)
  174.     {
  175.         //an other error occured after we created an backup now we have to delete it
  176.         unlink(self::$local_backup_archive_path . 'shop_backup.zip');
  177.     }
  178. }
  179. else
  180. {
  181.     //generating the htaccess
  182.     $this->generateHtacess();
  183.     $this->setShopVersion(join('.', $server_version));
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement