mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge pull request #2615 from Dragooon/ticket/12730
[ticket/12730] Add Google+ profile field * Dragooon/ticket/12730: [ticket/12730] Update Google+ button class to use proper identification [ticket/12730] Update maxlen for type_googleplus to 255 [ticket/12730] Fix type_googleplus_test to use same validation rule as the field [ticket/12730] Update field_length to be 20 by default for Google+ [ticket/12730] Google+ field_order should be 13 [ticket/12730] Switch service name to googleplus for type_googleplus [ticket/12730] Restore field_length to 10 for type_googleplus [ticket/12730] Add functional test for Google+ field [ticket/12730] Value shouldn't be escaped for schema_data.sql [ticket/12730] Missing newline at type_googleplus_test.php [ticket/12730] Set field_active to 1 for Google+ field [ticket/12730] Add unit test for type_googleplus [ticket/12730] Add missing brackets to type_googleplus.php [ticket/12730] Update field_order for Google+ CPF [ticket/12730] Use string template for Google+ CPF instead of a new one [ticket/12730] Minor formatting fixes [ticket/12730] Incorrect indentation for type_googleplus [ticket/12730] Spaces in block header [ticket/12730] Add a Google+ field by default [ticket/12730] Add Google+ profile field type
This commit is contained in:
commit
7afc13b4db
11 changed files with 200 additions and 1 deletions
|
@ -55,6 +55,15 @@ 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:
|
||||
|
|
|
@ -2104,6 +2104,10 @@
|
|||
"VCHAR",
|
||||
""
|
||||
],
|
||||
"pf_phpbb_googleplus": [
|
||||
"VCHAR",
|
||||
""
|
||||
],
|
||||
"pf_phpbb_interests": [
|
||||
"MTEXT",
|
||||
""
|
||||
|
|
|
@ -810,6 +810,7 @@ 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('post', 0, 2, '');
|
||||
|
|
|
@ -93,6 +93,7 @@ $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.',
|
||||
|
|
|
@ -284,6 +284,7 @@ $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',
|
||||
|
|
|
@ -148,4 +148,5 @@ $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',
|
||||
));
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?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 profilefield_googleplus extends \phpbb\db\migration\profilefield_base_migration
|
||||
{
|
||||
static public function depends_on()
|
||||
{
|
||||
return array(
|
||||
'\phpbb\db\migration\data\v310\profilefield_types',
|
||||
'\phpbb\db\migration\data\v310\profilefield_show_novalue',
|
||||
);
|
||||
}
|
||||
|
||||
public function update_data()
|
||||
{
|
||||
return array(
|
||||
array('custom', array(array($this, 'create_custom_field'))),
|
||||
);
|
||||
}
|
||||
|
||||
protected $profilefield_name = 'phpbb_googleplus';
|
||||
|
||||
protected $profilefield_database_type = array('VCHAR', '');
|
||||
|
||||
protected $profilefield_data = array(
|
||||
'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' => '[\w]+',
|
||||
'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',
|
||||
);
|
||||
}
|
58
phpBB/phpbb/profilefields/type/type_googleplus.php
Normal file
58
phpBB/phpbb/profilefields/type/type_googleplus.php
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?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_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' => '[\w]+',
|
||||
'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;
|
||||
}
|
||||
}
|
|
@ -143,7 +143,7 @@ ul.linklist.bulletin li.small-icon:before {
|
|||
.phpbb_website-icon { background-position: -40px 0; }
|
||||
.phpbb_youtube-icon { background-position: -98px 0; }
|
||||
.phpbb_facebook-icon { background-position: -119px 0; }
|
||||
.phpbb_google_plus-icon { background-position: -140px 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; }
|
||||
|
|
|
@ -26,6 +26,7 @@ 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',
|
||||
|
@ -39,6 +40,7 @@ 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());
|
||||
|
|
62
tests/profilefields/type_googleplus_test.php
Normal file
62
tests/profilefields/type_googleplus_test.php
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?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
|
||||
{
|
||||
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)
|
||||
{
|
||||
$user = $this->getMock('\phpbb\user');
|
||||
$request = $this->getMock('\phpbb\request\request');
|
||||
$template = $this->getMock('\phpbb\template\template');
|
||||
|
||||
$field = new \phpbb\profilefields\type\type_googleplus(
|
||||
$request,
|
||||
$template,
|
||||
$user
|
||||
);
|
||||
|
||||
$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, $field->get_profile_contact_value($value, $field_options), $description);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue