|
Отправлено: 3 января 2016 — 14:56
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Выделено в отдельную тему из темы "Массовая рассылка личных сообщений (приват)" Мод ставится на ExBB FM 1.0 Final однако скорее всего и на ExBB FM 1.0 RC1 будет без проблем работать.
1. Открываем файл admin/nav_bar.tpl
в котором ищем код
CODE:<tr>
<td class="row1"><span class="genmed"><a href="setmembers.php?action=massmail" class="genmed">{$fm->LANG['MassEmail']}</a></span></td>
</tr>
после которого вставляем
CODE:<tr>
<td class="row1"><span class="genmed"><a href="setmembers.php?action=masspm" class="genmed">Массовая рассылка через приват</a></span></td>
</tr>
2. Открываем файл setmembers.php
в котором ищем код
CODE:} elseif ($fm->input['action'] == 'censor') {
перед которым вставляем
Спойлер (Отобразить)CODE:} elseif ($fm->input['action'] == 'masspm') // управление массовой рассылкой в приват
{
if ($fm->_Intval('dosend') === 1)
{
if ($fm->input['subject'] == '' || $fm->input['message'] == '') {$fm->_Message($fm->LANG['AdminMassMail'],$fm->LANG['EmailNotEmpty'],'',1);}
$allusers = $fm->_Read(FM_USERS, FALSE);
$u_id = 0;
foreach ($allusers as $id=>$info)
{
$u_id = $id;
$touser = $fm->_Getmember($u_id);
if ($touser)
{
$currenttime = $fm->_Nowtime;
$touserdata = $fm->_Read2Write($fp_touser,'members/'.$u_id.'.php');
$touserdata['new_pm'] = TRUE;
$fm->_Write($fp_touser,$touserdata);
$toinbox = $fm->_Read2Write($fp_toinbox,'messages/'.$u_id.'-msg.php');
$toinbox[$currenttime]['from'] = $fm->user['name'];
$toinbox[$currenttime]['title'] = $fm->input['subject'];
$toinbox[$currenttime]['msg'] = $fm->input['message'];
$toinbox[$currenttime]['frid'] = $fm->user['id'];
$toinbox[$currenttime]['mail'] = FALSE;
$toinbox[$currenttime]['status'] = FALSE;
$fm->_Write($fp_toinbox,$toinbox);
unset($toinbox);
}
}
unset($subject,$message,$allusers);
$fm->_Message($fm->LANG['AdminMassMail'],'Массовая рассылка успешно выполнена','',1);
}
else
{
include('./admin/all_header.tpl');
include('./admin/nav_bar.tpl');
include('./admin/mass_pm.tpl');
include('./admin/footer.tpl');
}
3. В папке admin создаем новый файл mass_pm.tpl в который вставляем код
Спойлер (Отобразить)CODE:<?php
echo <<<DATA
<h1>{$fm->LANG['Manage']} :: Массовая рассылка через приват</h1>
<p class="genmed">Здесь вы можете разослать сообщения в приват всем участникам форума</p>
<form method="post" action="setmembers.php">
<input type="hidden" name="action" value="masspm">
<input type="hidden" name="dosend" value="1">
<table cellspacing="1" cellpadding="4" border="0" align="center" class="forumline">
<tr>
<th class="thHead" colspan="2">{$fm->LANG['MessageBody']}</th>
</tr>
<tr>
<td class="row1" align="right"><b>{$fm->LANG['MessageSubject']}</b></td>
<td class="row2"><span class="gen"><input class="post" type="text" name="subject" size="45" maxlength="100" tabindex="1" class="post" value="" /></span></td>
</tr>
<tr>
<td class="row1" align="right" valign="top"> <span class="gen"><b>{$fm->LANG['MessageText']}</b></span>
<td class="row2"><span class="gen"> <textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="2" class="post"></textarea></span>
</tr>
<tr>
<td class="catBottom" align="center" colspan="2"><input type="submit" value="{$fm->LANG['Send']}" tabindex="3" name="submit" class="mainoption" /></td>
</tr>
</table>
</form>
<br />
DATA;
?>
Вроде всё. С языковыми переменными не заморачивался - при желании допилить их не проблема. |
|
|
Parapsixolog |
Отправлено: 20 ноября 2016 — 01:51
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
Хороший мод, полезный. Но нужно немного доработать.
Во первых нужно прикрутить сюда редактор bb-кодов. Коды обрабатываются, но редактора нет, что не удобно.
Хорошо бы было, если сообщения шли бы от имени форума, а не от имени администратора, как они сейчас идут, при поздравлении с днём рождения.
И как всегда, в уведомлениях на e-mail о приходе сообщения в личку, не работают bb-коды. Это конечно старая проблема движка exbb, интересно, она когда нибудь решиться? |
|
|
|
Отправлено: 21 ноября 2016 — 00:41
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
По уму его нужно переработать в визуальном плане - объединить в один мод с рассылкой через e-mail и добавить возможность выбора, какого типа рассылка будет вестись.
Там же добавить возможность фильтровать пользователей, только я пока не знаю как это реализовать.
Что касается добавления редактора bb-кодов - добавить конечно можно, но код раздуется прилично, стоит ли оно того?
Цитата:Хорошо бы было, если сообщения шли бы от имени форума, а не от имени администратора Боюсь это не получится. Модуль личных сообщений устроен так, что имя, кто послал сообщение берётся из базы пользователей, а такого пользователя как "форум" не существует. Можно конечно переписать и этот код, но меня вымораживает необходимость потом скрупулёзно переносить свои правки на "финал" что бы написать для вас корректную инструкцию. Блин, насколько всё было бы проще, если бы движок был наглухо отделён от шаблонов, данных и платных модов...
Цитата:И как всегда, в уведомлениях на e-mail о приходе сообщения в личку, не работают bb-коды. А должны? Я что-то вообще не совсем понимаю, о чем речь. |
|
|
Parapsixolog |
Отправлено: 21 ноября 2016 — 01:22
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
NordWest пишет:Что касается добавления редактора bb-кодов - добавить конечно можно, но код раздуется прилично, стоит ли оно того?
Конечно стоит. Пусть это будет не весь редактор bb-кодов, хотя бы основные.
NordWest пишет:Боюсь это не получится. Модуль личных сообщений устроен так, что имя, кто послал сообщение берётся из базы пользователей, а такого пользователя как "форум" не существует. Можно конечно переписать и этот код, но меня вымораживает необходимость потом скрупулёзно переносить свои правки на "финал" что бы написать для вас корректную инструкцию. Блин, насколько всё было бы проще, если бы движок был наглухо отделён от шаблонов, данных и платных модов...
Ну это не так важно. Конечно же смотрелось намного солиднее, когда рассылка была от лица администрации форума. Но это не так важно, и так сойдёт.
NordWest пишет:А должны? Я что-то вообще не совсем понимаю, о чем речь.
Это старый "косяк" движка exbb, который так и не кто не исправил.
В чём он выражается. А выражается он в том, что если в профиле пользователя поставлена галочка на - Показывать адрес E-mail? то при поступлении к нему в личную почту письма, оно дублируется и на e-mail пользователя.
Это хорошая функция, востребованная. Я порою даже на форум не захожу, в электронном ящике с письмами ознакамливаюсь.
Но проблема в том, что все письма поступающие на ящик от форума, поступают с необработанными bb-кодами. То есть например текст этого сообщения в письме будет выглядеть так:
CODE:[quote=NordWest]Что касается добавления редактора bb-кодов - добавить конечно можно, но код раздуется прилично, стоит ли оно того?[/quote]
[i]Конечно стоит. Пусть это будет не весь редактор bb-кодов, хотя бы основные.[/i]
[quote=NordWest]...... |
|
|
|
Отправлено: 21 ноября 2016 — 06:11
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Parapsixolog пишет:Это старый "косяк" движка exbb, который так и не кто не исправил.
Попробуйте исправить так...
Откройте файл messenger.php в котором найдите строку
CODE:$email = sprintf($fm->LANG['NewPMNotify'],$touserdata['name'],$fm->exbb['boardname'],$fm->exbb['boardurl'],$fm->user['name'],$MessageTitle,$MessageText);
которую замените строкой
CODE:$email = sprintf($fm->LANG['NewPMNotify'],$touserdata['name'],$fm->exbb['boardname'],$fm->exbb['boardurl'],$fm->user['name'],$MessageTitle,$fm->formatpost($MessageText));
Сам не проверял, но судя по всему должно исправить проблему. |
|
|
Parapsixolog |
Отправлено: 21 ноября 2016 — 13:23
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
NordWest пишет:Откройте файл messenger.php в котором найдите строку
CODE:
$email = sprintf($fm->LANG['NewPMNotify'],$touserdata['name'],$fm->exbb['boardname'],$fm->exbb['boardurl'],$fm->user['name'],$MessageTitle,$MessageText);
которую замените строкой
CODE:
$email = sprintf($fm->LANG['NewPMNotify'],$touserdata['name'],$fm->exbb['boardname'],$fm->exbb['boardurl'],$fm->user['name'],$MessageTitle,$fm->formatpost($MessageText));
Сам не проверял, но судя по всему должно исправить проблему.
Попробовал. К сожалению не помогло. |
|
|
|