Merge branch 'develop-ascraeus' into develop

* develop-ascraeus: (30 commits)
  [ticket/12732] Update schema.json for Skype
  [ticket/12729] Add functional test for Facebook field
  [ticket/12731] Add functional test for youtube field
  [ticket/12732] Add functional test for Skype profile field
  [ticket/12733] Add functional test for twitter profile field
  [ticket/12730] Values needn't be escaped for schema_data.sql
  [ticket/12733] Values needn't be escaped for schema_data.sql
  [ticket/12732] Values shouldn't be escaped for schema_data.sql
  [ticket/12731] Set field_active to 1 for YouTube field
  [ticket/12731] Add YouTube custom profile field
  [ticket/12733] Set field_active to 1 for Twitter
  [ticket/12733] Convert spaces to tabs
  [ticket/12733] Fix spacing for block header in profilefield_twitter.php
  [ticket/12733] Update schema.json
  [ticket/12733] Add Twitter custom profile field
  [ticket/12732] Set field_active to 1 for Skype's field
  [ticket/12729] Set field_active as 1 for Facebook profile field
  [ticket/12729] Add unit test for ALPHA_DOTS validation
  [ticket/12729] Move ALPHA_DOTS to above ALPHA_SPACERS
  [ticket/12729] Convert spaces to tabs
  ...
This commit is contained in:
Joas Schilling 2014-06-20 23:43:31 +02:00
commit 9ac237a899
12 changed files with 306 additions and 0 deletions

View file

@ -2088,6 +2088,22 @@
"UINT", "UINT",
0 0
], ],
"pf_phpbb_skype": [
"VCHAR",
""
],
"pf_phpbb_twitter": [
"VCHAR",
""
],
"pf_phpbb_youtube": [
"VCHAR",
""
],
"pf_phpbb_facebook": [
"VCHAR",
""
],
"pf_phpbb_interests": [ "pf_phpbb_interests": [
"MTEXT", "MTEXT",
"" ""

View file

@ -806,6 +806,10 @@ 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_icq', 'profilefields.type.string', 'phpbb_icq', '20', '3', '15', '', '', '[0-9]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 6, 1, 'SEND_ICQ_MESSAGE', 'https://www.icq.com/people/%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_icq', 'profilefields.type.string', 'phpbb_icq', '20', '3', '15', '', '', '[0-9]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 6, 1, 'SEND_ICQ_MESSAGE', 'https://www.icq.com/people/%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_wlm', 'profilefields.type.string', 'phpbb_wlm', '40', '5', '255', '', '', '.*', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 7, 1, '', ''); 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_wlm', 'profilefields.type.string', 'phpbb_wlm', '40', '5', '255', '', '', '.*', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 7, 1, '', '');
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_yahoo', 'profilefields.type.string', 'phpbb_yahoo', '40', '5', '255', '', '', '.*', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 8, 1, 'SEND_YIM_MESSAGE', 'http://edit.yahoo.com/config/send_webmesg?.target=%s&.src=pg'); 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_yahoo', 'profilefields.type.string', 'phpbb_yahoo', '40', '5', '255', '', '', '.*', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 8, 1, 'SEND_YIM_MESSAGE', 'http://edit.yahoo.com/config/send_webmesg?.target=%s&.src=pg');
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_facebook', 'profilefields.type.string', 'phpbb_facebook', '20', '5', '50', '', '', '[\w.]+', 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 9, 1, 'VIEW_FACEBOOK_PROFILE', 'http://facebook.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_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');
# User Notification Options (for first user) # User Notification Options (for first user)
INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('post', 0, 2, ''); INSERT INTO phpbb_user_notifications (item_type, item_id, user_id, method) VALUES('post', 0, 2, '');

View file

@ -39,9 +39,11 @@ if (empty($lang) || !is_array($lang))
// Custom profile fields // Custom profile fields
$lang = array_merge($lang, array( $lang = array_merge($lang, array(
'ADDED_PROFILE_FIELD' => 'Successfully added custom profile field.', 'ADDED_PROFILE_FIELD' => 'Successfully added custom profile field.',
'ALPHA_DOTS' => 'Alphanumeric and dots (periods)',
'ALPHA_ONLY' => 'Alphanumeric only', 'ALPHA_ONLY' => 'Alphanumeric only',
'ALPHA_SPACERS' => 'Alphanumeric and spacers', 'ALPHA_SPACERS' => 'Alphanumeric and spacers',
'ALPHA_UNDERSCORE' => 'Alphanumeric and underscores', 'ALPHA_UNDERSCORE' => 'Alphanumeric and underscores',
'ALPHA_PUNCTUATION' => 'Alphanumeric with comma, dots, underscore and dashes beginning with a letter',
'ALWAYS_TODAY' => 'Always the current date', 'ALWAYS_TODAY' => 'Always the current date',
'BOOL_ENTRIES_EXPLAIN' => 'Enter your options now', 'BOOL_ENTRIES_EXPLAIN' => 'Enter your options now',

View file

@ -226,6 +226,7 @@ $lang = array_merge($lang, array(
'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension <strong>%s</strong> has been deactivated and can no longer be displayed.', 'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension <strong>%s</strong> has been deactivated and can no longer be displayed.',
'EXTENSION_DOES_NOT_EXIST' => 'The extension <strong>%s</strong> does not exist.', 'EXTENSION_DOES_NOT_EXIST' => 'The extension <strong>%s</strong> does not exist.',
'FACEBOOK' => 'Facebook',
'FAQ' => 'FAQ', 'FAQ' => 'FAQ',
'FAQ_EXPLAIN' => 'Frequently Asked Questions', 'FAQ_EXPLAIN' => 'Frequently Asked Questions',
'FILENAME' => 'Filename', 'FILENAME' => 'Filename',
@ -676,6 +677,7 @@ $lang = array_merge($lang, array(
'SETTINGS' => 'Settings', 'SETTINGS' => 'Settings',
'SIGNATURE' => 'Signature', 'SIGNATURE' => 'Signature',
'SKIP' => 'Skip to content', 'SKIP' => 'Skip to content',
'SKYPE' => 'Skype',
'SMTP_NO_AUTH_SUPPORT' => 'SMTP server does not support authentication.', 'SMTP_NO_AUTH_SUPPORT' => 'SMTP server does not support authentication.',
'SORRY_AUTH_READ' => 'You are not authorised to read this forum.', 'SORRY_AUTH_READ' => 'You are not authorised to read this forum.',
'SORRY_AUTH_VIEW_ATTACH' => 'You are not authorised to download this attachment.', 'SORRY_AUTH_VIEW_ATTACH' => 'You are not authorised to download this attachment.',
@ -771,6 +773,7 @@ $lang = array_merge($lang, array(
2 => 'Total members <strong>%d</strong>', 2 => 'Total members <strong>%d</strong>',
), ),
'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s', 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s',
'TWITTER' => 'Twitter',
'UNABLE_GET_IMAGE_SIZE' => 'It was not possible to determine the dimensions of the image. Please verify that the URL you entered is correct.', 'UNABLE_GET_IMAGE_SIZE' => 'It was not possible to determine the dimensions of the image. Please verify that the URL you entered is correct.',
'UNABLE_TO_DELIVER_FILE'=> 'Unable to deliver file.', 'UNABLE_TO_DELIVER_FILE'=> 'Unable to deliver file.',
@ -857,6 +860,7 @@ $lang = array_merge($lang, array(
'WROTE' => 'wrote', 'WROTE' => 'wrote',
'YAHOO' => 'Yahoo Messenger', 'YAHOO' => 'Yahoo Messenger',
'YOUTUBE' => 'YouTube',
'YEAR' => 'Year', 'YEAR' => 'Year',
'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)',
'YES' => 'Yes', 'YES' => 'Yes',

View file

@ -144,4 +144,8 @@ $lang = array_merge($lang, array(
'USERS_PER_PAGE' => 'Users per page', 'USERS_PER_PAGE' => 'Users per page',
'VIEWING_PROFILE' => 'Viewing profile - %s', 'VIEWING_PROFILE' => 'Viewing profile - %s',
'VIEW_FACEBOOK_PROFILE' => 'View Facebook Profile',
'VIEW_SKYPE_PROFILE' => 'View Skype Profile',
'VIEW_TWITTER_PROFILE' => 'View Twitter Profile',
'VIEW_YOUTUBE_CHANNEL' => 'View YouTube Channel',
)); ));

View file

@ -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_facebook 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_facebook';
protected $profilefield_database_type = array('VCHAR', '');
protected $profilefield_data = array(
'field_name' => 'phpbb_facebook',
'field_type' => 'profilefields.type.string',
'field_ident' => 'phpbb_facebook',
'field_length' => '20',
'field_minlen' => '5',
'field_maxlen' => '50',
'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_FACEBOOK_PROFILE',
'field_contact_url' => 'http://facebook.com/%s/',
);
}

View file

@ -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_skype 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_skype';
protected $profilefield_database_type = array('VCHAR', '');
protected $profilefield_data = array(
'field_name' => 'phpbb_skype',
'field_type' => 'profilefields.type.string',
'field_ident' => 'phpbb_skype',
'field_length' => '20',
'field_minlen' => '6',
'field_maxlen' => '32',
'field_novalue' => '',
'field_default_value' => '',
'field_validation' => '[a-zA-Z][\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_SKYPE_PROFILE',
'field_contact_url' => 'skype:%s?userinfo',
);
}

View file

@ -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_twitter 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_twitter';
protected $profilefield_database_type = array('VCHAR', '');
protected $profilefield_data = array(
'field_name' => 'phpbb_twitter',
'field_type' => 'profilefields.type.string',
'field_ident' => 'phpbb_twitter',
'field_length' => '20',
'field_minlen' => '1',
'field_maxlen' => '15',
'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_TWITTER_PROFILE',
'field_contact_url' => 'http://twitter.com/%s',
);
}

View file

@ -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_youtube 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_youtube';
protected $profilefield_database_type = array('VCHAR', '');
protected $profilefield_data = array(
'field_name' => 'phpbb_youtube',
'field_type' => 'profilefields.type.string',
'field_ident' => 'phpbb_youtube',
'field_length' => '20',
'field_minlen' => '3',
'field_maxlen' => '60',
'field_novalue' => '',
'field_default_value' => '',
'field_validation' => '[a-zA-Z][\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_YOUTUBE_CHANNEL',
'field_contact_url' => 'http://youtube.com/user/%s',
);
}

View file

@ -20,7 +20,9 @@ abstract class type_string_common extends type_base
'NUMBERS_ONLY' => '[0-9]+', 'NUMBERS_ONLY' => '[0-9]+',
'ALPHA_ONLY' => '[\w]+', 'ALPHA_ONLY' => '[\w]+',
'ALPHA_UNDERSCORE' => '[\w_]+', 'ALPHA_UNDERSCORE' => '[\w_]+',
'ALPHA_DOTS' => '[\w.]+',
'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+',
'ALPHA_PUNCTUATION' => '[a-zA-Z][\w\.,\-_]+',
); );
/** /**

View file

@ -25,13 +25,23 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case
$this->assertContainsLang('UCP_PROFILE_PROFILE_INFO', $crawler->filter('#cp-main h2')->text()); $this->assertContainsLang('UCP_PROFILE_PROFILE_INFO', $crawler->filter('#cp-main h2')->text());
$form = $crawler->selectButton('Submit')->form(array( $form = $crawler->selectButton('Submit')->form(array(
'pf_phpbb_facebook' => 'phpbb',
'pf_phpbb_location' => 'Bertie´s Empire', 'pf_phpbb_location' => 'Bertie´s Empire',
'pf_phpbb_skype' => 'phpbb.skype.account',
'pf_phpbb_twitter' => 'phpbb_twitter',
'pf_phpbb_youtube' => 'phpbb.youtube',
)); ));
$crawler = self::submit($form); $crawler = self::submit($form);
$this->assertContainsLang('PROFILE_UPDATED', $crawler->filter('#message')->text()); $this->assertContainsLang('PROFILE_UPDATED', $crawler->filter('#message')->text());
$crawler = self::request('GET', 'ucp.php?i=ucp_profile&mode=profile_info'); $crawler = self::request('GET', 'ucp.php?i=ucp_profile&mode=profile_info');
$form = $crawler->selectButton('Submit')->form(); $form = $crawler->selectButton('Submit')->form();
$this->assertEquals('phpbb', $form->get('pf_phpbb_facebook')->getValue());
$this->assertEquals('Bertie´s Empire', $form->get('pf_phpbb_location')->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());
$this->assertEquals('phpbb.youtube', $form->get('pf_phpbb_youtube')->getValue());
} }
} }

View file

@ -143,6 +143,30 @@ class phpbb_profilefield_type_string_test extends phpbb_test_case
false, false,
'Required field should accept a characters only field', 'Required field should accept a characters only field',
), ),
array(
'Valid.Username123',
array('field_validation' => '[\w.]+'),
false,
'Required field should accept a alphanumeric field with dots',
),
array(
'Invalid.,username123',
array('field_validation' => '[\w.]+'),
'FIELD_INVALID_CHARS_ALPHA_DOTS-field',
'Required field should reject field with comma',
),
array(
'skype.test.name,_this',
array('field_validation' => '[a-zA-Z][\w\.,\-_]+'),
false,
'Required field should accept alphanumeric field with punctuations',
),
array(
'1skype.this.should.faila',
array('field_validation' => '[a-zA-Z][\w\.,\-_]+'),
'FIELD_INVALID_CHARS_ALPHA_PUNCTUATION-field',
'Required field should reject field having invalid input for the given validation',
),
); );
} }