Exemplo n.º 1
0
 /**
  * @desc Builds a Backup object
  */
 public function __construct()
 {
     $this->list_db_tables();
     //Liste toutes les tables de PHPBoost.
     //On modifie le temps d'exécution maximal si le serveur le permet
     //parce que les opérations sont longues
     Environment::try_to_increase_max_execution_time();
     $this->db_querier = PersistenceContext::get_querier();
 }
Exemplo n.º 2
0
 private function dump($file_path, $tables)
 {
     Environment::try_to_increase_max_execution_time();
     $file = new File($file_path);
     $file_writer = new BufferedFileWriter($file);
     if ($tables == null) {
         PersistenceContext::get_dbms_utils()->dump_phpboost($file_writer, DBMSUtils::DUMP_STRUCTURE_AND_DATA);
     } else {
         PersistenceContext::get_dbms_utils()->dump_tables($file_writer, $tables, DBMSUtils::DUMP_STRUCTURE_AND_DATA);
     }
     CLIOutput::writeln('Tables dumped to file ' . $file_path);
 }
 public static function add_newsletter(array $streams, $subject, $contents, $language_type)
 {
     Environment::try_to_increase_max_execution_time();
     $newsletter_streams = NewsletterStreamsCache::load()->get_streams();
     foreach ($newsletter_streams as $id => $stream) {
         if (in_array($id, $streams)) {
             //Send mail
             NewsletterMailFactory::send_mail(self::list_subscribers_by_stream($id), $language_type, NewsletterConfig::load()->get_mail_sender(), $subject, $contents);
             //Add archive
             NewsletterDAO::add_archive($id, $subject, $contents, $language_type);
         }
     }
 }
 private function restore_db($file_name)
 {
     Environment::try_to_increase_max_execution_time();
     PersistenceContext::get_dbms_utils()->parse_file(new File($file_name));
     CLIOutput::writeln('Dump restored from file ' . $file_name);
 }
Exemplo n.º 5
0
 public function execute()
 {
     $this->get_update_token();
     AppContext::get_cache_service()->clear_cache();
     Environment::try_to_increase_max_execution_time();
     // Mise en maintenance du site s'il ne l'est pas déjà
     $this->put_site_under_maintenance();
     // Suppression des fichiers qui ne sont plus présent dans la nouvelle version pour éviter les conflits
     $this->delete_old_files();
     // Suppression du captcha PHPBoostCaptcha
     $this->delete_phpboostcaptcha();
     // Désinstallation des anciens menus (dans /menus)
     $this->delete_old_menus();
     // Mise à jour des tables du noyau
     $this->update_kernel_tables();
     // Mise à jour de la version du noyau
     $this->update_kernel_version();
     // Mise à jour des modules
     $this->update_modules();
     // Mise à jour des thèmes
     $this->update_themes();
     // Mise à jour des langues
     $this->update_langs();
     // installation du module UrlUpdater pour la réécriture des Url des modules mis à jour
     ModulesManager::install_module('UrlUpdater');
     // Fin de la mise à jour : régénération du cache
     $this->delete_update_token();
     $this->generate_cache();
     HtaccessFileCache::regenerate();
 }
Exemplo n.º 6
0
        $tpl->put_all(array('C_FILES' => true, 'L_INFO' => $LANG['db_restore_file']));
        foreach ($filelist as $file) {
            $tpl->assign_block_vars('file', array('FILE_NAME' => $file['file_name'], 'WEIGHT' => $file['weight'], 'FILE_DATE' => $file['file_date']));
        }
    }
} else {
    //Sauvegarde
    if ($action == 'backup') {
        $backup_type = $request->has_postparameter('backup_type') && $request->get_postvalue('backup_type') != 'all' ? $request->get_postvalue('backup_type') == 'data' ? DBMSUtils::DUMP_DATA : DBMSUtils::DUMP_STRUCTURE : DBMSUtils::DUMP_STRUCTURE_AND_DATA;
        $selected_tables = $request->get_postarray('table_list');
        if (empty($selected_tables)) {
            AppContext::get_response()->redirect(HOST . DIR . url('/database/admin_database.php?error=empty_list'));
        }
        $file_name = 'backup_' . PersistenceContext::get_dbms_utils()->get_database_name() . '_' . str_replace('/', '-', Date::to_format(Date::DATE_NOW, 'y-m-d-H-i-s')) . '.sql';
        $file_path = PATH_TO_ROOT . '/cache/backup/' . $file_name;
        Environment::try_to_increase_max_execution_time();
        PersistenceContext::get_dbms_utils()->dump_tables(new BufferedFileWriter(new File($file_path)), $selected_tables, $backup_type);
        AppContext::get_response()->redirect(HOST . DIR . url('/database/admin_database.php?error=backup_success&file=' . $file_name));
    }
    if ($tables_backup) {
        $tables = PersistenceContext::get_dbms_utils()->list_tables(true);
        $tpl->put_all(array('C_DATABASE_BACKUP' => true, 'NBR_TABLES' => count($tables), 'TARGET' => url('admin_database.php?token=' . AppContext::get_session()->get_token()), 'SELECT_ALL' => $LANG['select_all'], 'SELECT_NONE' => $LANG['select_none'], 'L_BACKUP_DATABASE' => $LANG['db_backup_database'], 'L_EXPLAIN_BACKUP' => $LANG['db_backup_explain'], 'L_SELECTION' => $LANG['db_selected_tables'], 'L_BACKUP_ALL' => $LANG['db_backup_all'], 'L_BACKUP_STRUCT' => $LANG['db_backup_struct'], 'L_BACKUP_DATA' => $LANG['db_backup_data'], 'L_BACKUP' => $LANG['db_backup']));
        $selected_tables = array();
        $i = 0;
        foreach ($tables as $table) {
            if ($table == $get_table || $request->has_postparameter('table_' . $table) && $request->get_postvalue('table_' . $table) == 'on') {
                $selected_tables[] = $table;
            }
            $tpl->assign_block_vars('table_list', array('NAME' => $table, 'SELECTED' => in_array($table, $selected_tables) ? 'selected="selected"' : '', 'I' => $i));
            $i++;
        }