[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/phpbb/notification/type/ -> post_in_queue.php (source)

   1  <?php
   2  /**
   3  *
   4  * This file is part of the phpBB Forum Software package.
   5  *
   6  * @copyright (c) phpBB Limited <https://www.phpbb.com>
   7  * @license GNU General Public License, version 2 (GPL-2.0)
   8  *
   9  * For full copyright and license information, please see
  10  * the docs/CREDITS.txt file.
  11  *
  12  */
  13  
  14  namespace phpbb\notification\type;
  15  
  16  /**
  17  * Post in queue notifications class
  18  * This class handles notifications for posts that are put in the moderation queue (for moderators)
  19  */
  20  
  21  class post_in_queue extends \phpbb\notification\type\post
  22  {
  23      /**
  24      * Get notification type name
  25      *
  26      * @return string
  27      */
  28  	public function get_type()
  29      {
  30          return 'notification.type.post_in_queue';
  31      }
  32  
  33      /**
  34      * Language key used to output the text
  35      *
  36      * @var string
  37      */
  38      protected $language_key = 'NOTIFICATION_POST_IN_QUEUE';
  39  
  40      /**
  41      * Notification option data (for outputting to the user)
  42      *
  43      * @var bool|array False if the service should use it's default data
  44      *                     Array of data (including keys 'id', 'lang', and 'group')
  45      */
  46      static public $notification_option = array(
  47          'id'    => 'notification.type.needs_approval',
  48          'lang'    => 'NOTIFICATION_TYPE_IN_MODERATION_QUEUE',
  49          'group'    => 'NOTIFICATION_GROUP_MODERATION',
  50      );
  51  
  52      /**
  53      * Permission to check for (in find_users_for_notification)
  54      *
  55      * @var string Permission name
  56      */
  57      protected $permission = 'm_approve';
  58  
  59      /**
  60      * Is available
  61      */
  62  	public function is_available()
  63      {
  64          $has_permission = $this->auth->acl_getf($this->permission, true);
  65  
  66          return (!empty($has_permission));
  67      }
  68  
  69      /**
  70      * Find the users who want to receive notifications
  71      *
  72      * @param array $post Data from the post
  73      * @param array $options Options for finding users for notification
  74      *
  75      * @return array
  76      */
  77  	public function find_users_for_notification($post, $options = array())
  78      {
  79          $options = array_merge(array(
  80              'ignore_users'        => array(),
  81          ), $options);
  82  
  83          // 0 is for global moderator permissions
  84          $auth_approve = $this->auth->acl_get_list(false, $this->permission, array($post['forum_id'], 0));
  85  
  86          if (empty($auth_approve))
  87          {
  88              return array();
  89          }
  90  
  91          $has_permission = array();
  92  
  93          if (isset($auth_approve[$post['forum_id']][$this->permission]))
  94          {
  95              $has_permission = $auth_approve[$post['forum_id']][$this->permission];
  96          }
  97  
  98          if (isset($auth_approve[0][$this->permission]))
  99          {
 100              $has_permission = array_unique(array_merge($has_permission, $auth_approve[0][$this->permission]));
 101          }
 102          sort($has_permission);
 103  
 104          $auth_read = $this->auth->acl_get_list($has_permission, 'f_read', $post['forum_id']);
 105          if (empty($auth_read))
 106          {
 107              return array();
 108          }
 109  
 110          return $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], array_merge($options, array(
 111              'item_type'        => static::$notification_option['id'],
 112          )));
 113      }
 114  
 115      /**
 116      * Get the url to this item
 117      *
 118      * @return string URL
 119      */
 120  	public function get_url()
 121      {
 122          return append_sid($this->phpbb_root_path . 'mcp.' . $this->php_ext, "i=queue&amp;mode=approve_details&amp;p={$this->item_id}");
 123      }
 124  
 125      /**
 126      * {inheritDoc}
 127      */
 128  	public function get_redirect_url()
 129      {
 130          return parent::get_url();
 131      }
 132  
 133      /**
 134      * {@inheritdoc}
 135      */
 136  	public function create_insert_array($post, $pre_create_data = array())
 137      {
 138          parent::create_insert_array($post, $pre_create_data);
 139  
 140          $this->notification_time = time();
 141      }
 142  
 143      /**
 144      * {@inheritdoc}
 145      */
 146  	public function get_insert_array()
 147      {
 148          $data = parent::get_insert_array();
 149          $data['notification_time'] = $this->notification_time;
 150  
 151          return $data;
 152      }
 153  
 154      /**
 155      * Get email template
 156      *
 157      * @return string|bool
 158      */
 159  	public function get_email_template()
 160      {
 161          return 'post_in_queue';
 162      }
 163  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1