Дописываю возможность дублирования сообщений на VM, нужно взять информацию о пользователе непосредственно из базы MySQL. Пробовал напрямую соединяться и работать - все нормально, но вижу что все модули работают через какой то класс, а как не пойму - помогите сделать правильно по шагам..
Заранее благодарен
Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Использование базы данных MySQL в phpBB, как привильно ?
Если кому интересно, несколько строчек кода будут дублировать все ваши сообщения помимо email еще и на VM. Правда веб сервер при этом должен на ьшсrosoft'е крутиться, хотя можно и под линуксом тока утилиту посылки сообщения надо другую.
В метод RESET объекта emailer в модуле emailer вставляем перед кодом метода, следующее:
Далее в этой же папке я положил сам send.exe и одну библиотеку dll, плюс нужно иметь установленный VM, и запускать apache от имени пользователя под которым VM установлен. Если использовать другую утилиту для посылки сообщения можно избавиться от последнего гемора, я просто не нашел такой утилиты.. Если кто найдет скажите на msgipss@land.ru особенно если она под linux
Добавлено спустя 5 минут 26 секунд:
А еще забыл, я использовал переменную номера под msnm для хранения имени компьютера, поэтому надо изменить еще шапку в анкете, и соответственно при заполнении данного поля сообщения будут дублироваться именно на указанный hostname, новый параметр вводить не стал - не программист я
В метод RESET объекта emailer в модуле emailer вставляем перед кодом метода, следующее:
Код: Выделить всё
global $db;
$sql = "select user_msnm from phpbb_users where user_email=".chr(39).$this->addresses['to'].chr(39);
$vm_host_name = "";
if( !$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Не могу считать для VM имя машины', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$vm_host_name = $row['user_msnm'];
if (strlen(trim($vm_host_name))>0) {
$msg_new = ereg_replace(chr(10),' ',$this->msg); // удаляем все переводы каретки #10
$msg_new = ereg_replace('"','`',$msg_new); // удаляем все ковычки "
shell_exec('send.exe /i "Сообщения форума АСУТП" /n "Форум по АСУТП" '.$vm_host_name.' "'.$msg_new.'"'); // посылаем сообщение
}
Добавлено спустя 5 минут 26 секунд:
А еще забыл, я использовал переменную номера под msnm для хранения имени компьютера, поэтому надо изменить еще шапку в анкете, и соответственно при заполнении данного поля сообщения будут дублироваться именно на указанный hostname, новый параметр вводить не стал - не программист я
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
У меня только одно небольшое замечание:
Я бы использовал константу USERS_TABLE, она объявляется среди файлов, подключаемых из common.php и учитывает префикс таблиц в БД.
Код: Выделить всё
$sql = "select user_msnm from phpbb_users where user_email=".chr(39).$this->addresses['to'].chr(39);
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- Former team member
- Сообщения: 6517
- Зарегистрирован: 19 лет 9 месяцев
- Откуда: Бердск
msgipss
для посылки сообщений из под линукса помоему нужна samba
для посылки сообщений из под линукса помоему нужна samba
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
И последние исправления, вернее переработка, весь код что писали выше отменяем, пишем следующее.
Перед методом RESET пишем следующее:
function sendvm($emailaddr) // посылка дубля сообщения через Vypress Messenger
{
global $db;
$sql = "select user_msnm from ".USERS_TABLE." where user_email=".chr(39).$emailaddr.chr(39);
$vm_host_name = "";
if( !$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Не могу считать для VM имя машины', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$vm_host_name = $row['user_msnm'];
if (strlen(trim($vm_host_name))>0) {
$msg_new = ereg_replace(chr(10),' ',$this->msg); // заменяем все переводы каретки #10 на пробелы
$msg_new = ereg_replace('"','`',$msg_new); // заменяем все ковычки " на '
shell_exec('send.exe /i "Сообщения форума АСУТП" /n "Форум по АСУТП" '.$vm_host_name.' "'.$msg_new.'"'); // посылаем сообщение
}
}
Далее делаем вызов нового метода из метода SEND:
Ищем
if ( $this->use_smtp )
{
if ( !defined('SMTP_INCLUDED') )
{
include($phpbb_root_path . 'includes/smtp.' . $phpEx);
}
$result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers);
после вставляем- $this->sendvm($this->reply_to);
Далее ищем
else
{
$empty_to_header = ($to == '') ? TRUE : FALSE;
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
после вставляем- $this->sendvm($this->reply_to); - теперь работает нормально...
Перед методом RESET пишем следующее:
function sendvm($emailaddr) // посылка дубля сообщения через Vypress Messenger
{
global $db;
$sql = "select user_msnm from ".USERS_TABLE." where user_email=".chr(39).$emailaddr.chr(39);
$vm_host_name = "";
if( !$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Не могу считать для VM имя машины', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$vm_host_name = $row['user_msnm'];
if (strlen(trim($vm_host_name))>0) {
$msg_new = ereg_replace(chr(10),' ',$this->msg); // заменяем все переводы каретки #10 на пробелы
$msg_new = ereg_replace('"','`',$msg_new); // заменяем все ковычки " на '
shell_exec('send.exe /i "Сообщения форума АСУТП" /n "Форум по АСУТП" '.$vm_host_name.' "'.$msg_new.'"'); // посылаем сообщение
}
}
Далее делаем вызов нового метода из метода SEND:
Ищем
if ( $this->use_smtp )
{
if ( !defined('SMTP_INCLUDED') )
{
include($phpbb_root_path . 'includes/smtp.' . $phpEx);
}
$result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers);
после вставляем- $this->sendvm($this->reply_to);
Далее ищем
else
{
$empty_to_header = ($to == '') ? TRUE : FALSE;
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
после вставляем- $this->sendvm($this->reply_to); - теперь работает нормально...