Уважаемые пользователи, по техническим причинам загрузка файлов временно недоступна. Приносим извинения за временные неудобства.
Время жизни ЛС?
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Время жизни ЛС?
Всем привет. Никто не сталкивался вот с такой задачей, необходимо удалять личные сообщения из ящика пользователя если они старше определенного срока. Может быть есть мысли как это сделать самому, подскажите куда копать?
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
Слушайте, а если отойти от php может быть это как-то можно организовать на уровне СУБД? Хоть какие-то мысли есть по этому поводу?
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 4 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Время жизни ЛС?
1. Зачем?
2. Срок должен определять сам пользователь или администратор?
2. Срок должен определять сам пользователь или администратор?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
1. Если коротко - начальство требует именно так. Если подробнее описать, то система обмена ЛС будет использоваться для обмена файлами. Т.е. пользователь рассылает/получает файл/ы пользователю/группе пользователей смотрит состояние (получено или нет), смотрит историю своих отправлений/получений. И сообщения с вложениями должны удаляться не по достижении какого-то количества, а по достижению определенного срока давности, 1 месяц например.
2. Срок задает администратор - можно даже без какого-либо интерфейса...
Добавлено спустя 2 часа 29 минут 10 секунд:
И еще пожалуйста подскажите где происходит обработка следующего:
когда мы ставим "Центр пользователя Личные сообщения Правила, папки и настройки Если папка заполнена" - галочку "удалить самые старые сообщения" ?
т.е. в каком файле написан код, затирающий старые сообщения? Я может по аналогии попробую сделать...
Добавлено спустя 1 час 8 минут 24 секунды:
Полчаса ковыряния в БД нарыл вот чего:
1. таблица phpbb_privmsgs - это ЛС сообщения
2. таблица phpbb_attachments - это сами вложения
таблицы свзяаны по полю phpbb_privmsgs.msg_id = phpbb_attachments.post_msg_id
уже легче
2. Срок задает администратор - можно даже без какого-либо интерфейса...
Добавлено спустя 2 часа 29 минут 10 секунд:
И еще пожалуйста подскажите где происходит обработка следующего:
когда мы ставим "Центр пользователя Личные сообщения Правила, папки и настройки Если папка заполнена" - галочку "удалить самые старые сообщения" ?
т.е. в каком файле написан код, затирающий старые сообщения? Я может по аналогии попробую сделать...
Добавлено спустя 1 час 8 минут 24 секунды:
Полчаса ковыряния в БД нарыл вот чего:
1. таблица phpbb_privmsgs - это ЛС сообщения
2. таблица phpbb_attachments - это сами вложения
таблицы свзяаны по полю phpbb_privmsgs.msg_id = phpbb_attachments.post_msg_id
уже легче
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 4 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Время жизни ЛС?
Ссылка на wiki вверху.moto писал(а):Полчаса ковыряния в БД нарыл вот чего:
index.php?title=БД phpBB 3.0.x
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
Спасибо за ссылку, теперь еще бы кто кусог кода phpного написал
Я думаю что можно сделать батник, в котором выполнять php файл, который будет удаляьт все сообщения старше месяца (к примеру), пока такая мысль в голове...
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
О, спасиб, про cron я сейчас посмотрю...
В общем по MySQL вот так получилось:
как этот код облечь в php?
В общем по MySQL вот так получилось:
Код: Выделить всё
delete from phpbb_attachments where post_msg_id in
(
SELECT
msg_id
FROM `phpbb_privmsgs`
where
TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >= 90
);
delete from phpbb_privmsgs_to where msg_id in
(
SELECT
msg_id
FROM `phpbb_privmsgs`
where
TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >= 90
);
delete
FROM `phpbb_privmsgs`
where
TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >= 90;
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 4 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Время жизни ЛС?
http://code.phpbb.com/svn/phpbb/branche ... s.html#sqlmoto писал(а):как этот код облечь в php?
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
Да уж, cron победить мне почему-то не удалось
вроде делал как в FAQе написано, поэтому все-таки буду батничокм запускать вот такой вот php:
у меня еще вот какой вопрос остался, в UCP если смотреть в списках Входящие (Исходящие, Отправленные) выводится список сообщений и также информация о том когда сообщение создано. Я так понимаю это где-то в файле шаблона прописано ,не могу найти в каком из template\ucp_*.html. Я хочу туда еще добавить и оставшееся время жизни данного сообщения...
Код: Выделить всё
<?php
$host = "localhost";
$user = "@@@@";
$password = "@@@@@@@@";
$db="@@@@@@@@";
// Производим попытку подключения к серверу MySQL:
if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}
// Выбираем базу данных:
mysql_select_db($db);
//узнаем старше скольки дней сообщения должны удаляться
$int=mysql_query('select config_value from phpbb_config where config_name=\'interval\'');
$inter=mysql_fetch_array($int);
//получили значение старше скольки дней сообщения должны удаляться
$interval = "$inter[config_value]";
// SQL-запрос:
$sql_privmsgs = mysql_query ('SELECT msg_id, message_time, from_unixtime(message_time, \'%d.%m.%y %H:%i:%s\') as tm FROM phpbb_privmsgs where TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >='.$interval );
//cчитаем количество записей, которые будем удалять
for ($c=0; $c<mysql_num_rows($sql_privmsgs); $c++)
{
}
//если есть такие записи
if ($c>0)
{
//вставляем в таблицу лог количество удаляемых сообщений
mysql_query('insert into phpbb_log_deletes (date, msg_deleted) values (now(), ' .$c. ');') or die(mysql_error());
//удаляем из phpbb_attachments
mysql_query('delete from phpbb_attachments where post_msg_id in (SELECT msg_id FROM phpbb_privmsgs where TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >='.$interval.');');
//удаляем из phpbb_privmsgs_to
mysql_query('delete from phpbb_privmsgs_to where msg_id in (SELECT msg_id FROM phpbb_privmsgs where TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >='.$interval.');');
//удаляем из phpbb_privmsgs
mysql_query('delete from phpbb_privmsgs where TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)) >='.$interval.';') or die(mysql_error());
}
mysql_close();
?>
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
спасибо, сегодня не успел поковыряться, буду ковыряться завтра результаты напишу сюда...
-
moto
- phpBB 1.2.0
- Сообщения: 18
- Стаж: 16 лет 2 месяца
- Благодарил (а): 5 раз
Re: Время жизни ЛС?
В общем-то вопрос решен, спасибо за помощь. Вкратце опишу, все что сделано.
1. В тбл. phpbb_config добавлено interval = 90 - время жизни сообщения
2. Вывод времени которое осталось жить сообщению сделан в файле includes\ucp\ucp_pm_viewfolder.php, там реализована вычисление переменной $xyz. Код вставляется в теле foreach
+
3. Непосредственно сам вывод добавляем вот здесь: styles\prosilver\template\ucp_pm_viewfolder.html
4. Ну и удаление собственно реализовано в отдельном php файле, который будет запускаться батником каждый день, код этого файлйа писал выше...
Так сказать вопрос решен, не совсем красиво, но работает...
1. В тбл. phpbb_config добавлено interval = 90 - время жизни сообщения
2. Вывод времени которое осталось жить сообщению сделан в файле includes\ucp\ucp_pm_viewfolder.php, там реализована вычисление переменной $xyz. Код вставляется в теле foreach
Код: Выделить всё
foreach ($folder_info['pm_list'] as $message_id)
{
........................
///////МОЕ считаем сколько дней осталось до удаления файла
$qry = mysql_query('SELECT ((select config_value from phpbb_config where config_name=\'interval\')-(TO_DAYS(NOW()) - TO_DAYS(from_unixtime(message_time)))) as tm FROM phpbb_privmsgs where msg_id='.$row['msg_id']);
$qry_fet=mysql_fetch_array($qry);
$xyz=$qry_fet[tm];
//////Конец. МОЕ считаем сколько дней осталось до удаления файла
..................
+
Код: Выделить всё
// Send vars to template $template->assign_block_vars('messagerow', array(
.............................
'T_XYZ' => $xyz,
.............................
Код: Выделить всё
<!-- IF S_SHOW_RECIPIENTS -->{L_MESSAGE_TO} {messagerow.RECIPIENTS}<!-- ELSE -->{L_MESSAGE_BY_AUTHOR} {messagerow.MESSAGE_AUTHOR_FULL} » {messagerow.SENT_TIME}<!-- ENDIF -->
<!--ВОТ ТУТ ВРЕМЯ ЖИЗНИ ФАЙЛА-->
Осталось дней до автом. удаления: {messagerow.T_XYZ}Так сказать вопрос решен, не совсем красиво, но работает...


