/** * Makes DB backup * db_filename - string name of result pack. Will be stored in Registry::get('config.dir.database') . $db_filename; * db_tables - array List of tables to be backuped * db_schema - bool Backup tables schema * db_data - bool Backup data from tables * @param array $params * * @return string Path to backuped DB sql/tgz file */ public static function backupDatabase($params = array()) { $default_params = array('db_tables' => array(), 'db_schema' => false, 'db_data' => false, 'db_compress' => false, 'move_progress' => true); $params = array_merge($default_params, $params); $db_filename = empty($params['db_filename']) ? 'dump_' . date('mdY') . '.sql' : fn_basename($params['db_filename']); if (!fn_mkdir(Registry::get('config.dir.backups'))) { fn_set_notification('E', __('error'), __('text_cannot_create_directory', array('[directory]' => fn_get_rel_dir(Registry::get('config.dir.backups'))))); return false; } $dump_file = Registry::get('config.dir.backups') . $db_filename; if (is_file($dump_file)) { if (!is_writable($dump_file)) { fn_set_notification('E', __('error'), __('dump_file_not_writable')); return false; } } $result = db_export_to_file($dump_file, $params['db_tables'], $params['db_schema'], $params['db_data'], true, true, $params['move_progress']); if (!empty($params['db_compress'])) { fn_set_progress('echo', __('compress_dump'), false); $ext = $params['db_compress'] == 'tgz' ? '.tgz' : '.zip'; $result = fn_compress_files($db_filename . $ext, $db_filename, dirname($dump_file)); unlink($dump_file); $dump_file .= $ext; } if ($result) { return $dump_file; } return false; }
public static function backupSettings($upgrade_dirs) { // Backup addon's settings to the session $_SESSION['twigmo_backup_settings'] = TwigmoSettings::get(); // Backup twigmo blocks $old_company_id = Registry::get('runtime.company_id'); $old_layout_id = Registry::get('runtime.layout.layout_id'); foreach ($upgrade_dirs['backup_company_settings'] as $company_id => $dir) { Registry::set('runtime.company_id', $company_id); $default_layout_id = fn_twg_get_default_layout_id(); Registry::set('runtime.layout.layout_id', $default_layout_id); $location = Location::instance($default_layout_id)->get('twigmo.post'); if ($location) { $exim = Exim::instance($company_id, $default_layout_id); if (version_compare(PRODUCT_VERSION, '4.1.1', '>=')) { $content = $exim->export($default_layout_id, array($location['location_id'])); } else { $content = $exim->export(array($location['location_id'])); } if ($content) { fn_twg_write_to_file($dir . '/blocks.xml', $content, false); } } } Registry::set('runtime.company_id', $old_company_id); Registry::set('runtime.layout.layout_id', $old_layout_id); // Backup twigmo langvars $languages = Lang::getLanguages(); foreach ($languages as $language) { // Prepare langvars for backup $langvars = Lang::getAllLangVars($language['lang_code']); $langvars_formated = array(); foreach ($langvars as $name => $value) { $langvars_formated[] = array('name' => $name, 'value' => $value); } fn_twg_write_to_file($upgrade_dirs['backup_settings'] . '/lang_' . $language['lang_code'] . '.bak', $langvars_formated); } if (fn_allowed_for('ULTIMATE')) { db_export_to_file($upgrade_dirs['backup_settings'] . 'lang_ult.sql', array(db_quote('?:ult_language_values')), 'Y', 'Y', false, false, false); } return true; }
public static function cloneImportedDB($store_data) { fn_set_progress('title', __('store_import.cloning_database')); fn_define('DB_MAX_ROW_SIZE', 10000); fn_define('DB_ROWS_PER_PASS', 40); General::connectToImportedDB($store_data); $tables = General::getTables($store_data['db_name'], $store_data['table_prefix']); $excluded_tables = array($store_data['table_prefix'] . 'logs', $store_data['table_prefix'] . 'sessions', $store_data['table_prefix'] . 'stored_sessions', $store_data['table_prefix'] . 'user_session_products', $store_data['table_prefix'] . 'stat_browsers', $store_data['table_prefix'] . 'stat_ips', $store_data['table_prefix'] . 'stat_languages', $store_data['table_prefix'] . 'stat_product_search', $store_data['table_prefix'] . 'stat_requests', $store_data['table_prefix'] . 'stat_search_engines', $store_data['table_prefix'] . 'stat_search_phrases', $store_data['table_prefix'] . 'stat_sessions', $store_data['table_prefix'] . 'stat_banners_log'); $tables = array_diff($tables, $excluded_tables); $change_table_prefixes = array('from' => $store_data['table_prefix'], 'to' => self::formatPrefix()); db_export_to_file(Registry::get('config.dir.database') . 'export.sql', $tables, true, true, false, true, true, $change_table_prefixes); General::connectToOriginalDB(); self::_createExcludedTables($change_table_prefixes['to']); return db_import_sql_file(Registry::get('config.dir.database') . 'export.sql', 16384, true, true, false, false, false, true); }
$dbdump_filename = empty($_REQUEST['dbdump_filename']) ? 'dump_' . date('mdY') . '.sql' : fn_basename($_REQUEST['dbdump_filename']); if (!fn_mkdir(Registry::get('config.dir.database'))) { fn_set_notification('E', __('error'), __('text_cannot_create_directory', array('[directory]' => fn_get_rel_dir(Registry::get('config.dir.database'))))); exit; } $dump_file = Registry::get('config.dir.database') . $dbdump_filename; if (is_file($dump_file)) { if (!is_writable($dump_file)) { fn_set_notification('E', __('error'), __('dump_file_not_writable')); exit; } } $dbdump_tables = empty($_REQUEST['dbdump_tables']) ? array() : $_REQUEST['dbdump_tables']; $dbdump_schema = !empty($_REQUEST['dbdump_schema']) && $_REQUEST['dbdump_schema'] == 'Y'; $dbdump_data = !empty($_REQUEST['dbdump_data']) && $_REQUEST['dbdump_data'] == 'Y'; db_export_to_file($dump_file, $dbdump_tables, $dbdump_schema, $dbdump_data); $result = false; if ($_REQUEST['dbdump_compress'] == 'Y') { fn_set_progress('echo', '<br />' . __('compressing_backup') . '...', false); $result = fn_compress_files($dbdump_filename . '.tgz', $dbdump_filename, dirname($dump_file)); unlink($dump_file); } if ($result) { fn_set_notification('N', __('notice'), __('done')); } } // Restore if ($mode == 'restore') { if (!empty($_REQUEST['backup_files'])) { fn_restore_dump($_REQUEST['backup_files']); }