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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
row_based_plugin.php
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\textreparser;
015
016 abstract class row_based_plugin extends base
017 {
018 /**
019 * @var \phpbb\db\driver\driver_interface
020 */
021 protected $db;
022
023 /**
024 * @var string
025 */
026 protected $table;
027
028 /**
029 * Constructor
030 *
031 * @param \phpbb\db\driver\driver_interface $db Database connection
032 * @param string $table
033 */
034 public function __construct(\phpbb\db\driver\driver_interface $db, $table)
035 {
036 $this->db = $db;
037 $this->table = $table;
038 }
039
040 /**
041 * Return the name of the column that correspond to each field
042 *
043 * @return array
044 */
045 abstract public function get_columns();
046
047 /**
048 * {@inheritdoc}
049 */
050 public function get_max_id()
051 {
052 $columns = $this->get_columns();
053
054 $sql = 'SELECT MAX(' . $columns['id'] . ') AS max_id FROM ' . $this->table;
055 $result = $this->db->sql_query($sql);
056 $max_id = (int) $this->db->sql_fetchfield('max_id');
057 $this->db->sql_freeresult($result);
058
059 return $max_id;
060 }
061
062 /**
063 * {@inheritdoc}
064 */
065 protected function get_records_by_range($min_id, $max_id)
066 {
067 $sql = $this->get_records_by_range_query($min_id, $max_id);
068 $result = $this->db->sql_query($sql);
069 $records = $this->db->sql_fetchrowset($result);
070 $this->db->sql_freeresult($result);
071
072 return $records;
073 }
074
075 /**
076 * Generate the query that retrieves all records for given range
077 *
078 * @param integer $min_id Lower bound
079 * @param integer $max_id Upper bound
080 * @return string SQL query
081 */
082 protected function get_records_by_range_query($min_id, $max_id)
083 {
084 $columns = $this->get_columns();
085 $fields = array();
086 foreach ($columns as $field_name => $column_name)
087 {
088 if ($column_name === $field_name)
089 {
090 $fields[] = $column_name;
091 }
092 else
093 {
094 $fields[] = $column_name . ' AS ' . $field_name;
095 }
096 }
097
098 $sql = 'SELECT ' . implode(', ', $fields) . '
099 FROM ' . $this->table . '
100 WHERE ' . $columns['id'] . ' BETWEEN ' . $min_id . ' AND ' . $max_id;
101
102 return $sql;
103 }
104
105 /**
106 * {@inheritdoc}
107 */
108 protected function save_record(array $record)
109 {
110 $columns = $this->get_columns();
111
112 $sql = 'UPDATE ' . $this->table . '
113 SET ' . $columns['text'] . " = '" . $this->db->sql_escape($record['text']) . "'
114 WHERE " . $columns['id'] . ' = ' . $record['id'];
115 $this->db->sql_query($sql);
116 }
117 }
118