Chwilę mi to zajęło zanim odczytałem w czym leży "Problem". Obserwowanie całego zbioru danych działa nie tak jak byśmy się tego spodziewali. Tzn ja się spodziewałem, że każde nowe wydarzenie(edycja, dodanie) od momentu kiedy zacząłem obserwować będzie raportowane. Niestety tak nie jest.
A teraz opiszę jak jest (skomplikowne):
Gdy rekord jest edytowany albo dodawany tworzone jest tzw zdarzenie Watchdoga. Gdy istnieje w bazie danych tylko jedno zdarzenie nieprzeczytane (czyli to które właśnie zostało utworzone), to wszyscy którzy subskrybują cały zbiór danych mają zaznaczane, że obserwują dany rekord (robi się zielone oczko).
Co z tego wynika.
1. Gdy subskrybuję cały zbiór danych, to każdy nowo utworzony rekord będzie przeze mnie obserwowany
2. Gdy istnieje rekord, ale wszystkie wydarzenia są przeczytane, to również ten rekord będzie dodany do obserwowanych, gdy ktoś go będzie edytować.
3. Gdy ktokolwiek nie przeczytał powiadomienia, to rekord nie zostanie dodany do obserwowanych.
Rozwiązanie pierwsze (dopóki nie zostanie poprawiony kod PHP), to zapisać się do kategorii i wyczyścić wszystkie wydarzenia z bazy danych poprzez wykonanie "TRUNCATE utils_watchdog_event".
Drugie rozwiązanie to zapisać się do kategorii, a następnie do każdego rekordu poprzez poniższy skrypt PHP.
Tylko trzeba zmienić moj_login w pierwszej linii na odpowiedni login.
$user_id = Base_UserCommon::get_user_id('moj_login');
$tab = 'company';
set_time_limit(0);
ini_set('memory_limit', '256M');
$recs = Utils_RecordBrowserCommon::get_records($tab, array(), array('id'));
foreach($recs as $r) Utils_WatchdogCommon::user_subscribe($user_id, $tab, $r['id']);
Kod należy wykonać jako superadmin w dodatkowych narzędziach administracyjnych http:// adres epesi /admin/?module=EpesiShell
Może to chwile potrwać w zależności od ilości firm.
Pozdrawiam,
Adam