Puncte:0

Message Subscribe ignoră semnalizarea și trimite notificări tuturor

drapel au

Dezvolt un forum bazat pe Drupal și folosesc modulele stiva de mesaje combinate cu o versiune ajustată a acestui modul personalizat. https://github.com/Lullabot/message_integration Ideea este că toți utilizatorii primesc un e-mail atunci când este postat un fir nou, dar numai utilizatorii care se abonează la un fir primesc notificare pentru comentariile lăsate în acel fir. Partea în care oamenii primesc e-mailuri pentru firele noi funcționează, dar atunci când este lăsat un comentariu, toți utilizatorii primesc o notificare prin e-mail despre asta. În acest moment, nu pot spune dacă problema este cu modulul personalizat sau cu Message Subscribe. Am activat remedierea erorilor, dar nu văd niciun mesaj care să decidă cui să trimită e-mailurile și cui nu, doar că pregătește mesajul și îl trimite.

Modulul meu personalizat nu este atât de diferit de ceea ce a configurat Lullabot.

Acesta este codul care creează lista de abonați:

funcția message_integration_subscribe_options_comment() {
  $interogare = \Drupal::entityQuery('utilizator')
    ->condition('status', 1);
  $interogare->conditie('uid', [0, 1], 'NU IN');
  $subscribe_uids = $query->execute();

  $notifiers = ['e-mail'];
  $subscribe_options = [
    „notifică proprietarul mesajului” => FALSE,
    'uids' => [],
  ];
  foreach ($subscribe_uids ca $uid) {
    $subscribe_options['uids'][$uid] = new DeliveryCandidate([], $notifiers, $uid);
  }
  returnează $subscribe_options;
}

Și iată codul pentru când este lăsat un comentariu:

function message_integration_comment_insert(Comentariu $comentar) {

  // Vedeți dacă această manipulare ar trebui sărită.
  $config = \Drupal::config('message_integration.settings');
  $skip = $config->get('skip');
  dacă (!gol ($sări)) {
    întoarcere;
  }

  $nod = $comment->get('entity_id')->first()->get('entity')->getTarget()->getValue();
  dacă (!in_array($nod->bundle(), MESSAGE_INTEGRATION_CONTENT_TYPES)) {
    întoarcere;
  }

  // Creați un mesaj.
  $message = Mesaj::create([
    'template' => 'create_comment',
    'uid' => $node->getOwnerId(),
  ]);
  $mesaj->set('câmp_comment_referință', $coment);
  $message->set('field_published', $comment->isPublished());
  $mesaj->salvare();

  // Mesajele în coadă pentru a notifica toți abonații nodului despre noul comentariu.
  $subscribers = \Drupal::service('message_subscribe.subscribers');
  
  // Creați o listă personalizată de abonați pentru a notifica toți utilizatorii activi.
  // Aceasta este o rulare finală în jurul sistemului normal de abonament de tip flag, deoarece noi
  // nu vreau să abonez fiecare utilizator la fiecare conținut.
  $subscribe_options = mesaj_integrare_subscribe_options_comment();
  $options = $subscribe_options;
  foreach ($subscribe_options['uids'] ca $uid => $valori) {
    $options['uids'] = [$uid => $valori];
    $abonați->sendMessage($nod, $mesaj, [], $opțiuni);
  }
}

M-am dus în cerc și mi-am smuls părul, așa că orice ajutor ar fi apreciat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.