diff --git a/.gitignore b/.gitignore index 743fe44..7e24176 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ php_errors.log /_developer /jQuery /ckeditor +/backup/* +!/backup/.gitkeep + diff --git a/_class/class_backup.php b/_class/class_backup.php new file mode 100644 index 0000000..2a86cab --- /dev/null +++ b/_class/class_backup.php @@ -0,0 +1,49 @@ +bu_id = $_item; + } + + public function set_bu_name($_item) { + $this->bu_name = $_item; + } + + public function set_bu_date($_item) { + $this->bu_date = $_item; + } + + public function get_bu_id() { + return $this->bu_id; + } + + public function get_bu_name() { + return $this->bu_name; + } + + public function get_bu_date() { + return $this->bu_date; + } + + public function set_backup_data_by_id($_id) { + //SETTING ID ALAPJÁN KÉRI LE; + //HA KELL, LEHET KÜLÖN FUNCTION-T ÍRNI HOGY ID ALAPJÁN KÉRJE + global $sql; + $set_data_assoc_array = $sql->assoc_array("select * from backup where bu_id = " . $_id); + $set_data_array = $set_data_assoc_array[0]; + foreach ($set_data_array as $field => $value) { + $function_name = "set_" . $field; + $this->$function_name($value); //alapadatok beállítása + } + + } + +} + + +?> \ No newline at end of file diff --git a/_class/class_page.php b/_class/class_page.php index 73dddde..9c6859f 100755 --- a/_class/class_page.php +++ b/_class/class_page.php @@ -164,6 +164,10 @@ class page { # STATISZTIKÁK include('include_stats.php'); break; + case 'download_backup': + # BIZTONSÁGI MENTÉS LETÖLTÉS + include('include_download_backup.php'); + break; case 'delete_training_type': # EDZÉS TÍPUS TÖRLÉS include('include_delete_training_type.php'); diff --git a/_class/class_sql.php b/_class/class_sql.php index 784056c..a92db84 100755 --- a/_class/class_sql.php +++ b/_class/class_sql.php @@ -85,8 +85,77 @@ class sql extends mysqli { return self::query($_query); } + function export_database($tables=false, $backup_name=false ) + { + $name = "badminton_coach"; + $this->query("SET NAMES 'utf8'"); + + $queryTables = $this->query('SHOW TABLES'); + while($row = $queryTables->fetch_row()) + { + $target_tables[] = $row[0]; + } + if($tables !== false) + { + $target_tables = array_intersect( $target_tables, $tables); + } + foreach($target_tables as $table) + { + $result = $this->query('SELECT * FROM '.$table); + $fields_amount = $result->field_count; + $rows_num=$this->affected_rows; + $res = $this->query('SHOW CREATE TABLE '.$table); + $TableMLine = $res->fetch_row(); + $content = (!isset($content) ? '' : $content) . "\n\n".$TableMLine[1].";\n\n"; + + for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) + { + while($row = $result->fetch_row()) + { //when started (and every after 100 command cycle): + if ($st_counter%100 == 0 || $st_counter == 0 ) + { + $content .= "\nINSERT INTO ".$table." VALUES"; + } + $content .= "\n("; + for($j=0; $j<$fields_amount; $j++) + { + $row[$j] = str_replace("\n","\\n", addslashes($row[$j]) ); + if (isset($row[$j])) + { + $content .= '"'.$row[$j].'"' ; + } + else + { + $content .= '""'; + } + if ($j<($fields_amount-1)) + { + $content.= ','; + } + } + $content .=")"; + //every after 100 command cycle [or at last line] ....p.s. but should be inserted 1 cycle eariler + if ( (($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num) + { + $content .= ";"; + } + else + { + $content .= ","; + } + $st_counter=$st_counter+1; + } + } $content .="\n\n\n"; + } + //$backup_name = $backup_name ? $backup_name : $name."___(".date('H-i-s')."_".date('d-m-Y').")__rand".rand(1,11111111).".sql"; + $backup_name = $backup_name ? $backup_name : $name.".sql"; + //header('Content-Type: application/octet-stream'); + //header("Content-Transfer-Encoding: Binary"); + //header("Content-disposition: attachment; filename=\"".$backup_name."\""); + return $content; + + } } - ?> \ No newline at end of file diff --git a/_image/backup.png b/_image/backup.png new file mode 100644 index 0000000..9b304e3 Binary files /dev/null and b/_image/backup.png differ diff --git a/_include/include_create.php b/_include/include_create.php index 500eed6..a5aeb46 100755 --- a/_include/include_create.php +++ b/_include/include_create.php @@ -136,6 +136,26 @@ switch ($this->get_id()) { case 'money_expense_category': # ÚJ KIADÁS KATEGÓRIA $smarty->display('money_expense_category_create.tpl'); + break; + case 'backup': + # BACKUP + //létrehozzá, és hozzáfűzi az ID-t a dátumhoz + //visszatér a backup oldalra + //backup classből hívogat, statikusan + + $new_bu_id = $sql->insert_into('backup', array('bu_date' => date('Y-m-d'))); + $sql->update_table('backup', array('bu_name' => date('Ymd') . '_' . $new_bu_id), array('bu_id' => $new_bu_id)); + //log + + $dump_content = $sql->export_database(); + $file_name = date('Ymd') . '_' . $new_bu_id . '.sql'; + $path = 'backup/'; + touch($path.$file_name); + file_put_contents($path.$file_name, $dump_content); + + header("Location: /admin/settings/3"); + + break; default: # code... diff --git a/_include/include_download_backup.php b/_include/include_download_backup.php new file mode 100644 index 0000000..694696f --- /dev/null +++ b/_include/include_download_backup.php @@ -0,0 +1,35 @@ +is_id()) { + + $backup = new backup(); + $backup->set_backup_data_by_id($this->get_id()); + + $filename = "\backup\/".$backup->get_bu_name() . "\.sql"; + + header('Content-Type: application/octet-stream'); + header("Content-Transfer-Encoding: Binary"); + //header("Content-disposition: attachment; filename='backup/".$backup->get_bu_name().".sql'"); + //header("Content-disposition: attachment; filename=\"backup/".$backup->get_bu_name().".sql\""); + header("Content-disposition: attachment; filename=\"".$filename."\""); + + //var_dump(is_file("backup/".$backup->get_bu_name() . ".sql")); + + //header('Location: /admin/settings/3'); +} + +else { + + # NEM LEHET + + +} + + + + + +?> \ No newline at end of file diff --git a/_include/include_settings.php b/_include/include_settings.php index 0926082..e401e21 100644 --- a/_include/include_settings.php +++ b/_include/include_settings.php @@ -17,6 +17,22 @@ if ($this->is_id()) { $new_setting = new setting_value(); $new_setting->set_setting_value_data_by_id($this->get_id()); + if ($new_setting->get_setv_setting()->get_set_setting_type_st_id() == 1) { + //textarea + } + + elseif ($new_setting->get_setv_setting()->get_set_setting_type_st_id() == 2) { + //biztonsági mentés + $backup_assoc_array = $sql->assoc_array("SELECT * FROM backup ORDER BY bu_date DESC, bu_id DESC limit 14;"); + $backups = array(); + foreach ($backup_assoc_array as $value) { + $new_backup = new backup(); + $new_backup->set_backup_data_by_id($value['bu_id']); + $backups[] = $new_backup; + } + $smarty->assign('backups', $backups); + } + $smarty->assign("setting", $new_setting); diff --git a/template/templates/setting_data_edit.tpl b/template/templates/setting_data_edit.tpl index e9a6a0e..673466f 100644 --- a/template/templates/setting_data_edit.tpl +++ b/template/templates/setting_data_edit.tpl @@ -20,6 +20,26 @@ + + {elseif $setting->get_setv_setting()->get_set_setting_type_st_id() == 2} + +
+
+ {$backup->get_bu_date()} #{$backup->get_bu_id()}
+