Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

messenger_base.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 3.18 KiB


001  <?php
002  /**
003  *
004  * This file is part of the phpBB Forum Software package.
005  *
006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
007  * @license GNU General Public License, version 2 (GPL-2.0)
008  *
009  * For full copyright and license information, please see
010  * the docs/CREDITS.txt file.
011  *
012  */
013   
014  namespace phpbb\notification\method;
015   
016  /**
017  * Abstract notification method handling email and jabber notifications
018  * using the phpBB messenger.
019  */
020  abstract class messenger_base extends \phpbb\notification\method\base
021  {
022      /** @var \phpbb\user_loader */
023      protected $user_loader;
024   
025      /** @var string */
026      protected $phpbb_root_path;
027   
028      /** @var string */
029      protected $php_ext;
030   
031      /**
032       * Notification Method Board Constructor
033       *
034       * @param \phpbb\user_loader $user_loader
035       * @param string $phpbb_root_path
036       * @param string $php_ext
037       */
038      public function __construct(\phpbb\user_loader $user_loader, $phpbb_root_path, $php_ext)
039      {
040          $this->user_loader = $user_loader;
041          $this->phpbb_root_path = $phpbb_root_path;
042          $this->php_ext = $php_ext;
043      }
044   
045      /**
046      * Notify using phpBB messenger
047      *
048      * @param int $notify_method                Notify method for messenger (e.g. NOTIFY_IM)
049      * @param string $template_dir_prefix    Base directory to prepend to the email template name
050      *
051      * @return null
052      */
053      protected function notify_using_messenger($notify_method, $template_dir_prefix = '')
054      {
055          if (empty($this->queue))
056          {
057              return;
058          }
059   
060          // Load all users we want to notify (we need their email address)
061          $user_ids = $users = array();
062          foreach ($this->queue as $notification)
063          {
064              $user_ids[] = $notification->user_id;
065          }
066   
067          // We do not send emails to banned users
068          if (!function_exists('phpbb_get_banned_user_ids'))
069          {
070              include($this->phpbb_root_path . 'includes/functions_user.' . $this->php_ext);
071          }
072          $banned_users = phpbb_get_banned_user_ids($user_ids);
073   
074          // Load all the users we need
075          $this->user_loader->load_users($user_ids);
076   
077          // Load the messenger
078          if (!class_exists('messenger'))
079          {
080              include($this->phpbb_root_path . 'includes/functions_messenger.' . $this->php_ext);
081          }
082          $messenger = new \messenger();
083   
084          // Time to go through the queue and send emails
085          /** @var \phpbb\notification\type\type_interface $notification */
086          foreach ($this->queue as $notification)
087          {
088              if ($notification->get_email_template() === false)
089              {
090                  continue;
091              }
092   
093              $user = $this->user_loader->get_user($notification->user_id);
094   
095              if ($user['user_type'] == USER_IGNORE || ($user['user_type'] == USER_INACTIVE && $user['user_inactive_reason'] == INACTIVE_MANUAL) || in_array($notification->user_id, $banned_users))
096              {
097                  continue;
098              }
099   
100              $messenger->template($notification->get_email_template(), $user['user_lang'], '', $template_dir_prefix);
101   
102              $messenger->set_addresses($user);
103   
104              $messenger->assign_vars(array_merge(array(
105                  'USERNAME'                        => $user['username'],
106   
107                  'U_NOTIFICATION_SETTINGS'        => generate_board_url() . '/ucp.' . $this->php_ext . '?i=ucp_notifications&mode=notification_options',
108              ), $notification->get_email_template_variables()));
109   
110              $messenger->send($notify_method);
111          }
112   
113          // Save the queue in the messenger class (has to be called or these emails could be lost?)
114          $messenger->save_queue();
115   
116          // We're done, empty the queue
117          $this->empty_queue();
118      }
119  }
120