diff options
-rw-r--r-- | phpBB/adm/style/acp_ext_details.html | 12 | ||||
-rw-r--r-- | phpBB/adm/style/install_footer.html | 1 | ||||
-rw-r--r-- | phpBB/docs/events.md | 8 | ||||
-rw-r--r-- | phpBB/includes/acp/acp_users.php | 3 | ||||
-rw-r--r-- | phpBB/install/index.php | 10 | ||||
-rw-r--r-- | phpBB/language/en/mods/index.htm | 0 | ||||
-rw-r--r-- | phpBB/phpbb/profilefields/type/type_string_common.php | 2 | ||||
-rw-r--r-- | phpBB/phpbb/user.php | 13 | ||||
-rw-r--r-- | phpBB/styles/prosilver/template/memberlist_view.html | 2 | ||||
-rw-r--r-- | phpBB/styles/subsilver2/template/memberlist_view.html | 2 | ||||
-rw-r--r-- | tests/functional/metadata_manager_test.php | 2 | ||||
-rw-r--r-- | tests/profile/custom_string_test.php | 116 | ||||
-rw-r--r-- | tests/template/template_test.php | 7 | ||||
-rw-r--r-- | tests/template/templates/if.html | 4 | ||||
-rwxr-xr-x | travis/setup-php-extensions.sh | 5 |
15 files changed, 172 insertions, 15 deletions
diff --git a/phpBB/adm/style/acp_ext_details.html b/phpBB/adm/style/acp_ext_details.html index 986aa24b1b..5141acd9fc 100644 --- a/phpBB/adm/style/acp_ext_details.html +++ b/phpBB/adm/style/acp_ext_details.html @@ -21,12 +21,12 @@ <!-- IF META_DESCRIPTION --> <dl> <dt><label>{L_DESCRIPTION}{L_COLON}</label></dt> - <dd><p id="meta_description">{META_DESCRIPTION}</p></dd> + <dd><span id="meta_description">{META_DESCRIPTION}</span></dd> </dl> <!-- ENDIF --> <dl> <dt><label>{L_VERSION}{L_COLON}</label></dt> - <dd><p id="meta_version">{META_VERSION}</p></dd> + <dd><span id="meta_version">{META_VERSION}</span></dd> </dl> <!-- IF META_HOMEPAGE --> <dl> @@ -37,12 +37,12 @@ <!-- IF META_TIME --> <dl> <dt><label>{L_TIME}{L_COLON}</label></dt> - <dd><p id="meta_time">{META_TIME}</p></dd> + <dd><span id="meta_time">{META_TIME}</span></dd> </dl> <!-- ENDIF --> <dl> <dt><label>{L_LICENCE}{L_COLON}</label></dt> - <dd><p id="meta_license">{META_LICENCE}</p></dd> + <dd><span id="meta_license">{META_LICENCE}</span></dd> </dl> </fieldset> @@ -52,13 +52,13 @@ <!-- IF META_REQUIRE_PHPBB --> <dl<!-- IF META_REQUIRE_PHPBB_FAIL --> class="requirements_not_met"<!-- ENDIF -->> <dt><label>{L_PHPBB_VERSION}{L_COLON}</label></dt> - <dd><p id="require_phpbb">{META_REQUIRE_PHPBB}</p></dd> + <dd><span id="require_phpbb">{META_REQUIRE_PHPBB}</span></dd> </dl> <!-- ENDIF --> <!-- IF META_REQUIRE_PHP --> <dl<!-- IF META_REQUIRE_PHP_FAIL --> class="requirements_not_met"<!-- ENDIF -->> <dt><label>{L_PHP_VERSION}{L_COLON}</label></dt> - <dd><p id="require_php">{META_REQUIRE_PHP}</p></dd> + <dd><span id="require_php">{META_REQUIRE_PHP}</span></dd> </dl> <!-- ENDIF --> </fieldset> diff --git a/phpBB/adm/style/install_footer.html b/phpBB/adm/style/install_footer.html index c5356e7b9d..822ab76313 100644 --- a/phpBB/adm/style/install_footer.html +++ b/phpBB/adm/style/install_footer.html @@ -11,6 +11,7 @@ <script type="text/javascript" src="{T_JQUERY_LINK}"></script> <!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF --> +<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script> <!-- INCLUDEJS admin.js --> {$SCRIPTS} diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 57a47cbf84..97be92933e 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -160,6 +160,14 @@ memberlist_body_username_prepend * Purpose: Add information before every username in the memberlist. Works in all display modes (leader, group and normal memberlist). +memberlist_view_content_append +=== +* Locations: + + styles/prosilver/template/memberlist_view.html + + styles/subsilver2/template/memberlist_view.html +* Since: 3.1.0-b2 +* Purpose: Add custom content to the user profile view after the main content + memberlist_view_user_statistics_after === * Locations: diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index c944f5f96f..3e03efd4d7 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -37,7 +37,6 @@ class acp_users $user->add_lang(array('posting', 'ucp', 'acp/users')); $this->tpl_name = 'acp_users'; - $this->page_title = 'ACP_USER_' . strtoupper($mode); $error = array(); $username = utf8_normalize_nfc(request_var('username', '', true)); @@ -159,6 +158,8 @@ class acp_users trigger_error($user->lang['NOT_MANAGE_FOUNDER'] . adm_back_link($this->u_action), E_USER_WARNING); } + $this->page_title = $user_row['username'] . ' :: ' . $user->lang('ACP_USER_' . strtoupper($mode)); + switch ($mode) { case 'overview': diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 2e09e95ea7..b18a9dce1b 100644 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -252,8 +252,10 @@ $paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_p $paths = array_filter($paths, 'is_dir'); $template->set_custom_style('adm', $paths); -$template->assign_var('T_ASSETS_PATH', '../assets'); -$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style'); +$path = array_shift($paths); + +$template->assign_var('T_ASSETS_PATH', $path . '/../../assets'); +$template->assign_var('T_TEMPLATE_PATH', $path); $install = new module(); @@ -397,7 +399,7 @@ class module } define('HEADER_INC', true); - global $template, $lang, $stage, $phpbb_root_path, $phpbb_admin_path; + global $template, $lang, $stage, $phpbb_admin_path, $path; $template->assign_vars(array( 'L_CHANGE' => $lang['CHANGE'], @@ -407,7 +409,7 @@ class module 'L_SKIP' => $lang['SKIP'], 'PAGE_TITLE' => $this->get_page_title(), 'T_IMAGE_PATH' => htmlspecialchars($phpbb_admin_path) . 'images/', - 'T_JQUERY_LINK' => $phpbb_root_path . 'assets/javascript/jquery.js', + 'T_JQUERY_LINK' => $path . '/../../assets/javascript/jquery.js', 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], 'S_CONTENT_FLOW_BEGIN' => ($lang['DIRECTION'] == 'ltr') ? 'left' : 'right', diff --git a/phpBB/language/en/mods/index.htm b/phpBB/language/en/mods/index.htm deleted file mode 100644 index e69de29bb2..0000000000 --- a/phpBB/language/en/mods/index.htm +++ /dev/null diff --git a/phpBB/phpbb/profilefields/type/type_string_common.php b/phpBB/phpbb/profilefields/type/type_string_common.php index 0738cbdafd..78e219a61f 100644 --- a/phpBB/phpbb/profilefields/type/type_string_common.php +++ b/phpBB/phpbb/profilefields/type/type_string_common.php @@ -65,7 +65,7 @@ abstract class type_string_common extends type_base { return $this->user->lang('FIELD_TOO_SHORT', (int) $field_data['field_minlen'], $this->get_field_name($field_data['lang_name'])); } - else if ($field_data['field_maxlen'] && utf8_strlen($field_value) > $field_data['field_maxlen']) + else if ($field_data['field_maxlen'] && utf8_strlen(html_entity_decode($field_value)) > $field_data['field_maxlen']) { return $this->user->lang('FIELD_TOO_LONG', (int) $field_data['field_maxlen'], $this->get_field_name($field_data['lang_name'])); } diff --git a/phpBB/phpbb/user.php b/phpBB/phpbb/user.php index 2a7cc602da..6c060e21ea 100644 --- a/phpBB/phpbb/user.php +++ b/phpBB/phpbb/user.php @@ -204,6 +204,19 @@ class user extends \phpbb\session $this->style = $db->sql_fetchrow($result); $db->sql_freeresult($result); + // Fallback to user's standard style + if (!$this->style && $style_id != $this->data['user_style']) + { + $style_id = $this->data['user_style']; + + $sql = 'SELECT * + FROM ' . STYLES_TABLE . " s + WHERE s.style_id = $style_id"; + $result = $db->sql_query($sql, 3600); + $this->style = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + // User has wrong style if (!$this->style && $style_id == $this->data['user_style']) { diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index 6dc8293551..ecbde97b80 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -119,6 +119,8 @@ </form> +<!-- EVENT memberlist_view_content_append --> + <!-- INCLUDE jumpbox.html --> <!-- INCLUDE overall_footer.html --> diff --git a/phpBB/styles/subsilver2/template/memberlist_view.html b/phpBB/styles/subsilver2/template/memberlist_view.html index 28f4da4fef..d4547d822d 100644 --- a/phpBB/styles/subsilver2/template/memberlist_view.html +++ b/phpBB/styles/subsilver2/template/memberlist_view.html @@ -178,6 +178,8 @@ </form> + <!-- EVENT memberlist_view_content_append --> + </div> <br clear="all" /> diff --git a/tests/functional/metadata_manager_test.php b/tests/functional/metadata_manager_test.php index 651c99a99d..ac08a44e30 100644 --- a/tests/functional/metadata_manager_test.php +++ b/tests/functional/metadata_manager_test.php @@ -70,7 +70,7 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case // Details should be html escaped // However, text() only returns the displayed text, so HTML Special Chars are decoded. // So we test this directly on the content of the response. - $this->assertContains('<p id="require_php">>=5.3</p>', $this->get_content()); + $this->assertContains('<span id="require_php">>=5.3</span>', $this->get_content()); } public function test_extensions_details_notexists() diff --git a/tests/profile/custom_string_test.php b/tests/profile/custom_string_test.php new file mode 100644 index 0000000000..bd0b20573c --- /dev/null +++ b/tests/profile/custom_string_test.php @@ -0,0 +1,116 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php'; + +class phpbb_profile_custom_string_test extends phpbb_database_test_case +{ + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/profile_fields.xml'); + } + + static public function string_fields() + { + return array( + // note, there is an offset of 1 between option_id (0-indexed) + // in the database and values (1-indexed) to avoid problems with + // transmitting 0 in an HTML form + // required, value, validation, expected, description + array( + 1, + 'H3110', + '[0-9]+', + 'FIELD_INVALID_CHARS_NUMBERS_ONLY-field', + 'Required field should reject characters in a numbers-only field', + ), + array( + 1, + 'This string is too long', + '.*', + 'FIELD_TOO_LONG-10-field', + 'Required field should reject a field too long', + ), + array( + 0, + '<>"&%&><>', + '.*', + false, + 'Optional field should accept html entities', + ), + array( + 1, + 'ö ä ü ß', + '.*', + false, + 'Required field should accept UTF-8 string', + ), + array( + 1, + 'This ö ä string has to b', + '.*', + 'FIELD_TOO_LONG-10-field', + 'Required field should reject an UTF-8 string which is too long', + ), + array( + 1, + 'ö äö äö ä', + '[\w]+', + 'FIELD_INVALID_CHARS_ALPHA_ONLY-field', + 'Required field should reject UTF-8 in alpha only field', + ), + array( + 1, + 'Hello', + '[\w]+', + false, + 'Required field should accept a characters only field', + ), + ); + } + + /** + * @dataProvider string_fields + */ + public function test_string_validate($field_required, $field_value, $field_validation, $expected, $description) + { + $db = $this->new_dbal(); + + $field_data = array( + 'field_id' => 1, + 'lang_id' => 1, + 'lang_name' => 'field', + 'field_novalue' => 1, + 'field_required' => $field_required, + 'field_maxlen' => 10, + 'field_validation' => $field_validation, + ); + $user = $this->getMock('\phpbb\user'); + $user->expects($this->any()) + ->method('lang') + ->will($this->returnCallback(array($this, 'return_callback_implode'))); + + $request = $this->getMock('\phpbb\request\request'); + $template = $this->getMock('\phpbb\template\template'); + + $cp = new \phpbb\profilefields\type\type_string( + $request, + $template, + $user + ); + $result = $cp->validate_profile_field($field_value, $field_data); + + $this->assertEquals($expected, $result, $description); + } + + public function return_callback_implode() + { + return implode('-', func_get_args()); + } +} diff --git a/tests/template/template_test.php b/tests/template/template_test.php index 2b7be9746e..74baa3d5b6 100644 --- a/tests/template/template_test.php +++ b/tests/template/template_test.php @@ -91,6 +91,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case '03!false', ), array( + 'if.html', + array('VALUE_TEST' => 'value'), + array(), + array(), + '03!falsevalue', + ), + array( 'loop.html', array(), array(), diff --git a/tests/template/templates/if.html b/tests/template/templates/if.html index f6ab6e575a..71312f994c 100644 --- a/tests/template/templates/if.html +++ b/tests/template/templates/if.html @@ -19,3 +19,7 @@ false <!-- IF S_TEST !== false --> !false <!-- ENDIF --> + +<!-- IF VALUE_TEST is defined --> +{VALUE_TEST} +<!-- ENDIF --> diff --git a/travis/setup-php-extensions.sh b/travis/setup-php-extensions.sh index 86e3aaae47..826ee7409a 100755 --- a/travis/setup-php-extensions.sh +++ b/travis/setup-php-extensions.sh @@ -52,5 +52,6 @@ then fi # redis -git clone git://github.com/nicolasff/phpredis.git redis -install_php_extension 'redis' "$php_ini_file" +# Disabled redis for now as it causes travis to fail +# git clone git://github.com/nicolasff/phpredis.git redis +# install_php_extension 'redis' "$php_ini_file" |