переименовать phpbb_db_backup.sql

Идеи для расширения функциональности phpBB 2.0.x
Аватара пользователя
WingLion
phpBB 1.4.4
Сообщения: 179
Стаж: 20 лет 1 месяц
Откуда: St.Petersburg

переименовать phpbb_db_backup.sql

Сообщение WingLion »

Надо сделать чтобы сохраняемая база имела различные названия в разные дни, чтобы не переименовывать каждый раз ручками...

Например, в название: $name='phpbb_db_'.date("y M d").'.sql'

___________
С уважением, WingLion.
Пошел ковырять admin_db_utilities.php

Добавлено спустя 19 минут 29 секунд:

Хе-хе...
А оказывается все проще некуда...

Код: Выделить всё

#-----[ OPEN admin/admin_db_utilities.php ]-------

#-----[ FIND ]-------
			if($do_gzip_compress)
			{
				@ob_start();
				@ob_implicit_flush(0);
				header("Content-Type: application/x-gzip; name=\"phpbb_db_backup.sql.gz\"");
				header("Content-disposition: attachment; filename=phpbb_db_backup.sql.gz");
			}
			else
			{
				header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql\"");
				header("Content-disposition: attachment; filename=phpbb_db_backup.sql");
			}

#-----[ REPLACE ]-------

			$my_base_name = 'phpbb_db_'.date("y M d").'.sql';

			if($do_gzip_compress)
			{
				@ob_start();
				@ob_implicit_flush(0);
				header(sprintf('Content-Type: application/x-gzip; name="%s.gz"',$my_base_name));
				header(sprintf('Content-disposition: attachment; filename=%s.gz',$my_base_name));
			}
			else
			{
				header(sprintf('Content-Type: text/x-delimtext; name="%s"',$my_base_name));
				header(sprintf('Content-disposition: attachment; filename=%s',$my_base_name));
			}

#-----[ SAVE/CLOSE ALL ]-------

Прошу поправить, если я где-то чего-то напортачил!

Добавлено спустя 5 минут 15 секунд:

Да, в строчке

Код: Выделить всё

$my_base_name = 'phpbb_db_'.date("y M d").'.sql';

Можно вписать что-то другое вместо 'phpbb_db_', например,
'my_forum1_db_', 'my_best_forum_db_', и тогда базы разных форумов не будут путаться!

Добавлено спустя 15 минут 7 секунд:

Проверка установила, что в функции date("y M d") лучше поставить date("y_m_d") -- (не люблю пробелы в именах файлов!)

P.S. А мод склеивания сообщений забывает ставить подпись (может, от того, что в первом сообщении ее не было, а была только вписанная от руки...)

___[ Место для Печати ]____
Подпись: WingLion.
Мой форум http://winglion.ru/board/
С уважением, WingLion
Логика - это такая вещь, которая либо есть, либо ее нет. Третьего не дано!
Посыл в поиск = посыл на три советских буквы. Молитесь - скоро ночь!
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

имхо, лучше числовое представление месяца
форматы типа (не обращаем внимания на пробелы)

Код: Выделить всё

date('y m d')
date('Y m d')
преимущество в сортировке по имени файла
phpbb_db_backup_05_05_31
phpbb_db_backup_05_06_01

phpbb_db_backup_05_June_01
phpbb_db_backup_05_May_31
Добавлено спустя 3 часа 29 минут 33 секунды:

классная вещь. я как то не додумался до этого сразу. а после вашего предложения решил его доработать таким способом - в зависимости от настройки gzip-сжатия выставить по умолчанию соответствующий флажок

Код: Выделить всё

#-----[ OPEN admin/admin_db_utilities.php ]-------

#-----[ FIND ]----------------
                                        "L_YES" => $lang['Yes'],

#-----[ AFTER ADD ]-----------
                                        // +db_backup_name_timed.MOD
                                        'CHECK_NO' => ( !$board_config['gzip_compress'] ) ? 'checked="checked"' : '',
                                        'CHECK_YES' => ( $board_config['gzip_compress'] ) ? 'checked="checked"' : '',
                                        // -db_backup_name_timed.MOD

#-----[ OPEN templates/subSilver/admin/db_utils_backup_body.tpl ]

#-----[ FIND ]----------------
                <td class="row1">{L_NO} <input type="radio" name="gzipcompress" value="0" checked /> &nbsp;{L_YES} <input type="radio" name="gzipcompress" value="1" /></td>

#-----[ FIND, INLINE ]--------
checked

#-----[ REPLACE, INLINE ]-----
{CHECK_NO}

#-----[ FIND, INLINE ]--------
value="1"

#-----[ AFTER ADD, INLINE ]---
{CHECK_YES}
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

немного подправил пост - прошу прощения, были проблемы с копи-пастом
Аватара пользователя
WingLion
phpBB 1.4.4
Сообщения: 179
Стаж: 20 лет 1 месяц
Откуда: St.Petersburg

Сообщение WingLion »

И еще одно добавление к данной теме.
Конфигурирование имени сохраняемого файла из админ-панели:

Код: Выделить всё


files to edit:	templates/subSilver/admin/board_config_body.tpl
		admin/admin_board.php
		language/lang_russian/lang_main.php

#-----[ IN mySQL ]-------

INSERT INTO phpbb_config (config_name, config_value) VALUES ('dbm_pref', 'Forum_db_');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('dbm_date', 'y_m_d');

#-----[ OPEN templates/subSilver/admin/board_config_body.tpl ]-------
#-----[ FIND ]-------

	<tr>
		<td class="row1">{L_VISUAL_CONFIRM}<br /><span class="gensmall">{L_VISUAL_CONFIRM_EXPLAIN}</span></td>
		<td class="row2"><input type="radio" name="enable_confirm" value="1" {CONFIRM_ENABLE} />{L_YES}&nbsp; &nbsp;<input type="radio" name="enable_confirm" value="0" {CONFIRM_DISABLE} />{L_NO}</td>
	</tr>

#-----[ AFTER, ADD ]-------

	<tr>
		<td class="row1">{L_DBM_PREFIX}</td>
		<td class="row2"><input class="post" type="text" size="20" maxlength=40 			name="dbm_pref" value="{DBM_PREF}" /></td>
	</tr>
	<tr>
		<td class="row1">{L_DBM_DATE_FN}</td>
		<td class="row2"><input class="post" type="text" size="20" maxlength=40 			name="dbm_date" value="{DBM_DATE}" /></td>
	</tr>

#-----[ OPEN admin/admin_board.php ]-------
#-----[ FIND ]-------

	"ACTIVATION_ADMIN" => USER_ACTIVATION_ADMIN, 
	"ACTIVATION_ADMIN_CHECKED" => $activation_admin, 

#-----[ AFTER, ADD ]-------

	"L_DBM_PREFIX" => $lang['dbm_prefix'],
	"L_DBM_DATE_FN" => $lang['dbm_date'],

	"DBM_PREF" => $board_config['dbm_pref'],
	"DBM_DATE" => $board_config['dbm_date'],

#-----[ OPEN language/lang_russian/lang_main.php ]-------

#-----[ FIND ]-------
//
// That's all Folks!
// -------------------------------------------------

#-----[ BEFORE, ADD ]-------

$lang['dbm_prefix'] = 'Префикс для имени файла базы данных';
$lang['dbm_date'] = 'Формат даты в имени файла базы данных';

	
#-----[ SAVE/CLOSE ALL FILES ]-------
И строку с $my_base_name в файле admin/admin_db_utilities.php
заменить на:

Код: Выделить всё

$my_base_name = $board_config['dbm_pref'].date($board_config['dbm_date']).'.sql';
И тут возникает вопрос к Местным Гуру, корректно ли использование здесь массива $board_config[] ?

Так же прошу проверить, не открыл ли я своими неуклюжими действиями какую-нибудь дыру к своей базе?

Первая проверка на localhost-е прошла нормально.
Сейчас пойду заливать изменные файлы на свой форум...

Добавлено спустя 25 минут 3 секунды:

На форуме тоже все изменения прошли без проблем.
С уважением, WingLion
Логика - это такая вещь, которая либо есть, либо ее нет. Третьего не дано!
Посыл в поиск = посыл на три советских буквы. Молитесь - скоро ночь!
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

я понял вашу мысль. но!
не каждый админ форума - программер
не так часто и надо настраивать имя сохраняемого файла дампа

я считаю, что можно сохранить настройки имени дампа БД в самой БД (как у вас). но, опять же это только мое мнение, это уже некоторое усложнение с точки зрения пользователя. с точки зрения программиста (параноидального программиста) надо делать проверки всех входных данных на корректность ВСЕГДА (тем более в админке).

посмотрите в сторону phpMyAdmin - там предлагается стандартное имя таблиц и БД, их можно изменить, но данные сохраняются в куках (кажется)

Добавлено спустя 2 минуты 27 секунд:

о! я вот только не понял (это и аналогичное для даты)

Код: Выделить всё

<input class="post" type="text" size="20" maxlength=40 name="dbm_pref" value="{DBM_PREF}" />
показывается админу, изменяется админом, но не используется
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

WingLion писал(а):И еще одно добавление к данной теме.
Конфигурирование имени сохраняемого файла из админ-панели:
Вот это уже вроде перебор. Кроме того, как правильно было замечено - всегда проверяйте все входные данные.
WingLion писал(а):Хе-хе...
А оказывается все проще некуда...
Отличная идея. Есть желание оформить в виде мода?
WingLion писал(а):P.S. А мод склеивания сообщений забывает ставить подпись (может, от того, что в первом сообщении ее не было, а была только вписанная от руки...)
Он ориентируется на подпись в первом сообщении.
quazi писал(а):после вашего предложения решил его доработать таким способом - в зависимости от настройки gzip-сжатия выставить по умолчанию соответствующий флажок
Тоже интересно, оформите?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

Xpert, мы переписались с WingLion на предмет совместной работы. подожду его ответа в форуме или ЛС. у него есть желание добавить обсуждаемую функциональность, однако я против нее. собственно уже все оформлено, если WingLion не против, то можно и выслать. так же мылом?
Аватара пользователя
WingLion
phpBB 1.4.4
Сообщения: 179
Стаж: 20 лет 1 месяц
Откуда: St.Petersburg

Сообщение WingLion »

Xpert писал(а):Отличная идея. Есть желание оформить в виде мода?
Есть, конечно! :)

quazi, я эту дополнительную функциональность добавил, потому что лично мне она нужна! Просто потому, что у меня на администрировании два форума, и путаница в базах с разных форумов мне не нужна. Именно из-за этой путаницы (в том числе и в датах), я и взялся за это дело.

Думаю, мод можно оформить в двух модификациях - с возможностью изменения формата в админке и без нее... Можно, наверно, это даже "в одном флаконе" сделать.

P.S. Только с переводом на английский у меня туго...

Добавлено спустя 14 минут 32 секунды:
quazi писал(а):пользователя. с точки зрения программиста (параноидального программиста) надо делать проверки всех входных данных на корректность ВСЕГДА (тем более в админке).
Надо делать проверки, конечно. Хотя, тут надо заметить, что не всякий админ будет пытаться хакнуть собственный форум :D

Если же злоумышленник добрался до админки, то тут, мне кажется, уже поздно защищаться...
С уважением, WingLion
Логика - это такая вещь, которая либо есть, либо ее нет. Третьего не дано!
Посыл в поиск = посыл на три советских буквы. Молитесь - скоро ночь!
Аватара пользователя
WingLion
phpBB 1.4.4
Сообщения: 179
Стаж: 20 лет 1 месяц
Откуда: St.Petersburg

Сообщение WingLion »

WingLion писал(а):И тут возникает вопрос к Местным Гуру, корректно ли использование здесь массива $board_config[] ?
Вот на этом месте возникла "проблемка", массив не всегда определен и получается сохранение файла с пустым именем...

Обходится пока путем захода в админке на закладку "конфигурация форума" перед сохранением.
С уважением, WingLion
Логика - это такая вещь, которая либо есть, либо ее нет. Третьего не дано!
Посыл в поиск = посыл на три советских буквы. Молитесь - скоро ночь!
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

продолжаем развивать тему бэкапа БД
оказыается сохранить уникальность имени БД проще простого - взять данные из $board_config['server_name'] (хотя можно было и $_SERVER['HTTP_HOST'])

имя базы будет в следующем формате

Код: Выделить всё

servername_YYYYMMDD_HHii.sql
servername_YYYYMMDD_HHii.sql.gz
servername - имя сервера (берется из БД)
YYYY, MM, DD - год, месяц и день
HH, ii - часы и минуты

Код: Выделить всё

##############################################################
## MOD Title: DB Backup Time Named
## MOD Author: WingLion < WingLion@mail.ru > ( WingLion )
##             quazi < nomail@nospam.com > 
## MOD Description: This modification sets the gzip compression radiobutton respectively of the board's gzip compression and allows to set the backup name by server name and backuping time
## MOD Version: 1.0.1
##
## Installation Level: Easy
## Installation Time: 5 Minutes
## Files To Edit: (2) admin/admin_db_utilities.php, templates/subSilver/admin/db_utils_backup_body.tpl
## Included Files: n/a
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum.
##############################################################
## Author Notes: Previous idea of the mod had been generated by WingLion
##               at the Russian phpBB community http://phpbbguru.net/community/viewtopic.php?p=26942
##
##############################################################
## MOD History:
##
##     2005-07-16 - Version 1.0.1
##         - The final release
##         - Save phpBB database by the server_name 
##           (phpbb_config.config_value WHERE phpbb_config.config_name = 'server_name')
##           Now the backup name is servername_YYYYMMDD_HHii.sql or servername_YYYYMMDD_HHii.sql.gz
##     2005-05-23 - Version 1.0.0
##         - The final release
##           db backup filename marked by the downloading time (ex. db_backup_200505210836.sql for 2005 May 21 08:36)
##     2005-05-21 08:36:09 - No versions
##         - The second publication and extension of implementation
##     2005-05-21 04:04:30 - No versions
##         - The first publication by the WingLion
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ OPEN ]---------------------------------------------------------
#
admin/admin_db_utilities.php

#
#-----[ FIND ]----------------------------------------------------------
#
			if($do_gzip_compress)
			{
				@ob_start();
				@ob_implicit_flush(0);
				header("Content-Type: application/x-gzip; name=\"phpbb_db_backup.sql.gz\"");
				header("Content-disposition: attachment; filename=phpbb_db_backup.sql.gz");
			}
			else
			{
				header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql\"");
				header("Content-disposition: attachment; filename=phpbb_db_backup.sql");
			}

#
#-----[ REPLACE WITH ]-------------------------------------------------------
#
			// +DB_Backup_Time_Named.MOD
			$db_backup_name = $board_config['server_name'] . date('_Ymd_Hi') . '.sql';
			//$db_backup_name = 'phpbb_db_backup_' . date('YmdHi') . '.sql';
			if($do_gzip_compress)
			{
				@ob_start();
				@ob_implicit_flush(0);
				header("Content-Type: application/x-gzip; name=\"{$db_backup_name}.gz\"");
				header("Content-disposition: attachment; filename=\"{$db_backup_name}.gz\"");
			}
			else
			{
				header("Content-Type: text/x-delimtext; name=\"{$db_backup_name}\"");
				header("Content-disposition: attachment; filename=\"{$db_backup_name}\"");
			}
			// -DB_Backup_Time_Named.MOD

#
#-----[ FIND ]----------------------------------------------------------
#
                                        "L_NO" => $lang['No'],
                                        "L_YES" => $lang['Yes'],
                                                                                          
#
#-----[ AFTER, ADD ]-----------------------------------------------------
#
                                        // +DB_Backup_Time_Named.MOD
                                        'CHECK_NO' => ( !$board_config['gzip_compress'] ) ? 'checked="checked"' : '',
                                        'CHECK_YES' => ( $board_config['gzip_compress'] ) ? 'checked="checked"' : '',
                                        // -DB_Backup_Time_Named.MOD

#
#-----[ OPEN ]----------------------------------------------------------
#
templates/subSilver/admin/db_utils_backup_body.tpl

#
#-----[ FIND ]----------------------------------------------------------
#
                <td class="row1">{L_NO} <input type="radio" name="gzipcompress" value="0" checked />  {L_YES} <input type="radio" name="gzipcompress" value="1" /></td>
            
#
#-----[ IN-LINE FIND ]--------------------------------------------------
#
checked

#
#-----[ REPLACE WITH ]-----------------------------------------------
#
{CHECK_NO}

#
#-----[ IN-LINE FIND ]--------------------------------------------------
#
value="1"

#
#-----[ IN-LINE AFTER, ADD ]---------------------------------------------
#
{CHECK_YES}

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Последний раз редактировалось quazi 26.07.2005 11:58, всего редактировалось 2 раза.
Polar
phpBB 1.4.3
Сообщения: 92
Стаж: 20 лет
Благодарил (а): 1 раз

Сообщение Polar »

:( не входит в админку
пишет ошибку в

Код: Выделить всё

           header("Content-Type: application/x-gzip; name="{$db_backup_name}.gz""); 
            header("Content-disposition: attachment; filename={$db_backup_name}.gz"); 
         } 
         else 
         { 
            header("Content-Type: text/x-delimtext; name="{$db_backup_name}""); 
            header("Content-disposition: attachment; filename={$db_backup_name}"); 
Добавлено спустя 25 минут 38 секунд:

все дело в кавычках
Вот так работает

Код: Выделить всё

         // +DB_Backup_Time_Named.MOD
         $db_backup_name = $board_config['server_name'] . date('_Ymd_Hi') . '.sql';
         //$db_backup_name = 'phpbb_db_backup_' . date('YmdHi') . '.sql';
         if($do_gzip_compress)
         {
            @ob_start();
            @ob_implicit_flush(0);
            header('Content-Type: application/x-gzip; name="'.$db_backup_name.'.gz"');
            header('Content-disposition: attachment; filename="'.$db_backup_name.'.gz"');
         }
         else
         {
            header('Content-Type: text/x-delimtext; name="'.$db_backup_name.'"');
            header('Content-disposition: attachment; filename="'.$db_backup_name.'"');

         }
         // -DB_Backup_Time_Named.MOD 
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

Polar, спасибо за подсказку - свой последний пост поправил

Вернуться в «Запросы модов для phpBB 2.0.x»