Jedyne co mogę poradzić w takiej sytuacji to debug. Jeśli nie programujesz i nie używasz debuggera, to polecam zrobić coś takiego:
W pliku /modules/Utils/Watchdog/WatchdogCommon_0.php, okolice linii 100 jest taki kod:
$c_user = Acl::get_user();
foreach ($mail_users as $m) {
if ($m==$c_user) continue;
Acl::set_user($m);
$email_data = self::display_events($category_id, array($event_id=>$message), $id);
if (!$email_data) continue;
$contact = Utils_RecordBrowserCommon::get_id('contact', 'login', $m);
if (!$contact) continue;
$email = Utils_RecordBrowserCommon::get_value('contact', $contact, 'email');
if (!$email) continue;
Base_MailCommon::send($email,__( 'EPESI notification - %s - %s', array($email_data['category'], strip_tags($email_data['title']))),$email_data['events'], null, null, true);
}
Acl::set_user($c_user);
Dodamy tam linie, które będą zapisywać do pliku próby wysłania powiadomienia na maila.
To już jest ten kod po edycji:
$c_user = Acl::get_user();
$date = date('Y-m-d H:i:s');
$file = 'data/watchdog_notifications_debug.log';
file_put_contents($file, "$date NEW WATCHDOG EVENT: $category_name:$id\n", FILE_APPEND);
foreach ($mail_users as $m) {
if ($m==$c_user) continue;
file_put_contents($file, "$date USER: $m\n", FILE_APPEND);
Acl::set_user($m);
$email_data = self::display_events($category_id, array($event_id=>$message), $id);
if (!$email_data) continue;
$contact = Utils_RecordBrowserCommon::get_id('contact', 'login', $m);
if (!$contact) continue;
$email = Utils_RecordBrowserCommon::get_value('contact', $contact, 'email');
if (!$email) continue;
file_put_contents($file, "$date MAIL SENT\n", FILE_APPEND);
Base_MailCommon::send($email,__( 'EPESI notification - %s - %s', array($email_data['category'], strip_tags($email_data['title']))),$email_data['events'], null, null, true);
}
file_put_contents($file, "\n", FILE_APPEND);
Acl::set_user($c_user);
To powinno utworzyć nowy plik 'data/watchdog_notifications_debug.log' i tam zapisywać informacje w formie:
2013-12-16 10:43:55 NEW WATCHDOG EVENT: contact:1
2013-12-16 10:44:17 NEW WATCHDOG EVENT: contact:1
2013-12-16 10:45:21 NEW WATCHDOG EVENT: contact:2
2013-12-16 10:45:21 USER: 2
2013-12-16 10:45:21 MAIL SENT
Jeśli pojawi się USER: X ale nie będzie MAIL SENT zaraz w kolejnej linii to znaczy, że jeden z warunków do wysłania wiadomości nie został spełniony. Jeśli pojawi się MAIL SENT, ale nie dotrze email, to znaczy, że funkcja wysyłająca maile źle działa. Natomiast jeśli w ogóle nie pojawi się USER: X, to znaczy, że tak naprawdę to ten użytkownik nie miał dostać maila. Jeszcze tylko chcę zauważyć, że X, to jest id użytkownika z tabeli
user_login.
Pozdrawiam,
Adam