Jump to content
  • 0
Sproket

Powiadomienie - problem z dotarciem do odbiorców

Question

Hej. Tworzę aplikacje, panele pod jedną z gier multiplayer i mam problem z powiadomieniami. Stworzyłem nowy 'extension->notification', wszystko jest oki, pliki mi potworzyło, w ustawieniach powiadomień dodało przełącznik. Mam jedynie problem z wysłaniem tego do wszystkich ludzi, którzy mają zaznaczone powiadomienia w ustawieniach. Dokumentacja jest dość okrojona i mamy tam jedynie info o

\IPS\Member::load()

Moje pytanie jest proste: czym zastąpić $member, aby zostało wysłane do wszystkich ludzi, którzy mają zaznaczoną opcję w ustawieniach powiadomień?

$notification->recipients->attach( $member );

 

Wszystko inne działa jak powinno, jeśli dam

\IPS\Member::load(moje_uid_profilu_lub_kogokolwiek_innego)

to do tej wybranej osoby dociera. Domyślam się, że trzeba to rozwiązać pętlą, ale nie mam pojęcia w jaki sposób. Member::load chyba nie pozwala na czytanie tablic, a jedynie pojedynczych profili. Proszę o pomoc, pozdro.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Musisz to zrobić w pętli z użytkownikami

foreach($members as $member)
{
	$notification = new \IPS\Notification(...);
	$notification->recipients->attach($member);
	$notification->send();
}

tak w skrócie


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
  • 0

A w zapytaniu co selectować i zapisać do $members? Wystarczy member_id czy wszystko z tej tabeli? W sensie

$notification->recipients->attach($member);

to $member ma zawierać co? member_id? Bo właśnie coś jeszcze wczoraj próbowałem i member_id jest używane w ips\member::load(), a tutaj nie mam pojęcia.

Share this post


Link to post
Share on other sites
  • 0

Robisz select na tej tabeli co podałem. Jako where podajesz ten swój klucz. Jak pobierzesz to dla każdego wiersza robisz 

\IPS\Member::load( $row[...] ); i później to przekazujesz do attach

Share this post


Link to post
Share on other sites
  • 0

Teraz jeszcze sprawdziłem tabelę core_notification_preferences i dziwne trochę, ale tylko 3 memberów ma w ogóle to ustawienie:

b535453a867fe1ba254858278798e8d6.png

gdzie baza użytkowników forum sięga ponad 200 tysięcy. Da się to jakoś masowo im ustawić? Próbowałem w ACP zmieniać ustawienia powiadomień, ale to nie dodało tego. Może dlatego im nie wysyła. Z tego wychodzi, że mój wcześniejszy kod był dobry, bo zrobiłem dokładnie tak samo tylko z core_members pobierałem member_id @Spanner tylko po prostu ludzie mają jakby wyłączone te powiadomienia.

Share this post


Link to post
Share on other sites
  • 0

No jak wyłączyli to powinieneś ich poinformiwać. Może nie chcą tego otrzymywać. 

Ps. Jak wysyłasz do tak dużej ilości to lepiej jako kolejka w tle po 50 do 100 powiadomień w jednym przebiegu

Share this post


Link to post
Share on other sites
  • 0

Chodzi właśnie o to, że nikt tego nie wyłączył. To jest nowo-dodane pare dni temu, niektórzy nawet o tym jeszcze nie wiedzą, bo nie działa do końca. Każdy user (jak się zaloguje jako ktoś przez ACP i wejdę w ustawienia powiadomień, stąd wiem) ma to niby zaznaczone jako włączone, ale w tabeli core_notification_preferences dodaje się dopiero jak dasz /zapisz/ w opcjach powiadomień (nawet nic nie zmieniając tylko wchodząc w czyjeś ustawienia i dając sam przycisk zapisz).

Share this post


Link to post
Share on other sites
  • 0

Dobra, poradziłem sobie. Dzięki za pomoc, do zamknięcia.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.