From 43e3b3e328d8a989a3e2fef2b7e3a73ed4e684d8 Mon Sep 17 00:00:00 2001 From: Alfredo Ramos <alfredo.ramos.sanchez@gmail.com> Date: Tue, 24 Mar 2020 22:16:51 -0600 Subject: [PATCH] [ticket/16315] Remove Google+ profile field PHPBB3-16315 --- .../container/services_profilefield.yml | 9 -- phpBB/install/schemas/schema_data.sql | 1 - phpBB/language/en/acp/profile.php | 1 - phpBB/language/en/common.php | 1 - phpBB/language/en/memberlist.php | 1 - .../data/v33x/profilefield_cleanup.php | 82 ++++++++++++++++ .../profilefields/type/type_googleplus.php | 66 ------------- phpBB/styles/prosilver/theme/colours.css | 1 - tests/functional/ucp_profile_test.php | 2 - tests/profilefields/type_googleplus_test.php | 96 ------------------- 10 files changed, 82 insertions(+), 178 deletions(-) create mode 100644 phpBB/phpbb/db/migration/data/v33x/profilefield_cleanup.php delete mode 100644 phpBB/phpbb/profilefields/type/type_googleplus.php delete mode 100644 tests/profilefields/type_googleplus_test.php diff --git a/phpBB/config/default/container/services_profilefield.yml b/phpBB/config/default/container/services_profilefield.yml index 90b22836e5..157538bc5d 100644 --- a/phpBB/config/default/container/services_profilefield.yml +++ b/phpBB/config/default/container/services_profilefield.yml @@ -56,15 +56,6 @@ services: tags: - { name: profilefield.type } - profilefields.type.googleplus: - class: phpbb\profilefields\type\type_googleplus - arguments: - - '@request' - - '@template' - - '@user' - tags: - - { name: profilefield.type } - profilefields.type.int: class: phpbb\profilefields\type\type_int arguments: diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 1cc17f29b5..ef61bb4daf 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -800,7 +800,6 @@ INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_len INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_twitter', 'profilefields.type.string', 'phpbb_twitter', '20', '1', '15', '', '', '[\w_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 10, 1, 'VIEW_TWITTER_PROFILE', 'http://twitter.com/%s'); INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_skype', 'profilefields.type.string', 'phpbb_skype', '20', '6', '32', '', '', '[a-zA-Z][\w\.,\-_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 11, 1, 'VIEW_SKYPE_PROFILE', 'skype:%s?userinfo'); INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_youtube', 'profilefields.type.string', 'phpbb_youtube', '20', '3', '60', '', '', '[a-zA-Z][\w\.,\-_]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 12, 1, 'VIEW_YOUTUBE_CHANNEL', 'http://youtube.com/user/%s'); -INSERT INTO phpbb_profile_fields (field_name, field_type, field_ident, field_length, field_minlen, field_maxlen, field_novalue, field_default_value, field_validation, field_required, field_show_novalue, field_show_on_reg, field_show_on_pm, field_show_on_vt, field_show_on_ml, field_show_profile, field_hide, field_no_view, field_active, field_order, field_is_contact, field_contact_desc, field_contact_url) VALUES ('phpbb_googleplus', 'profilefields.type.googleplus', 'phpbb_googleplus', '20', '3', '255', '', '', '[\w]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 13, 1, 'VIEW_GOOGLEPLUS_PROFILE', 'http://plus.google.com/%s'); # User Notification Options (for first user) INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('notification.type.post', 0, 2, 'notification.method.board'); diff --git a/phpBB/language/en/acp/profile.php b/phpBB/language/en/acp/profile.php index 87c950581e..579235c912 100644 --- a/phpBB/language/en/acp/profile.php +++ b/phpBB/language/en/acp/profile.php @@ -93,7 +93,6 @@ $lang = array_merge($lang, array( 'FIELD_DESCRIPTION' => 'Field description', 'FIELD_DESCRIPTION_EXPLAIN' => 'The explanation for this field presented to the user.', 'FIELD_DROPDOWN' => 'Dropdown box', - 'FIELD_GOOGLEPLUS' => 'Google+', 'FIELD_IDENT' => 'Field identification', 'FIELD_IDENT_ALREADY_EXIST' => 'The chosen field identification already exist. Please choose another name.', 'FIELD_IDENT_EXPLAIN' => 'The field identification is a name to identify the profile field within the database and the templates.', diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 80fda1b3a2..44c37c26fb 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -311,7 +311,6 @@ $lang = array_merge($lang, array( 'GB' => 'GB', 'GIB' => 'GiB', 'GO' => 'Go', - 'GOOGLEPLUS' => 'Google+', 'GOTO_FIRST_POST' => 'Go to first post', 'GOTO_LAST_POST' => 'Go to last post', 'GOTO_PAGE' => 'Go to page', diff --git a/phpBB/language/en/memberlist.php b/phpBB/language/en/memberlist.php index c7b2bf55d1..cb48184e55 100644 --- a/phpBB/language/en/memberlist.php +++ b/phpBB/language/en/memberlist.php @@ -150,5 +150,4 @@ $lang = array_merge($lang, array( 'VIEW_SKYPE_PROFILE' => 'View Skype Profile', 'VIEW_TWITTER_PROFILE' => 'View Twitter Profile', 'VIEW_YOUTUBE_CHANNEL' => 'View YouTube Channel', - 'VIEW_GOOGLEPLUS_PROFILE' => 'View Google+ Profile', )); diff --git a/phpBB/phpbb/db/migration/data/v33x/profilefield_cleanup.php b/phpBB/phpbb/db/migration/data/v33x/profilefield_cleanup.php new file mode 100644 index 0000000000..0e580fbbef --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v33x/profilefield_cleanup.php @@ -0,0 +1,82 @@ +<?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\v33x; + +class profilefield_cleanup extends \phpbb\db\migration\profilefield_base_migration +{ + protected $profilefield_name = 'phpbb_googleplus'; + protected $profilefield_database_type = ['VCHAR', '']; + protected $profilefield_data = [ + 'field_name' => 'phpbb_googleplus', + 'field_type' => 'profilefields.type.googleplus', + 'field_ident' => 'phpbb_googleplus', + 'field_length' => '20', + 'field_minlen' => '3', + 'field_maxlen' => '255', + 'field_novalue' => '', + 'field_default_value' => '', + 'field_validation' => '(?:(?!\.{2,})([^<>=+]))+', + 'field_required' => 0, + 'field_show_novalue' => 0, + 'field_show_on_reg' => 0, + 'field_show_on_pm' => 1, + 'field_show_on_vt' => 1, + 'field_show_profile' => 1, + 'field_hide' => 0, + 'field_no_view' => 0, + 'field_active' => 1, + 'field_is_contact' => 1, + 'field_contact_desc' => 'VIEW_GOOGLEPLUS_PROFILE', + 'field_contact_url' => 'http://plus.google.com/%s' + ]; + + static public function depends_on() + { + return ['\phpbb\db\migration\data\v330\v330']; + } + + public function effectively_installed() + { + $sql = 'SELECT field_id + FROM ' . $this->table_prefix . 'profile_fields + WHERE ' . $this->db->sql_build_array('SELECT', ['field_name' => $this->profilefield_name]); + $result = $this->db->sql_query($sql); + $profile_field = (bool) $this->db->sql_fetchfield('field_id'); + $this->db->sql_freeresult($result); + + $profile_field_data = $this->db_tools->sql_column_exists($this->table_prefix . 'profile_fields_data', 'pf_' . $this->profilefield_name); + + return (!$profile_field && !$profile_field_data); + } + + public function update_schema() + { + return parent::revert_schema(); + } + + public function revert_schema() + { + return []; + } + + public function update_data() + { + return parent::revert_data(); + } + + public function revert_data() + { + return []; + } +} diff --git a/phpBB/phpbb/profilefields/type/type_googleplus.php b/phpBB/phpbb/profilefields/type/type_googleplus.php deleted file mode 100644 index e6729b1935..0000000000 --- a/phpBB/phpbb/profilefields/type/type_googleplus.php +++ /dev/null @@ -1,66 +0,0 @@ -<?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\profilefields\type; - -class type_googleplus extends type_string -{ - /** - * {@inheritDoc} - */ - public function get_name() - { - return $this->user->lang('FIELD_GOOGLEPLUS'); - } - - /** - * {@inheritDoc} - */ - public function get_service_name() - { - return 'profilefields.type.googleplus'; - } - - /** - * {@inheritDoc} - */ - public function get_default_option_values() - { - return array( - 'field_length' => 20, - 'field_minlen' => 3, - 'field_maxlen' => 255, - 'field_validation' => '(?:(?!\.{2,})([^<>=+]))+', - 'field_novalue' => '', - 'field_default_value' => '', - ); - } - - /** - * {@inheritDoc} - */ - public function get_profile_contact_value($field_value, $field_data) - { - if (!$field_value && !$field_data['field_show_novalue']) - { - return null; - } - - if (!is_numeric($field_value)) - { - $field_value = '+' . $field_value; - } - - return $field_value; - } -} diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 04a895873c..7b82239817 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -692,7 +692,6 @@ Colours and backgrounds for buttons.css .phpbb_website-icon { background-position: -40px 0; } .phpbb_youtube-icon { background-position: -98px 0; } .phpbb_facebook-icon { background-position: -119px 0; } -.phpbb_googleplus-icon { background-position: -140px 0; } .phpbb_skype-icon { background-position: -161px 0; } .phpbb_twitter-icon { background-position: -203px 0; } .phpbb_yahoo-icon { background-position: -224px 0; } diff --git a/tests/functional/ucp_profile_test.php b/tests/functional/ucp_profile_test.php index e7abba9255..2d68704162 100644 --- a/tests/functional/ucp_profile_test.php +++ b/tests/functional/ucp_profile_test.php @@ -26,7 +26,6 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case $form = $crawler->selectButton('Submit')->form(array( 'pf_phpbb_facebook' => 'phpbb', - 'pf_phpbb_googleplus' => 'phpbb', 'pf_phpbb_location' => 'Bertie´s Empire', 'pf_phpbb_skype' => 'phpbb.skype.account', 'pf_phpbb_twitter' => 'phpbb_twitter', @@ -40,7 +39,6 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case $form = $crawler->selectButton('Submit')->form(); $this->assertEquals('phpbb', $form->get('pf_phpbb_facebook')->getValue()); - $this->assertEquals('phpbb', $form->get('pf_phpbb_googleplus')->getValue()); $this->assertEquals('Bertie´s Empire', $form->get('pf_phpbb_location')->getValue()); $this->assertEquals('phpbb.skype.account', $form->get('pf_phpbb_skype')->getValue()); $this->assertEquals('phpbb_twitter', $form->get('pf_phpbb_twitter')->getValue()); diff --git a/tests/profilefields/type_googleplus_test.php b/tests/profilefields/type_googleplus_test.php deleted file mode 100644 index a5f934ea17..0000000000 --- a/tests/profilefields/type_googleplus_test.php +++ /dev/null @@ -1,96 +0,0 @@ -<?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. -* -*/ - -class phpbb_profilefield_type_googleplus_test extends phpbb_test_case -{ - protected $field; - - public function setUp(): void - { - parent::setUp(); - - global $phpbb_root_path, $phpEx; - - $lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx); - $lang = new \phpbb\language\language($lang_loader); - $user = new \phpbb\user($lang, '\phpbb\datetime'); - $user->add_lang('ucp'); - $request = $this->createMock('\phpbb\request\request'); - $template = $this->createMock('\phpbb\template\template'); - - $this->field = new \phpbb\profilefields\type\type_googleplus( - $request, - $template, - $user - ); - } - public function get_profile_contact_value_data() - { - return array( - array( - '112010191010100', - array(), - '112010191010100', - 'Field should return a numerical Google+ ID as is', - ), - array( - 'TestUsername', - array(), - '+TestUsername', - 'Field should return a string Google+ ID with a + prefixed', - ), - ); - } - - /** - * @dataProvider get_profile_contact_value_data - */ - public function test_get_profile_contact_value($value, $field_options, $expected, $description) - { - $default_field_options = array( - 'field_type' => '\phpbb\profilefields\type\type_googleplus', - 'field_name' => 'field', - 'field_id' => 1, - 'lang_id' => 1, - 'lang_name' => 'field', - 'field_required' => false, - 'field_validation' => '[\w]+', - ); - $field_options = array_merge($default_field_options, $field_options); - - $this->assertSame($expected, $this->field->get_profile_contact_value($value, $field_options), $description); - } - - public function data_validate_googleplus() - { - return array( - array('foobar', false), - array('2342340929304', false), - array('foo<bar', 'The field “googleplus” has invalid characters.'), - array('klkd.klkl', false), - array('kl+', 'The field “googleplus” has invalid characters.'), - array('foo=bar', 'The field “googleplus” has invalid characters.'), - array('..foo', 'The field “googleplus” has invalid characters.'), - array('foo..bar', 'The field “googleplus” has invalid characters.'), - ); - } - - /** - * @dataProvider data_validate_googleplus - */ - public function test_validate_googleplus($input, $expected) - { - $field_data = array_merge(array('lang_name' => 'googleplus'), $this->field->get_default_option_values()); - $this->assertSame($expected, $this->field->validate_string_profile_field('string', $input, $field_data)); - } -}