Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
CRAP | |
0.00% |
0 / 283 |
| dev | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
756 | |
0.00% |
0 / 283 |
| effectively_installed | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| depends_on | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
| update_schema | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 23 |
|||
| revert_schema | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 19 |
|||
| update_data | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 94 |
|||
| move_customise_modules | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 17 |
|||
| update_ucp_pm_basename | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 11 |
|||
| update_ucp_profile_auth | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| rename_styles_module | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| rename_module_basenames | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 21 |
|||
| add_group_teampage | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
| update_group_legend | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 13 |
|||
| localise_global_announcements | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 61 |
|||
| <?php | |
| /** | |
| * | |
| * This file is part of the phpBB Forum Software package. | |
| * | |
| * @copyright (c) phpBB Limited <https://www.phpbb.com> | |
| * @license GNU General Public License, version 2 (GPL-2.0) | |
| * | |
| * For full copyright and license information, please see | |
| * the docs/CREDITS.txt file. | |
| * | |
| */ | |
| namespace phpbb\db\migration\data\v310; | |
| class dev extends \phpbb\db\migration\container_aware_migration | |
| { | |
| public function effectively_installed() | |
| { | |
| return version_compare($this->config['version'], '3.1.0-dev', '>='); | |
| } | |
| static public function depends_on() | |
| { | |
| return array( | |
| '\phpbb\db\migration\data\v310\extensions', | |
| '\phpbb\db\migration\data\v310\style_update_p2', | |
| '\phpbb\db\migration\data\v310\timezone_p2', | |
| '\phpbb\db\migration\data\v310\reported_posts_display', | |
| '\phpbb\db\migration\data\v310\migrations_table', | |
| ); | |
| } | |
| public function update_schema() | |
| { | |
| return array( | |
| 'add_columns' => array( | |
| $this->table_prefix . 'groups' => array( | |
| 'group_teampage' => array('UINT', 0, 'after' => 'group_legend'), | |
| ), | |
| $this->table_prefix . 'profile_fields' => array( | |
| 'field_show_on_pm' => array('BOOL', 0), | |
| ), | |
| $this->table_prefix . 'styles' => array( | |
| 'style_path' => array('VCHAR:100', ''), | |
| 'bbcode_bitfield' => array('VCHAR:255', 'kNg='), | |
| 'style_parent_id' => array('UINT:4', 0), | |
| 'style_parent_tree' => array('TEXT', ''), | |
| ), | |
| $this->table_prefix . 'reports' => array( | |
| 'reported_post_text' => array('MTEXT_UNI', ''), | |
| 'reported_post_uid' => array('VCHAR:8', ''), | |
| 'reported_post_bitfield' => array('VCHAR:255', ''), | |
| ), | |
| ), | |
| 'change_columns' => array( | |
| $this->table_prefix . 'groups' => array( | |
| 'group_legend' => array('UINT', 0), | |
| ), | |
| ), | |
| ); | |
| } | |
| public function revert_schema() | |
| { | |
| return array( | |
| 'drop_columns' => array( | |
| $this->table_prefix . 'groups' => array( | |
| 'group_teampage', | |
| ), | |
| $this->table_prefix . 'profile_fields' => array( | |
| 'field_show_on_pm', | |
| ), | |
| $this->table_prefix . 'styles' => array( | |
| 'style_path', | |
| 'bbcode_bitfield', | |
| 'style_parent_id', | |
| 'style_parent_tree', | |
| ), | |
| $this->table_prefix . 'reports' => array( | |
| 'reported_post_text', | |
| 'reported_post_uid', | |
| 'reported_post_bitfield', | |
| ), | |
| ), | |
| ); | |
| } | |
| public function update_data() | |
| { | |
| return array( | |
| array('if', array( | |
| (strpos('phpbb_search_', $this->config['search_type']) !== 0), | |
| array('config.update', array('search_type', 'phpbb_search_' . $this->config['search_type'])), | |
| )), | |
| array('config.add', array('fulltext_postgres_ts_name', 'simple')), | |
| array('config.add', array('fulltext_postgres_min_word_len', 4)), | |
| array('config.add', array('fulltext_postgres_max_word_len', 254)), | |
| array('config.add', array('fulltext_sphinx_stopwords', 0)), | |
| array('config.add', array('fulltext_sphinx_indexer_mem_limit', 512)), | |
| array('config.add', array('load_jquery_cdn', 0)), | |
| array('config.add', array('load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js')), | |
| array('config.add', array('use_system_cron', 0)), | |
| array('config.add', array('legend_sort_groupname', 0)), | |
| array('config.add', array('teampage_forums', 1)), | |
| array('config.add', array('teampage_memberships', 1)), | |
| array('config.add', array('load_cpf_pm', 0)), | |
| array('config.add', array('display_last_subject', 1)), | |
| array('config.add', array('assets_version', 1)), | |
| array('config.add', array('site_home_url', '')), | |
| array('config.add', array('site_home_text', '')), | |
| array('permission.add', array('u_chgprofileinfo', true, 'u_sig')), | |
| array('module.add', array( | |
| 'acp', | |
| 'ACP_GROUPS', | |
| array( | |
| 'module_basename' => 'acp_groups', | |
| 'module_langname' => 'ACP_GROUPS_POSITION', | |
| 'module_mode' => 'position', | |
| 'module_auth' => 'acl_a_group', | |
| ), | |
| )), | |
| array('module.add', array( | |
| 'acp', | |
| 'ACP_ATTACHMENTS', | |
| array( | |
| 'module_basename' => 'acp_attachments', | |
| 'module_langname' => 'ACP_MANAGE_ATTACHMENTS', | |
| 'module_mode' => 'manage', | |
| 'module_auth' => 'acl_a_attach', | |
| ), | |
| )), | |
| array('module.add', array( | |
| 'acp', | |
| 'ACP_STYLE_MANAGEMENT', | |
| array( | |
| 'module_basename' => 'acp_styles', | |
| 'module_langname' => 'ACP_STYLES_INSTALL', | |
| 'module_mode' => 'install', | |
| 'module_auth' => 'acl_a_styles', | |
| ), | |
| )), | |
| array('module.add', array( | |
| 'acp', | |
| 'ACP_STYLE_MANAGEMENT', | |
| array( | |
| 'module_basename' => 'acp_styles', | |
| 'module_langname' => 'ACP_STYLES_CACHE', | |
| 'module_mode' => 'cache', | |
| 'module_auth' => 'acl_a_styles', | |
| ), | |
| )), | |
| array('module.add', array( | |
| 'ucp', | |
| 'UCP_PROFILE', | |
| array( | |
| 'module_basename' => 'ucp_profile', | |
| 'module_langname' => 'UCP_PROFILE_AUTOLOGIN_KEYS', | |
| 'module_mode' => 'autologin_keys', | |
| ), | |
| )), | |
| // Module will be renamed later | |
| array('module.add', array( | |
| 'acp', | |
| 'ACP_CAT_STYLES', | |
| 'ACP_LANGUAGE' | |
| )), | |
| array('module.remove', array( | |
| 'acp', | |
| false, | |
| 'ACP_TEMPLATES', | |
| )), | |
| array('module.remove', array( | |
| 'acp', | |
| false, | |
| 'ACP_THEMES', | |
| )), | |
| array('module.remove', array( | |
| 'acp', | |
| false, | |
| 'ACP_IMAGESETS', | |
| )), | |
| array('custom', array(array($this, 'rename_module_basenames'))), | |
| array('custom', array(array($this, 'rename_styles_module'))), | |
| array('custom', array(array($this, 'add_group_teampage'))), | |
| array('custom', array(array($this, 'update_group_legend'))), | |
| array('custom', array(array($this, 'localise_global_announcements'))), | |
| array('custom', array(array($this, 'update_ucp_pm_basename'))), | |
| array('custom', array(array($this, 'update_ucp_profile_auth'))), | |
| array('custom', array(array($this, 'move_customise_modules'))), | |
| array('config.update', array('version', '3.1.0-dev')), | |
| ); | |
| } | |
| public function move_customise_modules() | |
| { | |
| // Move language management to new location in the Customise tab | |
| // First get language module id | |
| $sql = 'SELECT module_id FROM ' . MODULES_TABLE . " | |
| WHERE module_basename = 'acp_language'"; | |
| $result = $this->db->sql_query($sql); | |
| $language_module_id = $this->db->sql_fetchfield('module_id'); | |
| $this->db->sql_freeresult($result); | |
| // Next get language management module id of the one just created | |
| $sql = 'SELECT module_id FROM ' . MODULES_TABLE . " | |
| WHERE module_langname = 'ACP_LANGUAGE'"; | |
| $result = $this->db->sql_query($sql); | |
| $language_management_module_id = $this->db->sql_fetchfield('module_id'); | |
| $this->db->sql_freeresult($result); | |
| // acp_modules calls adm_back_link, which is undefined at this point | |
| if (!function_exists('adm_back_link')) | |
| { | |
| include($this->phpbb_root_path . 'includes/functions_acp.' . $this->php_ext); | |
| } | |
| $module_manager = $this->container->get('module.manager'); | |
| $module_manager->move_module($language_module_id, $language_management_module_id, 'acp'); | |
| } | |
| public function update_ucp_pm_basename() | |
| { | |
| $sql = 'SELECT module_id, module_basename | |
| FROM ' . MODULES_TABLE . " | |
| WHERE module_basename <> 'ucp_pm' AND | |
| module_langname='UCP_PM'"; | |
| $result = $this->db->sql_query_limit($sql, 1); | |
| if ($row = $this->db->sql_fetchrow($result)) | |
| { | |
| // This update is still not applied. Applying it | |
| $sql = 'UPDATE ' . MODULES_TABLE . " | |
| SET module_basename = 'ucp_pm' | |
| WHERE module_id = " . (int) $row['module_id']; | |
| $this->sql_query($sql); | |
| } | |
| $this->db->sql_freeresult($result); | |
| } | |
| public function update_ucp_profile_auth() | |
| { | |
| // Update the auth setting for the module | |
| $sql = 'UPDATE ' . MODULES_TABLE . " | |
| SET module_auth = 'acl_u_chgprofileinfo' | |
| WHERE module_class = 'ucp' | |
| AND module_basename = 'ucp_profile' | |
| AND module_mode = 'profile_info'"; | |
| $this->sql_query($sql); | |
| } | |
| public function rename_styles_module() | |
| { | |
| // Rename styles module to Customise | |
| $sql = 'UPDATE ' . MODULES_TABLE . " | |
| SET module_langname = 'ACP_CAT_CUSTOMISE' | |
| WHERE module_langname = 'ACP_CAT_STYLES'"; | |
| $this->sql_query($sql); | |
| } | |
| public function rename_module_basenames() | |
| { | |
| // rename all module basenames to full classname | |
| $sql = 'SELECT module_id, module_basename, module_class | |
| FROM ' . MODULES_TABLE; | |
| $result = $this->db->sql_query($sql); | |
| while ($row = $this->db->sql_fetchrow($result)) | |
| { | |
| $module_id = (int) $row['module_id']; | |
| unset($row['module_id']); | |
| if (!empty($row['module_basename']) && !empty($row['module_class'])) | |
| { | |
| // all the class names start with class name or with phpbb_ for auto loading | |
| if (strpos($row['module_basename'], $row['module_class'] . '_') !== 0 && | |
| strpos($row['module_basename'], 'phpbb_') !== 0) | |
| { | |
| $row['module_basename'] = $row['module_class'] . '_' . $row['module_basename']; | |
| $sql_update = $this->db->sql_build_array('UPDATE', $row); | |
| $sql = 'UPDATE ' . MODULES_TABLE . ' | |
| SET ' . $sql_update . ' | |
| WHERE module_id = ' . $module_id; | |
| $this->sql_query($sql); | |
| } | |
| } | |
| } | |
| $this->db->sql_freeresult($result); | |
| } | |
| public function add_group_teampage() | |
| { | |
| $sql = 'UPDATE ' . GROUPS_TABLE . ' | |
| SET group_teampage = 1 | |
| WHERE group_type = ' . GROUP_SPECIAL . " | |
| AND group_name = 'ADMINISTRATORS'"; | |
| $this->sql_query($sql); | |
| $sql = 'UPDATE ' . GROUPS_TABLE . ' | |
| SET group_teampage = 2 | |
| WHERE group_type = ' . GROUP_SPECIAL . " | |
| AND group_name = 'GLOBAL_MODERATORS'"; | |
| $this->sql_query($sql); | |
| } | |
| public function update_group_legend() | |
| { | |
| $sql = 'SELECT group_id | |
| FROM ' . GROUPS_TABLE . ' | |
| WHERE group_legend = 1 | |
| ORDER BY group_name ASC'; | |
| $result = $this->db->sql_query($sql); | |
| $next_legend = 1; | |
| while ($row = $this->db->sql_fetchrow($result)) | |
| { | |
| $sql = 'UPDATE ' . GROUPS_TABLE . ' | |
| SET group_legend = ' . $next_legend . ' | |
| WHERE group_id = ' . (int) $row['group_id']; | |
| $this->sql_query($sql); | |
| $next_legend++; | |
| } | |
| $this->db->sql_freeresult($result); | |
| } | |
| public function localise_global_announcements() | |
| { | |
| // Localise Global Announcements | |
| $sql = 'SELECT topic_id, topic_approved, (topic_replies + 1) AS topic_posts, topic_last_post_id, topic_last_post_subject, topic_last_post_time, topic_last_poster_id, topic_last_poster_name, topic_last_poster_colour | |
| FROM ' . TOPICS_TABLE . ' | |
| WHERE forum_id = 0 | |
| AND topic_type = ' . POST_GLOBAL; | |
| $result = $this->db->sql_query($sql); | |
| $global_announcements = $update_lastpost_data = array(); | |
| $update_lastpost_data['forum_last_post_time'] = 0; | |
| $update_forum_data = array( | |
| 'forum_posts' => 0, | |
| 'forum_topics' => 0, | |
| 'forum_topics_real' => 0, | |
| ); | |
| while ($row = $this->db->sql_fetchrow($result)) | |
| { | |
| $global_announcements[] = (int) $row['topic_id']; | |
| $update_forum_data['forum_posts'] += (int) $row['topic_posts']; | |
| $update_forum_data['forum_topics_real']++; | |
| if ($row['topic_approved']) | |
| { | |
| $update_forum_data['forum_topics']++; | |
| } | |
| if ($update_lastpost_data['forum_last_post_time'] < $row['topic_last_post_time']) | |
| { | |
| $update_lastpost_data = array( | |
| 'forum_last_post_id' => (int) $row['topic_last_post_id'], | |
| 'forum_last_post_subject' => $row['topic_last_post_subject'], | |
| 'forum_last_post_time' => (int) $row['topic_last_post_time'], | |
| 'forum_last_poster_id' => (int) $row['topic_last_poster_id'], | |
| 'forum_last_poster_name' => $row['topic_last_poster_name'], | |
| 'forum_last_poster_colour' => $row['topic_last_poster_colour'], | |
| ); | |
| } | |
| } | |
| $this->db->sql_freeresult($result); | |
| if (!empty($global_announcements)) | |
| { | |
| // Update the post/topic-count for the forum and the last-post if needed | |
| $sql = 'SELECT forum_id | |
| FROM ' . FORUMS_TABLE . ' | |
| WHERE forum_type = ' . FORUM_POST; | |
| $result = $this->db->sql_query_limit($sql, 1); | |
| $ga_forum_id = $this->db->sql_fetchfield('forum_id'); | |
| $this->db->sql_freeresult($result); | |
| $sql = 'SELECT forum_last_post_time | |
| FROM ' . FORUMS_TABLE . ' | |
| WHERE forum_id = ' . $ga_forum_id; | |
| $result = $this->db->sql_query($sql); | |
| $lastpost = (int) $this->db->sql_fetchfield('forum_last_post_time'); | |
| $this->db->sql_freeresult($result); | |
| $sql_update = 'forum_posts = forum_posts + ' . $update_forum_data['forum_posts'] . ', '; | |
| $sql_update .= 'forum_topics_real = forum_topics_real + ' . $update_forum_data['forum_topics_real'] . ', '; | |
| $sql_update .= 'forum_topics = forum_topics + ' . $update_forum_data['forum_topics']; | |
| if ($lastpost < $update_lastpost_data['forum_last_post_time']) | |
| { | |
| $sql_update .= ', ' . $this->db->sql_build_array('UPDATE', $update_lastpost_data); | |
| } | |
| $sql = 'UPDATE ' . FORUMS_TABLE . ' | |
| SET ' . $sql_update . ' | |
| WHERE forum_id = ' . $ga_forum_id; | |
| $this->sql_query($sql); | |
| // Update some forum_ids | |
| $table_ary = array(TOPICS_TABLE, POSTS_TABLE, LOG_TABLE, DRAFTS_TABLE, TOPICS_TRACK_TABLE); | |
| foreach ($table_ary as $table) | |
| { | |
| $sql = "UPDATE $table | |
| SET forum_id = $ga_forum_id | |
| WHERE " . $this->db->sql_in_set('topic_id', $global_announcements); | |
| $this->sql_query($sql); | |
| } | |
| unset($table_ary); | |
| } | |
| } | |
| } |