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 |
release_3_0_8_rc1.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\data\v30x;
015
016 class release_3_0_8_rc1 extends \phpbb\db\migration\migration
017 {
018 public function effectively_installed()
019 {
020 return phpbb_version_compare($this->config['version'], '3.0.8-RC1', '>=');
021 }
022
023 static public function depends_on()
024 {
025 return array('\phpbb\db\migration\data\v30x\release_3_0_7_pl1');
026 }
027
028 public function update_data()
029 {
030 return array(
031 array('custom', array(array(&$this, 'update_file_extension_group_names'))),
032 array('custom', array(array(&$this, 'update_module_auth'))),
033 array('custom', array(array(&$this, 'delete_orphan_shadow_topics'))),
034 array('module.add', array(
035 'acp',
036 'ACP_MESSAGES',
037 array(
038 'module_basename' => 'acp_board',
039 'modes' => array('post'),
040 ),
041 )),
042 array('config.add', array('load_unreads_search', 1)),
043 array('config.update_if_equals', array(600, 'queue_interval', 60)),
044 array('config.update_if_equals', array(50, 'email_package_size', 20)),
045
046 array('config.update', array('version', '3.0.8-RC1')),
047 );
048 }
049
050 public function update_file_extension_group_names()
051 {
052 // Update file extension group names to use language strings.
053 $sql = 'SELECT lang_dir
054 FROM ' . LANG_TABLE;
055 $result = $this->db->sql_query($sql);
056
057 $extension_groups_updated = array();
058 while ($lang_dir = $this->db->sql_fetchfield('lang_dir'))
059 {
060 $lang_dir = basename($lang_dir);
061
062 // The language strings we need are either in language/.../acp/attachments.php
063 // in the update package if we're updating to 3.0.8-RC1 or later,
064 // or they are in language/.../install.php when we're updating from 3.0.7-PL1 or earlier.
065 // On an already updated board, they can also already be in language/.../acp/attachments.php
066 // in the board root.
067 $lang_files = array(
068 "{$this->phpbb_root_path}install/update/new/language/$lang_dir/acp/attachments.{$this->php_ext}",
069 "{$this->phpbb_root_path}language/$lang_dir/install.{$this->php_ext}",
070 "{$this->phpbb_root_path}language/$lang_dir/acp/attachments.{$this->php_ext}",
071 );
072
073 foreach ($lang_files as $lang_file)
074 {
075 if (!file_exists($lang_file))
076 {
077 continue;
078 }
079
080 $lang = array();
081 include($lang_file);
082
083 foreach($lang as $lang_key => $lang_val)
084 {
085 if (isset($extension_groups_updated[$lang_key]) || strpos($lang_key, 'EXT_GROUP_') !== 0)
086 {
087 continue;
088 }
089
090 $sql_ary = array(
091 'group_name' => substr($lang_key, 10), // Strip off 'EXT_GROUP_'
092 );
093
094 $sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . '
095 SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . "
096 WHERE group_name = '" . $this->db->sql_escape($lang_val) . "'";
097 $this->sql_query($sql);
098
099 $extension_groups_updated[$lang_key] = true;
100 }
101 }
102 }
103 $this->db->sql_freeresult($result);
104 }
105
106 public function update_module_auth()
107 {
108 $sql = 'UPDATE ' . MODULES_TABLE . '
109 SET module_auth = \'cfg_allow_avatar && (cfg_allow_avatar_local || cfg_allow_avatar_remote || cfg_allow_avatar_upload || cfg_allow_avatar_remote_upload)\'
110 WHERE module_class = \'ucp\'
111 AND module_basename = \'profile\'
112 AND module_mode = \'avatar\'';
113 $this->sql_query($sql);
114 }
115
116 public function delete_orphan_shadow_topics()
117 {
118 // Delete shadow topics pointing to not existing topics
119 $batch_size = 500;
120
121 // Set of affected forums we have to resync
122 $sync_forum_ids = array();
123
124 $sql_array = array(
125 'SELECT' => 't1.topic_id, t1.forum_id',
126 'FROM' => array(
127 TOPICS_TABLE => 't1',
128 ),
129 'LEFT_JOIN' => array(
130 array(
131 'FROM' => array(TOPICS_TABLE => 't2'),
132 'ON' => 't1.topic_moved_id = t2.topic_id',
133 ),
134 ),
135 'WHERE' => 't1.topic_moved_id <> 0
136 AND t2.topic_id IS NULL',
137 );
138 $sql = $this->db->sql_build_query('SELECT', $sql_array);
139 $result = $this->db->sql_query_limit($sql, $batch_size);
140
141 $topic_ids = array();
142 while ($row = $this->db->sql_fetchrow($result))
143 {
144 $topic_ids[] = (int) $row['topic_id'];
145
146 $sync_forum_ids[(int) $row['forum_id']] = (int) $row['forum_id'];
147 }
148 $this->db->sql_freeresult($result);
149
150 if (!empty($topic_ids))
151 {
152 $sql = 'DELETE FROM ' . TOPICS_TABLE . '
153 WHERE ' . $this->db->sql_in_set('topic_id', $topic_ids);
154 $this->db->sql_query($sql);
155
156 // Sync the forums we have deleted shadow topics from.
157 sync('forum', 'forum_id', $sync_forum_ids, true, true);
158
159 return false;
160 }
161 }
162 }
163