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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
migration.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\db\migration;
015
016 /**
017 * Abstract base class for database migrations
018 *
019 * Each migration consists of a set of schema and data changes to be implemented
020 * in a subclass. This class provides various utility methods to simplify editing
021 * a phpBB.
022 */
023 abstract class migration
024 {
025 /** @var \phpbb\config\config */
026 protected $config;
027
028 /** @var \phpbb\db\driver\driver_interface */
029 protected $db;
030
031 /** @var \phpbb\db\tools */
032 protected $db_tools;
033
034 /** @var string */
035 protected $table_prefix;
036
037 /** @var string */
038 protected $phpbb_root_path;
039
040 /** @var string */
041 protected $php_ext;
042
043 /** @var array Errors, if any occurred */
044 protected $errors;
045
046 /** @var array List of queries executed through $this->sql_query() */
047 protected $queries = array();
048
049 /**
050 * Constructor
051 *
052 * @param \phpbb\config\config $config
053 * @param \phpbb\db\driver\driver_interface $db
054 * @param \phpbb\db\tools $db_tools
055 * @param string $phpbb_root_path
056 * @param string $php_ext
057 * @param string $table_prefix
058 */
059 public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\db\tools $db_tools, $phpbb_root_path, $php_ext, $table_prefix)
060 {
061 $this->config = $config;
062 $this->db = $db;
063 $this->db_tools = $db_tools;
064 $this->table_prefix = $table_prefix;
065
066 $this->phpbb_root_path = $phpbb_root_path;
067 $this->php_ext = $php_ext;
068
069 $this->errors = array();
070 }
071
072 /**
073 * Defines other migrations to be applied first
074 *
075 * @return array An array of migration class names
076 */
077 static public function depends_on()
078 {
079 return array();
080 }
081
082 /**
083 * Allows you to check if the migration is effectively installed (entirely optional)
084 *
085 * This is checked when a migration is installed. If true is returned, the migration will be set as
086 * installed without performing the database changes.
087 * This function is intended to help moving to migrations from a previous database updater, where some
088 * migrations may have been installed already even though they are not yet listed in the migrations table.
089 *
090 * @return bool True if this migration is installed, False if this migration is not installed (checked on install)
091 */
092 public function effectively_installed()
093 {
094 return false;
095 }
096
097 /**
098 * Updates the database schema by providing a set of change instructions
099 *
100 * @return array Array of schema changes (compatible with db_tools->perform_schema_changes())
101 */
102 public function update_schema()
103 {
104 return array();
105 }
106
107 /**
108 * Reverts the database schema by providing a set of change instructions
109 *
110 * @return array Array of schema changes (compatible with db_tools->perform_schema_changes())
111 */
112 public function revert_schema()
113 {
114 return array();
115 }
116
117 /**
118 * Updates data by returning a list of instructions to be executed
119 *
120 * @return array Array of data update instructions
121 */
122 public function update_data()
123 {
124 return array();
125 }
126
127 /**
128 * Reverts data by returning a list of instructions to be executed
129 *
130 * @return array Array of data instructions that will be performed on revert
131 * NOTE: calls to tools (such as config.add) are automatically reverted when
132 * possible, so you should not attempt to revert those, this is mostly for
133 * otherwise unrevertable calls (custom functions for example)
134 */
135 public function revert_data()
136 {
137 return array();
138 }
139
140 /**
141 * Wrapper for running queries to generate user feedback on updates
142 *
143 * @param string $sql SQL query to run on the database
144 * @return mixed Query result from db->sql_query()
145 */
146 protected function sql_query($sql)
147 {
148 $this->queries[] = $sql;
149
150 $this->db->sql_return_on_error(true);
151
152 if ($sql === 'begin')
153 {
154 $result = $this->db->sql_transaction('begin');
155 }
156 else if ($sql === 'commit')
157 {
158 $result = $this->db->sql_transaction('commit');
159 }
160 else
161 {
162 $result = $this->db->sql_query($sql);
163 if ($this->db->get_sql_error_triggered())
164 {
165 $this->errors[] = array(
166 'sql' => $this->db->get_sql_error_sql(),
167 'code' => $this->db->get_sql_error_returned(),
168 );
169 }
170 }
171
172 $this->db->sql_return_on_error(false);
173
174 return $result;
175 }
176
177 /**
178 * Get the list of queries run
179 *
180 * @return array
181 */
182 public function get_queries()
183 {
184 return $this->queries;
185 }
186 }
187