Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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

topic_form.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 3.69 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\message;
015   
016  /**
017  * Class topic_form
018  * Form used to send topics as notification emails
019  */
020  class topic_form extends form
021  {
022      /** @var int */
023      protected $topic_id;
024      /** @var array */
025      protected $topic_row;
026      /** @var string */
027      protected $recipient_address;
028      /** @var string */
029      protected $recipient_name;
030      /** @var string */
031      protected $recipient_lang;
032   
033      /**
034      * Get the data of the topic
035      *
036      * @param int $topic_id
037      * @return    false|array        false if the topic does not exist, array otherwise
038      */
039      protected function get_topic_row($topic_id)
040      {
041          $sql = 'SELECT forum_id, topic_title
042              FROM ' . TOPICS_TABLE . '
043              WHERE topic_id = ' . (int) $topic_id;
044          $result = $this->db->sql_query($sql);
045          $row = $this->db->sql_fetchrow($result);
046          $this->db->sql_freeresult($result);
047   
048          return $row;
049      }
050   
051      /**
052      * {inheritDoc}
053      */
054      public function check_allow()
055      {
056          $error = parent::check_allow();
057          if ($error)
058          {
059              return $error;
060          }
061   
062          if (!$this->auth->acl_get('u_sendemail'))
063          {
064              return 'NO_EMAIL';
065          }
066   
067          if (!$this->topic_row)
068          {
069              return 'NO_TOPIC';
070          }
071   
072          if (!$this->auth->acl_get('f_read', $this->topic_row['forum_id']))
073          {
074              return 'SORRY_AUTH_READ';
075          }
076   
077          if (!$this->auth->acl_get('f_email', $this->topic_row['forum_id']))
078          {
079              return 'NO_EMAIL';
080          }
081   
082          return false;
083      }
084   
085      /**
086      * {inheritDoc}
087      */
088      public function bind(\phpbb\request\request_interface $request)
089      {
090          parent::bind($request);
091   
092          $this->topic_id = $request->variable('t', 0);
093          $this->recipient_address = $request->variable('email', '');
094          $this->recipient_name = $request->variable('name', '', true);
095          $this->recipient_lang = $request->variable('lang', $this->config['default_lang']);
096   
097          $this->topic_row = $this->get_topic_row($this->topic_id);
098      }
099   
100      /**
101      * {inheritDoc}
102      */
103      public function submit(\messenger $messenger)
104      {
105          if (!$this->recipient_address || !preg_match('/^' . get_preg_expression('email') . '$/i', $this->recipient_address))
106          {
107              $this->errors[] = $this->user->lang['EMPTY_ADDRESS_EMAIL'];
108          }
109   
110          if (!$this->recipient_name)
111          {
112              $this->errors[] = $this->user->lang['EMPTY_NAME_EMAIL'];
113          }
114   
115          $this->message->set_template('email_notify');
116          $this->message->set_template_vars(array(
117              'TOPIC_NAME'    => htmlspecialchars_decode($this->topic_row['topic_title']),
118              'U_TOPIC'        => generate_board_url() . '/viewtopic.' . $this->phpEx . '?f=' . $this->topic_row['forum_id'] . '&t=' . $this->topic_id,
119          ));
120   
121          $this->message->add_recipient(
122              $this->recipient_name,
123              $this->recipient_address,
124              $this->recipient_lang,
125              NOTIFY_EMAIL
126          );
127          $this->message->set_sender_notify_type(NOTIFY_EMAIL);
128   
129          parent::submit($messenger);
130      }
131   
132      /**
133      * {inheritDoc}
134      */
135      public function get_return_message()
136      {
137          return sprintf($this->user->lang['RETURN_TOPIC'],  '<a href="' . append_sid($this->phpbb_root_path . 'viewtopic.' . $this->phpEx, 'f=' . $this->topic_row['forum_id'] . '&amp;t=' . $this->topic_id) . '">', '</a>');
138      }
139   
140      /**
141      * {inheritDoc}
142      */
143      public function render(\phpbb\template\template $template)
144      {
145          parent::render($template);
146   
147          $this->user->add_lang('viewtopic');
148          $template->assign_vars(array(
149              'EMAIL'                => $this->recipient_address,
150              'NAME'                => $this->recipient_name,
151              'S_LANG_OPTIONS'    => language_select($this->recipient_lang),
152              'MESSAGE'            => $this->body,
153   
154              'L_EMAIL_BODY_EXPLAIN'    => $this->user->lang['EMAIL_TOPIC_EXPLAIN'],
155              'S_POST_ACTION'            => append_sid($this->phpbb_root_path . 'memberlist.' . $this->phpEx, 'mode=email&amp;t=' . $this->topic_id))
156          );
157      }
158  }
159