Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

Ответ
 
Опции темы Опции просмотра
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #1 03-11-2008, 21:53

У вас на сайте несколько администраторов, которые имеют доступ к модулям?
А вы уверены что если у вас два человека имеют админастративные права например на модуль новостей или статей и обоим приходит оповещение о новой статье добавленной юзером?
У вас два например админа для модуля файлов и вы уверены что обоим приходит оповещение о битой ссылке?

У вас на сайте в главных настройках портала в поле "E-Mail администратора" стоит несуществующий адрес, типа "noreply@site.ru" ? (чтобы неполучать сообщения от автоответчиков что есть у многих юзеров)
А вы знали что это email подставляется везде в поле "Кому" ?

Тогда хак вам пригодится.

Принцип:
добавляем дополнительную функцию и меняем одну строку в коде отправки оповещений нужного модуля.

1. Добвляем функцию в файл \include\functions.php
можно в самом конце файла ПЕРЕД последней закрывающей скобкой "}"
PHP код:
function email_admin_module ($module '') {
global 
$db$xoopsConfig;
if (
$module == '') {
$emails $xoopsConfig['adminmail'];
return 
$emails;
}
$sql_1 "SELECT groupid FROM ".$db->prefix("groups_modules_link")." WHERE mid=".$module." AND type='A'";
if (!
$result_1 $db->query($sql_1)) {
$emails $xoopsConfig['adminmail'];
return 
$emails;
}
$groupidlist   = array();
while (list(
$groupid) = $db->fetch_array($result_1)) {
$groupidlist[] = $groupid;
}
$extra " WHERE ";
if (
is_array($groupidlist)) {
$extra .= "(l.groupid=".$groupidlist[0]."";
$size count($groupidlist);
if (
$size 1) {
for (
$i 1$i $size$i++) {
$extra .= " OR l.groupid=".$groupidlist[$i]."";
}
}
$extra .= ")";
} else {
$extra .= "l.groupid=".$groupidlist."";
}
$sql_2 "SELECT u.email FROM ".$db->prefix("groups_users_link")." l, ".$db->prefix("users")." u ".$extra." AND l.uid=u.uid";
if (!
$result_2 $db->query($sql_2)) {
$emails $xoopsConfig['adminmail'];
return 
$emails;
}
while (list(
$email) = $db->fetch_row($result_2)) {
$ret[] = $email;
}
return 
$ret;

2. Пример использования:
Например в Новостях:
файл submit.php
имеет такую конструкцию отпраки оповещения админу о поступившей новости:
PHP код:
$xoopsMailer =& getMailer();
$xoopsMailer->useMail();
$xoopsMailer->setToEmails($xoopsConfig['adminmail']);
$xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
$xoopsMailer->setFromName($meta['title']);
$xoopsMailer->setSubject(_NW_NOTIFYSBJCT);
$xoopsMailer->setBody(_NW_NOTIFYMSG);
$xoopsMailer->send(); 
Нам надо поменять всего одну строку:
PHP код:
$xoopsMailer =& getMailer();
$xoopsMailer->useMail();
$xoopsMailer->setToEmails(email_admin_module ($xoopsModule->mid()));
$xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
$xoopsMailer->setFromName($meta['title']);
$xoopsMailer->setSubject(_NW_NOTIFYSBJCT);
$xoopsMailer->setBody(_NW_NOTIFYMSG);
$xoopsMailer->send(); 
Т.е.:
PHP код:
$xoopsMailer->setToEmails(email_admin_module ($xoopsModule->mid())); 
разбираем эту строку:
мы отправляем уникальный номер модуля в функцию email_admin_module
функция возращает массив email адресов (ну или один адрес) принадлежащий админу (админам) этого модуля.
Далее рассылаются каждому админу свое письмо-оповещение.
Вот и все.

Последний раз редактировалось Zormax, 03-12-2008 в 17:33


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2018, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 48.61 Kb. compressed to 47.00 Kb. by saving 1.60 Kb. (3.30%)
Page generated in 0.05899 seconds with 10 queries