mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-27 21:58:52 +00:00
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11816
# By David King (16) and others # Via David King (13) and others * 'develop' of github.com:phpbb/phpbb3: (67 commits) [ticket/11825] Move schema_data.php into includes/ instead of phpbb/ [ticket/11215] Remove unnecessary comment [ticket/11755] MySQL upgrader out of date [prep-release-3.0.12] Update Changelog for 3.0.12-RC3 release. [prep-release-3.0.12] Bumping version number for 3.0.12-RC3. [ticket/11823] Set up nginx server to match PHP files with characters after .php [ticket/11812] Fix empty define [ticket/11818] Update Symfony dependencies to 2.3.* [ticket/11791] Load adm/ events from styles/adm/event/ [ticket/11215] Fix helper_url_test.php tests [ticket/11215] Add newline back to .htaccess, fix wording [ticket/11215] Update comment in .htaccess [ticket/11215] Uncomment rewrite rules in .htaccess [ticket/11215] Make controller helper url() method use correct format [ticket/11215] Add commented-out URL rewrite capability to .htaccess [ticket/11821] Fix comma usage next to "You are receiving this notification". [ticket/11769] Allow using 0 as poster name [ticket/11769] Allow '0' as username [ticket/11215] Use new URL structure for controllers [ticket/11215] Everything appears to be working... ... Conflicts: phpBB/phpbb/template/twig/lexer.php tests/template/template_test.php
This commit is contained in:
commit
65f52d7575
66 changed files with 2482 additions and 4584 deletions
|
@ -1,12 +1,30 @@
|
|||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
|
||||
#
|
||||
# Uncomment the statement below if you want to make use of
|
||||
# HTTP authentication and it does not already work.
|
||||
# This could be required if you are for example using PHP via Apache CGI.
|
||||
#
|
||||
#<IfModule mod_rewrite.c>
|
||||
#RewriteEngine on
|
||||
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||
#</IfModule>
|
||||
|
||||
#
|
||||
# The following 3 lines will rewrite URLs passed through the front controller
|
||||
# to not require app.php in the actual URL. In other words, a controller is
|
||||
# by default accessed at /app.php/my/controller, but can also be accessed at
|
||||
# /my/controller
|
||||
#
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*)$ app.php [QSA,L]
|
||||
|
||||
#
|
||||
# If symbolic links are not already being followed,
|
||||
# uncomment the line below.
|
||||
# http://anothersysadmin.wordpress.com/2008/06/10/mod_rewrite-forbidden-403-with-apache-228/
|
||||
#
|
||||
#Options +FollowSymLinks
|
||||
</IfModule>
|
||||
|
||||
<Files "config.php">
|
||||
Order Allow,Deny
|
||||
|
|
|
@ -50,7 +50,7 @@ $module_id = request_var('i', '');
|
|||
$mode = request_var('mode', '');
|
||||
|
||||
// Set custom style for admin area
|
||||
$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', array(), '');
|
||||
$template->set_custom_style('adm', $phpbb_admin_path . 'style');
|
||||
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ $auth->acl($user->data);
|
|||
$user->setup();
|
||||
|
||||
// Set custom template for admin area
|
||||
$phpbb_style->set_custom_style('admin', $phpbb_admin_path . 'style', array(), '');
|
||||
$template->set_custom_style('adm', $phpbb_admin_path . 'style');
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'colour_swatch.html')
|
||||
|
|
|
@ -24,7 +24,6 @@ $user->session_begin();
|
|||
$auth->acl($user->data);
|
||||
$user->setup('app');
|
||||
|
||||
$symfony_request = phpbb_create_symfony_request($request);
|
||||
$http_kernel = $phpbb_container->get('http_kernel');
|
||||
$response = $http_kernel->handle($symfony_request);
|
||||
$response->send();
|
||||
|
|
|
@ -109,6 +109,9 @@ $db = $phpbb_container->get('dbal.conn');
|
|||
// make sure request_var uses this request instance
|
||||
request_var('', 0, false, false, $request); // "dependency injection" for a function
|
||||
|
||||
// Create a Symfony Request object from our phpbb_request object
|
||||
$symfony_request = phpbb_create_symfony_request($request);
|
||||
|
||||
// Grab global variables, re-cache if necessary
|
||||
$config = $phpbb_container->get('config');
|
||||
set_config(null, null, null, $config);
|
||||
|
@ -121,7 +124,6 @@ $phpbb_extension_manager = $phpbb_container->get('ext.manager');
|
|||
$phpbb_subscriber_loader = $phpbb_container->get('event.subscriber_loader');
|
||||
|
||||
$template = $phpbb_container->get('template');
|
||||
$phpbb_style = $phpbb_container->get('style');
|
||||
|
||||
// Add own hook handler
|
||||
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"minimum-stability": "beta",
|
||||
"require": {
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/dependency-injection": "2.1.*",
|
||||
"symfony/event-dispatcher": "2.1.*",
|
||||
"symfony/http-kernel": "2.1.*",
|
||||
"symfony/routing": "2.1.*",
|
||||
"symfony/yaml": "2.1.*",
|
||||
"symfony/config": "2.3.*",
|
||||
"symfony/dependency-injection": "2.3.*",
|
||||
"symfony/event-dispatcher": "2.3.*",
|
||||
"symfony/http-kernel": "2.3.*",
|
||||
"symfony/routing": "2.3.*",
|
||||
"symfony/yaml": "2.3.*",
|
||||
"twig/twig": "1.13.*"
|
||||
},
|
||||
"require-dev": {
|
||||
|
|
517
phpBB/composer.lock
generated
517
phpBB/composer.lock
generated
|
@ -3,30 +3,74 @@
|
|||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||
],
|
||||
"hash": "6e6125b88160e28568edcb9fd007abed",
|
||||
"hash": "fcad562b3b6768f0e355d93edc0db405",
|
||||
"packages": [
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/Config",
|
||||
"name": "psr/log",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Config.git",
|
||||
"reference": "v2.1.11"
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Config/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
|
||||
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Config": ""
|
||||
"Psr\\Log\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for logging libraries",
|
||||
"keywords": [
|
||||
"log",
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"time": "2012-12-21 11:40:51"
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/Config",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Config.git",
|
||||
"reference": "65a927c15ca5a911ba2fa277a5457fa8129505b0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Config/zipball/65a927c15ca5a911ba2fa277a5457fa8129505b0",
|
||||
"reference": "65a927c15ca5a911ba2fa277a5457fa8129505b0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"symfony/filesystem": "~2.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Config\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -45,38 +89,100 @@
|
|||
],
|
||||
"description": "Symfony Config Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-09 15:22:40"
|
||||
"time": "2013-08-06 05:49:23"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dependency-injection",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/DependencyInjection",
|
||||
"name": "symfony/debug",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/Debug",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DependencyInjection.git",
|
||||
"reference": "v2.1.11"
|
||||
"url": "https://github.com/symfony/Debug.git",
|
||||
"reference": "729f6d19cfc401c4942e43fcc1059103bd6df130"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Debug/zipball/729f6d19cfc401c4942e43fcc1059103bd6df130",
|
||||
"reference": "729f6d19cfc401c4942e43fcc1059103bd6df130",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/yaml": "2.1.*"
|
||||
"symfony/http-foundation": "~2.1",
|
||||
"symfony/http-kernel": "~2.1"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/yaml": "2.1.*"
|
||||
"symfony/class-loader": "",
|
||||
"symfony/http-foundation": "",
|
||||
"symfony/http-kernel": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\DependencyInjection": ""
|
||||
"Symfony\\Component\\Debug\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-08-08 14:16:10"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dependency-injection",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/DependencyInjection",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DependencyInjection.git",
|
||||
"reference": "3678aa969e5bfeb8515a1f3047c63e8104723f5c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/3678aa969e5bfeb8515a1f3047c63e8104723f5c",
|
||||
"reference": "3678aa969e5bfeb8515a1f3047c63e8104723f5c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "~2.2",
|
||||
"symfony/yaml": "~2.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/config": "",
|
||||
"symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
|
||||
"symfony/yaml": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\DependencyInjection\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -95,37 +201,42 @@
|
|||
],
|
||||
"description": "Symfony DependencyInjection Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-03 05:08:13"
|
||||
"time": "2013-07-25 17:13:25"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/EventDispatcher",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/EventDispatcher.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "41c9826457c65fa3cf746f214985b7ca9cba42f8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/41c9826457c65fa3cf746f214985b7ca9cba42f8",
|
||||
"reference": "41c9826457c65fa3cf746f214985b7ca9cba42f8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/dependency-injection": "2.1.*"
|
||||
"symfony/dependency-injection": "~2.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/dependency-injection": "2.1.*",
|
||||
"symfony/http-kernel": "2.1.*"
|
||||
"symfony/dependency-injection": "",
|
||||
"symfony/http-kernel": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\EventDispatcher": ""
|
||||
"Symfony\\Component\\EventDispatcher\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -144,31 +255,35 @@
|
|||
],
|
||||
"description": "Symfony EventDispatcher Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-02-11 11:26:14"
|
||||
"time": "2013-07-21 12:12:18"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v2.1.11",
|
||||
"target-dir": "Symfony/Component/HttpFoundation",
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/Filesystem",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/HttpFoundation.git",
|
||||
"reference": "v2.1.11"
|
||||
"url": "https://github.com/symfony/Filesystem.git",
|
||||
"reference": "87acbbef6d35ba649f96f09cc572c45119b360c3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Filesystem/zipball/87acbbef6d35ba649f96f09cc572c45119b360c3",
|
||||
"reference": "87acbbef6d35ba649f96f09cc572c45119b360c3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\HttpFoundation": "",
|
||||
"SessionHandlerInterface": "Symfony/Component/HttpFoundation/Resources/stubs"
|
||||
"Symfony\\Component\\Filesystem\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -185,52 +300,111 @@
|
|||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Filesystem Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-07-21 12:12:18"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/HttpFoundation",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/HttpFoundation.git",
|
||||
"reference": "fdf130fe65457aedbc4639a22f4ef9d3be5c002c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/fdf130fe65457aedbc4639a22f4ef9d3be5c002c",
|
||||
"reference": "fdf130fe65457aedbc4639a22f4ef9d3be5c002c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\HttpFoundation\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Symfony/Component/HttpFoundation/Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony HttpFoundation Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-26 18:42:07"
|
||||
"time": "2013-08-26 05:49:51"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/HttpKernel",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/HttpKernel.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "9d35da40f07bbe7a4f8dfbc41555d2b69de674bf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/HttpKernel/zipball/9d35da40f07bbe7a4f8dfbc41555d2b69de674bf",
|
||||
"reference": "9d35da40f07bbe7a4f8dfbc41555d2b69de674bf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"symfony/event-dispatcher": "2.1.*",
|
||||
"symfony/http-foundation": "2.1.*"
|
||||
"psr/log": "~1.0",
|
||||
"symfony/debug": "~2.3",
|
||||
"symfony/event-dispatcher": "~2.1",
|
||||
"symfony/http-foundation": "~2.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/browser-kit": "2.1.*",
|
||||
"symfony/class-loader": "2.1.*",
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/console": "2.1.*",
|
||||
"symfony/dependency-injection": "2.1.*",
|
||||
"symfony/finder": "2.1.*",
|
||||
"symfony/process": "2.1.*",
|
||||
"symfony/routing": "2.1.*"
|
||||
"symfony/browser-kit": "~2.2",
|
||||
"symfony/class-loader": "~2.1",
|
||||
"symfony/config": "~2.0",
|
||||
"symfony/console": "~2.2",
|
||||
"symfony/dependency-injection": "~2.0",
|
||||
"symfony/finder": "~2.0",
|
||||
"symfony/process": "~2.0",
|
||||
"symfony/routing": "~2.2",
|
||||
"symfony/stopwatch": "~2.2",
|
||||
"symfony/templating": "~2.2"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/browser-kit": "2.1.*",
|
||||
"symfony/class-loader": "2.1.*",
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/console": "2.1.*",
|
||||
"symfony/dependency-injection": "2.1.*",
|
||||
"symfony/finder": "2.1.*"
|
||||
"symfony/browser-kit": "",
|
||||
"symfony/class-loader": "",
|
||||
"symfony/config": "",
|
||||
"symfony/console": "",
|
||||
"symfony/dependency-injection": "",
|
||||
"symfony/finder": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\HttpKernel": ""
|
||||
"Symfony\\Component\\HttpKernel\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -249,41 +423,46 @@
|
|||
],
|
||||
"description": "Symfony HttpKernel Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-06-02 12:29:05"
|
||||
"time": "2013-08-27 08:58:24"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/Routing",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Routing.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "69af3f07dbf3ae93dd513dbc373f561cb2e7f143"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Routing/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Routing/zipball/69af3f07dbf3ae93dd513dbc373f561cb2e7f143",
|
||||
"reference": "69af3f07dbf3ae93dd513dbc373f561cb2e7f143",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/common": ">=2.2,<3.0",
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/http-kernel": "2.1.*",
|
||||
"symfony/yaml": "2.1.*"
|
||||
"doctrine/common": "~2.2",
|
||||
"psr/log": "~1.0",
|
||||
"symfony/config": "~2.2",
|
||||
"symfony/yaml": "~2.0"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/common": "~2.2",
|
||||
"symfony/config": "2.1.*",
|
||||
"symfony/yaml": "2.1.*"
|
||||
"doctrine/common": "",
|
||||
"symfony/config": "",
|
||||
"symfony/yaml": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Routing": ""
|
||||
"Symfony\\Component\\Routing\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -302,30 +481,35 @@
|
|||
],
|
||||
"description": "Symfony Routing Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-06 10:48:41"
|
||||
"time": "2013-08-23 15:14:07"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.3.4",
|
||||
"target-dir": "Symfony/Component/Yaml",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Yaml.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "5a279f1b5f5e1045a6c432354d9ea727ff3a9847"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/5a279f1b5f5e1045a6c432354d9ea727ff3a9847",
|
||||
"reference": "5a279f1b5f5e1045a6c432354d9ea727ff3a9847",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Symfony\\Component\\Yaml": ""
|
||||
"Symfony\\Component\\Yaml\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -344,20 +528,20 @@
|
|||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-05-10 00:09:46"
|
||||
"time": "2013-08-24 15:26:22"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v1.13.1",
|
||||
"version": "v1.13.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fabpot/Twig.git",
|
||||
"reference": "v1.13.1"
|
||||
"reference": "6d6a1009427d1f398c9d40904147bf9f723d5755"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fabpot/Twig/zipball/v1.13.1",
|
||||
"reference": "v1.13.1",
|
||||
"url": "https://api.github.com/repos/fabpot/Twig/zipball/6d6a1009427d1f398c9d40904147bf9f723d5755",
|
||||
"reference": "6d6a1009427d1f398c9d40904147bf9f723d5755",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -376,7 +560,7 @@
|
|||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3"
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
|
@ -393,7 +577,7 @@
|
|||
"keywords": [
|
||||
"templating"
|
||||
],
|
||||
"time": "2013-06-06 06:06:01"
|
||||
"time": "2013-08-03 15:35:31"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
@ -402,13 +586,13 @@
|
|||
"version": "v0.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fabpot/Goutte",
|
||||
"reference": "v0.1.0"
|
||||
"url": "https://github.com/fabpot/Goutte.git",
|
||||
"reference": "dcfba09b0f3781b2629693ab627bfa61ad4753bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/fabpot/Goutte/archive/v0.1.0.zip",
|
||||
"reference": "v0.1.0",
|
||||
"url": "https://api.github.com/repos/fabpot/Goutte/zipball/dcfba09b0f3781b2629693ab627bfa61ad4753bb",
|
||||
"reference": "dcfba09b0f3781b2629693ab627bfa61ad4753bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -454,13 +638,13 @@
|
|||
"version": "v3.0.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle",
|
||||
"reference": "v3.0.7"
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "f31f35d1669382936861533bd0217fcf830dc9a9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/guzzle/guzzle/archive/v3.0.7.zip",
|
||||
"reference": "v3.0.7",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/f31f35d1669382936861533bd0217fcf830dc9a9",
|
||||
"reference": "f31f35d1669382936861533bd0217fcf830dc9a9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -546,13 +730,13 @@
|
|||
"version": "2.4.14",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phingofficial/phing",
|
||||
"reference": "2.4.14"
|
||||
"url": "https://github.com/phingofficial/phing.git",
|
||||
"reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/phingofficial/phing/archive/2.4.14.zip",
|
||||
"reference": "2.4.14",
|
||||
"url": "https://api.github.com/repos/phingofficial/phing/zipball/41075d93ca254f1c90c79ec7ce81be2b2629e138",
|
||||
"reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -599,12 +783,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/dbunit.git",
|
||||
"reference": "1.2.3"
|
||||
"reference": "8386782a2d55153e44a06eb1a9d13d6ed35d9c2d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/1.2.3",
|
||||
"reference": "1.2.3",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/8386782a2d55153e44a06eb1a9d13d6ed35d9c2d",
|
||||
"reference": "8386782a2d55153e44a06eb1a9d13d6ed35d9c2d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -657,12 +841,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||
"reference": "1.2.12"
|
||||
"reference": "0e9958c459d675fb497d8dc5001c91d335734e48"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1.2.12",
|
||||
"reference": "1.2.12",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/0e9958c459d675fb497d8dc5001c91d335734e48",
|
||||
"reference": "0e9958c459d675fb497d8dc5001c91d335734e48",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -717,13 +901,13 @@
|
|||
"version": "1.3.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-file-iterator.git",
|
||||
"reference": "1.3.3"
|
||||
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
||||
"reference": "16a78140ed2fc01b945cfa539665fadc6a038029"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3",
|
||||
"reference": "1.3.3",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/16a78140ed2fc01b945cfa539665fadc6a038029",
|
||||
"reference": "16a78140ed2fc01b945cfa539665fadc6a038029",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -755,20 +939,20 @@
|
|||
"filesystem",
|
||||
"iterator"
|
||||
],
|
||||
"time": "2012-10-11 04:44:38"
|
||||
"time": "2012-10-11 11:44:38"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-text-template",
|
||||
"version": "1.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-text-template.git",
|
||||
"reference": "1.1.4"
|
||||
"url": "https://github.com/sebastianbergmann/php-text-template.git",
|
||||
"reference": "5180896f51c5b3648ac946b05f9ec02be78a0b23"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4",
|
||||
"reference": "1.1.4",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5180896f51c5b3648ac946b05f9ec02be78a0b23",
|
||||
"reference": "5180896f51c5b3648ac946b05f9ec02be78a0b23",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -799,20 +983,20 @@
|
|||
"keywords": [
|
||||
"template"
|
||||
],
|
||||
"time": "2012-10-31 11:15:28"
|
||||
"time": "2012-10-31 18:15:28"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-timer",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-timer.git",
|
||||
"reference": "1.0.4"
|
||||
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
||||
"reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-timer/zipball/1.0.4",
|
||||
"reference": "1.0.4",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
|
||||
"reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -839,24 +1023,24 @@
|
|||
}
|
||||
],
|
||||
"description": "Utility class for timing",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"homepage": "https://github.com/sebastianbergmann/php-timer/",
|
||||
"keywords": [
|
||||
"timer"
|
||||
],
|
||||
"time": "2012-10-11 04:45:58"
|
||||
"time": "2013-08-02 07:42:54"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-token-stream",
|
||||
"version": "1.1.5",
|
||||
"version": "1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/php-token-stream.git",
|
||||
"reference": "1.1.5"
|
||||
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
||||
"reference": "31babf400e5b5868573bf49a000a3519d3978233"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/php-token-stream/zipball/1.1.5",
|
||||
"reference": "1.1.5",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/31babf400e5b5868573bf49a000a3519d3978233",
|
||||
"reference": "31babf400e5b5868573bf49a000a3519d3978233",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -864,6 +1048,11 @@
|
|||
"php": ">=5.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"PHP/"
|
||||
|
@ -884,24 +1073,24 @@
|
|||
}
|
||||
],
|
||||
"description": "Wrapper around PHP's tokenizer extension.",
|
||||
"homepage": "http://www.phpunit.de/",
|
||||
"homepage": "https://github.com/sebastianbergmann/php-token-stream/",
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"time": "2012-10-11 04:47:14"
|
||||
"time": "2013-08-04 05:57:48"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "3.7.22",
|
||||
"version": "3.7.24",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "3.7.22"
|
||||
"reference": "af7b77ccb5c64458bdfca95665d29558d1df7d08"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3.7.22",
|
||||
"reference": "3.7.22",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/af7b77ccb5c64458bdfca95665d29558d1df7d08",
|
||||
"reference": "af7b77ccb5c64458bdfca95665d29558d1df7d08",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -913,7 +1102,7 @@
|
|||
"phpunit/php-code-coverage": "~1.2.1",
|
||||
"phpunit/php-file-iterator": ">=1.3.1",
|
||||
"phpunit/php-text-template": ">=1.1.1",
|
||||
"phpunit/php-timer": "~1.0.2",
|
||||
"phpunit/php-timer": ">=1.0.4",
|
||||
"phpunit/phpunit-mock-objects": "~1.2.0",
|
||||
"symfony/yaml": "~2.0"
|
||||
},
|
||||
|
@ -962,20 +1151,20 @@
|
|||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2013-07-06 06:29:15"
|
||||
"time": "2013-08-09 06:58:24"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit-mock-objects",
|
||||
"version": "1.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
||||
"reference": "1.2.3"
|
||||
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
||||
"reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip",
|
||||
"reference": "1.2.3",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875",
|
||||
"reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1015,17 +1204,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/browser-kit",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.1.12",
|
||||
"target-dir": "Symfony/Component/BrowserKit",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/BrowserKit.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "0bb8f07107a2911db0fe49c39f96b5018e5ab678"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/BrowserKit/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/BrowserKit/zipball/0bb8f07107a2911db0fe49c39f96b5018e5ab678",
|
||||
"reference": "0bb8f07107a2911db0fe49c39f96b5018e5ab678",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1065,17 +1254,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.1.12",
|
||||
"target-dir": "Symfony/Component/CssSelector",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/CssSelector.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "bf7bb82a099dfb26b018daf70ad1985fea4d2997"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/CssSelector/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/CssSelector/zipball/bf7bb82a099dfb26b018daf70ad1985fea4d2997",
|
||||
"reference": "bf7bb82a099dfb26b018daf70ad1985fea4d2997",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1107,17 +1296,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/dom-crawler",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.1.12",
|
||||
"target-dir": "Symfony/Component/DomCrawler",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/DomCrawler.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "bedfd7eb44e3b1224d1e18335d2e36bbbed26cbe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/DomCrawler/zipball/bedfd7eb44e3b1224d1e18335d2e36bbbed26cbe",
|
||||
"reference": "bedfd7eb44e3b1224d1e18335d2e36bbbed26cbe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1155,17 +1344,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.1.12",
|
||||
"target-dir": "Symfony/Component/Finder",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Finder.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "0dbc61194b58bc513e003789853ddfe0aea8cf33"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Finder/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Finder/zipball/0dbc61194b58bc513e003789853ddfe0aea8cf33",
|
||||
"reference": "0dbc61194b58bc513e003789853ddfe0aea8cf33",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1197,17 +1386,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v2.1.11",
|
||||
"version": "v2.1.12",
|
||||
"target-dir": "Symfony/Component/Process",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Process.git",
|
||||
"reference": "v2.1.11"
|
||||
"reference": "be3cac4d0575bc547a0f2e85ceb4f19a5a8b3025"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Process/zipball/v2.1.11",
|
||||
"reference": "v2.1.11",
|
||||
"url": "https://api.github.com/repos/symfony/Process/zipball/be3cac4d0575bc547a0f2e85ceb4f19a5a8b3025",
|
||||
"reference": "be3cac4d0575bc547a0f2e85ceb4f19a5a8b3025",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
|
@ -90,6 +90,7 @@ services:
|
|||
arguments:
|
||||
- @template
|
||||
- @user
|
||||
- @request
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
|
||||
|
@ -98,7 +99,7 @@ services:
|
|||
arguments:
|
||||
- @user
|
||||
- @service_container
|
||||
- @style
|
||||
- @template
|
||||
|
||||
cron.task_collection:
|
||||
class: phpbb_di_service_collection
|
||||
|
@ -251,30 +252,6 @@ services:
|
|||
request:
|
||||
class: phpbb_request
|
||||
|
||||
style:
|
||||
class: phpbb_style
|
||||
arguments:
|
||||
- %core.root_path%
|
||||
- %core.php_ext%
|
||||
- @config
|
||||
- @user
|
||||
- @style.resource_locator
|
||||
- @style.path_provider_ext
|
||||
- @template
|
||||
|
||||
style.resource_locator:
|
||||
class: phpbb_style_resource_locator
|
||||
|
||||
style.path_provider_ext:
|
||||
class: phpbb_style_extension_path_provider
|
||||
arguments:
|
||||
- @ext.manager
|
||||
- @style.path_provider
|
||||
- %core.root_path%
|
||||
|
||||
style.path_provider:
|
||||
class: phpbb_style_path_provider
|
||||
|
||||
template:
|
||||
class: phpbb_template_twig
|
||||
arguments:
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -185,6 +185,9 @@
|
|||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11674">PHPBB3-11674</a>] - Do not include vendor folder if there are no dependencies.</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11524">PHPBB3-11524</a>] - MySQL Upgrader throws warnings on PHP 5.4</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11720">PHPBB3-11720</a>] - Reporting posts leads to white page error</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11769">PHPBB3-11769</a>] - Wrong poster in subscription email when poster is using the Quote button</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11775">PHPBB3-11775</a>] - Error while moving posts to a new topic</li>
|
||||
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11802">PHPBB3-11802</a>] - Undefined variable $browser in /download/file.php</li>
|
||||
</ul>
|
||||
<h4>Improvement</h4>
|
||||
<ul>
|
||||
|
|
|
@ -179,6 +179,66 @@ ucp_pm_viewmessage_print_head_append
|
|||
* Location: styles/prosilver/template/ucp_pm_viewmessage_print.html
|
||||
* Purpose: Add asset calls directly before the `</head>` tag of the Print PM screen
|
||||
|
||||
ucp_prefs_personal_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_personal.html
|
||||
+ styles/subsilver2/template/ucp_prefs_personal.html
|
||||
* Purpose: Add user options to the top of the Edit Global Settings block
|
||||
|
||||
ucp_prefs_personal_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_personal.html
|
||||
+ styles/subsilver2/template/ucp_prefs_personal.html
|
||||
* Purpose: Add user options to the bottom of the Edit Global Settings block
|
||||
|
||||
ucp_prefs_post_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_post.html
|
||||
+ styles/subsilver2/template/ucp_prefs_post.html
|
||||
* Purpose: Add user options to the top of the Edit Posting Defaults block
|
||||
|
||||
ucp_prefs_post_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_post.html
|
||||
+ styles/subsilver2/template/ucp_prefs_post.html
|
||||
* Purpose: Add user options to the bottom of the Edit Posting Defaults block
|
||||
|
||||
ucp_prefs_view_radio_buttons_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_view.html
|
||||
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||
* Purpose: Add options to the top of the radio buttons block of the Edit
|
||||
Display Options screen
|
||||
|
||||
ucp_prefs_view_radio_buttons_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_view.html
|
||||
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||
* Purpose: Add options to the bottom of the radio buttons block of the Edit
|
||||
Display Options screen
|
||||
|
||||
ucp_prefs_view_select_menu_prepend
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_view.html
|
||||
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||
* Purpose: Add options to the top of the drop-down lists block of the Edit
|
||||
Display Options screen
|
||||
|
||||
ucp_prefs_view_select_menu_append
|
||||
===
|
||||
* Locations:
|
||||
+ styles/prosilver/template/ucp_prefs_view.html
|
||||
+ styles/subsilver2/template/ucp_prefs_view.html
|
||||
* Purpose: Add options to the bottom of the drop-down lists block of the Edit
|
||||
Display Options screen
|
||||
|
||||
viewtopic_print_head_append
|
||||
===
|
||||
* Location: styles/prosilver/template/viewtopic_print.html
|
||||
|
|
|
@ -132,11 +132,8 @@ class bbcode
|
|||
{
|
||||
$this->template_bitfield = new bitfield($user->style['bbcode_bitfield']);
|
||||
|
||||
$style_resource_locator = new phpbb_style_resource_locator();
|
||||
$style_path_provider = new phpbb_style_extension_path_provider($phpbb_extension_manager, new phpbb_style_path_provider(), $phpbb_root_path);
|
||||
$template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $user, new phpbb_template_context(), $phpbb_extension_manager);
|
||||
$style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, $style_path_provider, $template);
|
||||
$style->set_style();
|
||||
$template->set_style();
|
||||
$template->set_filenames(array('bbcode.html' => 'bbcode.html'));
|
||||
$this->template_filename = $template->get_source_file_for_handle('bbcode.html');
|
||||
}
|
||||
|
|
1194
phpBB/includes/db/schema_data.php
Normal file
1194
phpBB/includes/db/schema_data.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -2413,6 +2413,7 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
|||
{
|
||||
global $_SID, $_EXTRA_URL, $phpbb_hook;
|
||||
global $phpbb_dispatcher;
|
||||
global $symfony_request, $phpbb_root_path;
|
||||
|
||||
if ($params === '' || (is_array($params) && empty($params)))
|
||||
{
|
||||
|
@ -2420,6 +2421,12 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
|||
$params = false;
|
||||
}
|
||||
|
||||
$corrected_path = $symfony_request !== null ? phpbb_get_web_root_path($symfony_request, $phpbb_root_path) : '';
|
||||
if ($corrected_path)
|
||||
{
|
||||
$url = substr($corrected_path . $url, strlen($phpbb_root_path));
|
||||
}
|
||||
|
||||
$append_sid_overwrite = false;
|
||||
|
||||
/**
|
||||
|
@ -5051,7 +5058,7 @@ function phpbb_build_hidden_fields_for_query_params($request, $exclude = null)
|
|||
function page_header($page_title = '', $display_online_list = true, $item_id = 0, $item = 'forum')
|
||||
{
|
||||
global $db, $config, $template, $SID, $_SID, $_EXTRA_URL, $user, $auth, $phpEx, $phpbb_root_path;
|
||||
global $phpbb_dispatcher, $request, $phpbb_container;
|
||||
global $phpbb_dispatcher, $request, $phpbb_container, $symfony_request;
|
||||
|
||||
if (defined('HEADER_INC'))
|
||||
{
|
||||
|
@ -5208,7 +5215,11 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
|||
|
||||
// Determine board url - we may need it later
|
||||
$board_url = generate_board_url() . '/';
|
||||
$web_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $phpbb_root_path;
|
||||
// This path is sent with the base template paths in the assign_vars()
|
||||
// call below. We need to correct it in case we are accessing from a
|
||||
// controller because the web paths will be incorrect otherwise.
|
||||
$corrected_path = $symfony_request !== null ? phpbb_get_web_root_path($symfony_request, $phpbb_root_path) : '';
|
||||
$web_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $corrected_path;
|
||||
|
||||
// Send a proper content-language to the output
|
||||
$user_lang = $user->lang['USER_LANG'];
|
||||
|
@ -5682,6 +5693,16 @@ function phpbb_convert_30_dbms_to_31($dbms)
|
|||
*/
|
||||
function phpbb_create_symfony_request(phpbb_request $request)
|
||||
{
|
||||
// If we have already gotten it, don't go back through all the trouble of
|
||||
// creating it again; instead, just return it. This allows multiple calls
|
||||
// of this method so we don't have to globalize $symfony_request in other
|
||||
// functions.
|
||||
static $symfony_request;
|
||||
if (null !== $symfony_request)
|
||||
{
|
||||
return $symfony_request;
|
||||
}
|
||||
|
||||
// This function is meant to sanitize the global input arrays
|
||||
$sanitizer = function(&$value, $key) {
|
||||
$type_cast_helper = new phpbb_request_type_cast_helper();
|
||||
|
@ -5701,21 +5722,39 @@ function phpbb_create_symfony_request(phpbb_request $request)
|
|||
array_walk_recursive($get_parameters, $sanitizer);
|
||||
array_walk_recursive($post_parameters, $sanitizer);
|
||||
|
||||
// Until we fix the issue with relative paths, we have to fake path info
|
||||
// to allow urls like app.php?controller=foo/bar
|
||||
$controller = $request->variable('controller', '');
|
||||
$path_info = '/' . $controller;
|
||||
$request_uri = $server_parameters['REQUEST_URI'];
|
||||
$symfony_request = new Request($get_parameters, $post_parameters, array(), $cookie_parameters, $files_parameters, $server_parameters);
|
||||
return $symfony_request;
|
||||
}
|
||||
|
||||
// Remove the query string from REQUEST_URI
|
||||
if ($pos = strpos($request_uri, '?'))
|
||||
/**
|
||||
* Get a relative root path from the current URL
|
||||
*
|
||||
* @param Request $symfony_request Symfony Request object
|
||||
*/
|
||||
function phpbb_get_web_root_path(Request $symfony_request, $phpbb_root_path = '')
|
||||
{
|
||||
static $path;
|
||||
if (null !== $path)
|
||||
{
|
||||
$request_uri = substr($request_uri, 0, $pos);
|
||||
return $path;
|
||||
}
|
||||
|
||||
// Add the path info (i.e. controller route) to the REQUEST_URI
|
||||
$server_parameters['REQUEST_URI'] = $request_uri . $path_info;
|
||||
$server_parameters['SCRIPT_NAME'] = '';
|
||||
$path_info = $symfony_request->getPathInfo();
|
||||
if ($path_info === '/')
|
||||
{
|
||||
$path = $phpbb_root_path;
|
||||
return $path;
|
||||
}
|
||||
|
||||
return new Request($get_parameters, $post_parameters, array(), $cookie_parameters, $files_parameters, $server_parameters);
|
||||
$corrections = substr_count($path_info, '/');
|
||||
|
||||
// When URL Rewriting is enabled, app.php is optional. We have to
|
||||
// correct for it not being there
|
||||
if (strpos($symfony_request->getRequestUri(), $symfony_request->getScriptName()) === false)
|
||||
{
|
||||
$corrections -= 1;
|
||||
}
|
||||
|
||||
$path = $phpbb_root_path . str_repeat('../', $corrections);
|
||||
return $path;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ if (!defined('IN_PHPBB'))
|
|||
*/
|
||||
class messenger
|
||||
{
|
||||
var $vars, $msg, $extra_headers, $replyto, $from, $subject;
|
||||
var $msg, $extra_headers, $replyto, $from, $subject;
|
||||
var $addresses = array();
|
||||
|
||||
var $mail_priority = MAIL_NORMAL_PRIORITY;
|
||||
|
@ -53,7 +53,7 @@ class messenger
|
|||
function reset()
|
||||
{
|
||||
$this->addresses = $this->extra_headers = array();
|
||||
$this->vars = $this->msg = $this->replyto = $this->from = '';
|
||||
$this->msg = $this->replyto = $this->from = '';
|
||||
$this->mail_priority = MAIL_NORMAL_PRIORITY;
|
||||
}
|
||||
|
||||
|
@ -258,8 +258,6 @@ class messenger
|
|||
'body' => $template_file . '.txt',
|
||||
));
|
||||
|
||||
$this->vars = $this->template->get_template_vars();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -288,26 +286,11 @@ class messenger
|
|||
global $config, $user;
|
||||
|
||||
// We add some standard variables we always use, no need to specify them always
|
||||
if (!isset($this->vars['U_BOARD']))
|
||||
{
|
||||
$this->assign_vars(array(
|
||||
'U_BOARD' => generate_board_url(),
|
||||
));
|
||||
}
|
||||
|
||||
if (!isset($this->vars['EMAIL_SIG']))
|
||||
{
|
||||
$this->assign_vars(array(
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . htmlspecialchars_decode($config['board_email_sig'])),
|
||||
));
|
||||
}
|
||||
|
||||
if (!isset($this->vars['SITENAME']))
|
||||
{
|
||||
$this->assign_vars(array(
|
||||
'SITENAME' => htmlspecialchars_decode($config['sitename']),
|
||||
));
|
||||
}
|
||||
$this->assign_vars(array(
|
||||
'U_BOARD' => generate_board_url(),
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . htmlspecialchars_decode($config['board_email_sig'])),
|
||||
'SITENAME' => htmlspecialchars_decode($config['sitename']),
|
||||
));
|
||||
|
||||
// Parse message through template
|
||||
$this->msg = trim($this->template->assign_display('body'));
|
||||
|
@ -660,7 +643,7 @@ class messenger
|
|||
{
|
||||
$this->setup_template();
|
||||
|
||||
$this->template->set_style_names(array($path_name), $paths);
|
||||
$this->template->set_custom_style($path_name, $paths);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -455,7 +455,7 @@ class p_master
|
|||
*/
|
||||
function load_active($mode = false, $module_url = false, $execute_module = true)
|
||||
{
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $user, $phpbb_style;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $user, $template;
|
||||
|
||||
$module_path = $this->include_path . $this->p_class;
|
||||
$icat = request_var('icat', '');
|
||||
|
@ -508,7 +508,7 @@ class p_master
|
|||
|
||||
if (is_dir($module_style_dir))
|
||||
{
|
||||
$phpbb_style->set_custom_style('admin', array($module_style_dir, $phpbb_admin_path . 'style'), array(), '');
|
||||
$template->set_custom_style('adm', array($module_style_dir, $phpbb_admin_path . 'style'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -537,7 +537,7 @@ class p_master
|
|||
|
||||
if (is_dir($phpbb_root_path . $module_style_dir))
|
||||
{
|
||||
$phpbb_style->set_style(array($module_style_dir, 'styles'));
|
||||
$template->set_style(array($module_style_dir, 'styles'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2166,6 +2166,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
|||
update_forum_tracking_info($data['forum_id'], $forum_last_post_time, $f_mark_time, false);
|
||||
}
|
||||
|
||||
// If a username was supplied or the poster is a guest, we will use the supplied username.
|
||||
// Doing it this way we can use "...post by guest-username..." in notifications when
|
||||
// "guest-username" is supplied or ommit the username if it is not.
|
||||
$username = ($username !== '' || !$user->data['is_registered']) ? $username : $user->data['username'];
|
||||
|
||||
// Send Notifications
|
||||
$notification_data = array_merge($data, array(
|
||||
'topic_title' => (isset($data['topic_title'])) ? $data['topic_title'] : $subject,
|
||||
|
|
|
@ -26,7 +26,7 @@ class ucp_prefs
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
|
||||
global $config, $db, $user, $auth, $template, $phpbb_dispatcher, $phpbb_root_path, $phpEx;
|
||||
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
$error = $data = array();
|
||||
|
@ -55,6 +55,20 @@ class ucp_prefs
|
|||
$data['notifymethod'] = NOTIFY_BOTH;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add UCP edit global settings data before they are assigned to the template or submitted
|
||||
*
|
||||
* To assign data to the template, use $template->assign_vars()
|
||||
*
|
||||
* @event core.ucp_prefs_personal_data
|
||||
* @var bool submit Do we display the form only
|
||||
* or did the user press submit
|
||||
* @var array data Array with current ucp options data
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('submit', 'data');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_data', compact($vars)));
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
if ($config['override_user_style'])
|
||||
|
@ -93,6 +107,17 @@ class ucp_prefs
|
|||
'user_style' => $data['style'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Update UCP edit global settings data on form submit
|
||||
*
|
||||
* @event core.ucp_prefs_personal_update_data
|
||||
* @var array data Submitted display options data
|
||||
* @var array sql_ary Display options data we udpate
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('data', 'sql_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_update_data', compact($vars)));
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||
WHERE user_id = ' . $user->data['user_id'];
|
||||
|
@ -209,6 +234,20 @@ class ucp_prefs
|
|||
'wordcensor' => request_var('wordcensor', (bool) $user->optionget('viewcensors')),
|
||||
);
|
||||
|
||||
/**
|
||||
* Add UCP edit display options data before they are assigned to the template or submitted
|
||||
*
|
||||
* To assign data to the template, use $template->assign_vars()
|
||||
*
|
||||
* @event core.ucp_prefs_view_data
|
||||
* @var bool submit Do we display the form only
|
||||
* or did the user press submit
|
||||
* @var array data Array with current ucp options data
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('submit', 'data');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_data', compact($vars)));
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
$error = validate_data($data, array(
|
||||
|
@ -247,6 +286,17 @@ class ucp_prefs
|
|||
'user_post_show_days' => $data['post_st'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Update UCP edit display options data on form submit
|
||||
*
|
||||
* @event core.ucp_prefs_view_update_data
|
||||
* @var array data Submitted display options data
|
||||
* @var array sql_ary Display options data we udpate
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('data', 'sql_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_update_data', compact($vars)));
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||
WHERE user_id = ' . $user->data['user_id'];
|
||||
|
@ -335,6 +385,20 @@ class ucp_prefs
|
|||
);
|
||||
add_form_key('ucp_prefs_post');
|
||||
|
||||
/**
|
||||
* Add UCP edit posting defaults data before they are assigned to the template or submitted
|
||||
*
|
||||
* To assign data to the template, use $template->assign_vars()
|
||||
*
|
||||
* @event core.ucp_prefs_post_data
|
||||
* @var bool submit Do we display the form only
|
||||
* or did the user press submit
|
||||
* @var array data Array with current ucp options data
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('submit', 'data');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_data', compact($vars)));
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
if (check_form_key('ucp_prefs_post'))
|
||||
|
@ -348,6 +412,17 @@ class ucp_prefs
|
|||
'user_notify' => $data['notify'],
|
||||
);
|
||||
|
||||
/**
|
||||
* Update UCP edit posting defaults data on form submit
|
||||
*
|
||||
* @event core.ucp_prefs_post_update_data
|
||||
* @var array data Submitted display options data
|
||||
* @var array sql_ary Display options data we udpate
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('data', 'sql_ary');
|
||||
extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_update_data', compact($vars)));
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||
WHERE user_id = ' . $user->data['user_id'];
|
||||
|
|
|
@ -244,15 +244,10 @@ $config = new phpbb_config(array(
|
|||
'load_tplcompile' => '1'
|
||||
));
|
||||
|
||||
$phpbb_style_resource_locator = new phpbb_style_resource_locator();
|
||||
$phpbb_style_path_provider = new phpbb_style_path_provider();
|
||||
$template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $user, new phpbb_template_context());
|
||||
$phpbb_style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $phpbb_style_resource_locator, $phpbb_style_path_provider, $template);
|
||||
$phpbb_style->set_ext_dir_prefix('adm/');
|
||||
|
||||
$paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_path . 'style');
|
||||
$paths = array_filter($paths, 'is_dir');
|
||||
$phpbb_style->set_custom_style('admin', $paths, array(), '');
|
||||
$template->set_custom_style('adm', $paths);
|
||||
|
||||
$template->assign_var('T_ASSETS_PATH', '../assets');
|
||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
||||
|
|
|
@ -70,7 +70,7 @@ class install_update extends module
|
|||
|
||||
function main($mode, $sub)
|
||||
{
|
||||
global $phpbb_style, $template, $phpEx, $phpbb_root_path, $user, $db, $config, $cache, $auth, $language;
|
||||
global $template, $phpEx, $phpbb_root_path, $user, $db, $config, $cache, $auth, $language;
|
||||
global $request, $phpbb_admin_path, $phpbb_adm_relative_path, $phpbb_container;
|
||||
|
||||
// We must enable super globals, otherwise creating a new instance of the request class,
|
||||
|
@ -143,7 +143,7 @@ class install_update extends module
|
|||
// Set custom template again. ;)
|
||||
$paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_path . 'style');
|
||||
$paths = array_filter($paths, 'is_dir');
|
||||
$phpbb_style->set_custom_style('admin', $paths, array(), '');
|
||||
$template->set_custom_style('adm', $paths);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_USER_LANG' => $user->lang['USER_LANG'],
|
||||
|
|
|
@ -2,7 +2,7 @@ Subject: Forum post notification - "{FORUM_NAME}"
|
|||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
|
||||
|
||||
{U_NEWEST_POST}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ Subject: New topic notification - "{FORUM_NAME}"
|
|||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
|
||||
|
||||
{U_FORUM}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ Subject: Topic reply notification - "{TOPIC_TITLE}"
|
|||
|
||||
Hello {USERNAME},
|
||||
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
|
||||
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
|
||||
|
||||
If you want to view the newest post made since your last visit, click the following link:
|
||||
{U_NEWEST_POST}
|
||||
|
|
|
@ -35,6 +35,12 @@ class phpbb_controller_helper
|
|||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Request object
|
||||
* @var phpbb_request
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* phpBB root path
|
||||
* @var string
|
||||
|
@ -55,10 +61,11 @@ class phpbb_controller_helper
|
|||
* @param string $phpbb_root_path phpBB root path
|
||||
* @param string $php_ext PHP extension
|
||||
*/
|
||||
public function __construct(phpbb_template $template, phpbb_user $user, $phpbb_root_path, $php_ext)
|
||||
public function __construct(phpbb_template $template, phpbb_user $user, phpbb_request_interface $request, $phpbb_root_path, $php_ext)
|
||||
{
|
||||
$this->template = $template;
|
||||
$this->user = $user;
|
||||
$this->request = $request;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
}
|
||||
|
@ -102,22 +109,16 @@ class phpbb_controller_helper
|
|||
$route = substr($route, 0, $route_delim);
|
||||
}
|
||||
|
||||
if (is_array($params) && !empty($params))
|
||||
{
|
||||
$params = array_merge(array(
|
||||
'controller' => $route,
|
||||
), $params);
|
||||
}
|
||||
else if (is_string($params) && $params)
|
||||
{
|
||||
$params = 'controller=' . $route . (($is_amp) ? '&' : '&') . $params;
|
||||
}
|
||||
else
|
||||
{
|
||||
$params = array('controller' => $route);
|
||||
}
|
||||
$request_uri = $this->request->variable('REQUEST_URI', '', false, phpbb_request::SERVER);
|
||||
$script_name = $this->request->variable('SCRIPT_NAME', '', false, phpbb_request::SERVER);
|
||||
|
||||
return append_sid($this->phpbb_root_path . 'app.' . $this->php_ext . $route_params, $params, $is_amp, $session_id);
|
||||
// If the app.php file is being used (no rewrite) keep it in the URL.
|
||||
// Otherwise, don't include it.
|
||||
$route_prefix = $this->phpbb_root_path;
|
||||
$parts = explode('/', $script_name);
|
||||
$route_prefix .= strpos($request_uri, $script_name) === 0 ? array_pop($parts) . '/' : '';
|
||||
|
||||
return append_sid($route_prefix . "$route" . $route_params, $params, $is_amp, $session_id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -38,23 +38,23 @@ class phpbb_controller_resolver implements ControllerResolverInterface
|
|||
protected $container;
|
||||
|
||||
/**
|
||||
* phpbb_style object
|
||||
* @var phpbb_style
|
||||
* phpbb_template object
|
||||
* @var phpbb_template
|
||||
*/
|
||||
protected $style;
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* Construct method
|
||||
*
|
||||
* @param phpbb_user $user User Object
|
||||
* @param ContainerInterface $container ContainerInterface object
|
||||
* @param phpbb_style $style
|
||||
* @param phpbb_template $template
|
||||
*/
|
||||
public function __construct(phpbb_user $user, ContainerInterface $container, phpbb_style $style = null)
|
||||
public function __construct(phpbb_user $user, ContainerInterface $container, phpbb_template $template = null)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->container = $container;
|
||||
$this->style = $style;
|
||||
$this->template = $template;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -96,13 +96,13 @@ class phpbb_controller_resolver implements ControllerResolverInterface
|
|||
$controller_dir = explode('_', get_class($controller_object));
|
||||
|
||||
// 0 phpbb, 1 ext, 2 vendor, 3 extension name, ...
|
||||
if (!is_null($this->style) && isset($controller_dir[3]) && $controller_dir[1] === 'ext')
|
||||
if (!is_null($this->template) && isset($controller_dir[3]) && $controller_dir[1] === 'ext')
|
||||
{
|
||||
$controller_style_dir = 'ext/' . $controller_dir[2] . '/' . $controller_dir[3] . '/styles';
|
||||
|
||||
if (is_dir($controller_style_dir))
|
||||
{
|
||||
$this->style->set_style(array($controller_style_dir, 'styles'));
|
||||
$this->template->set_style(array($controller_style_dir, 'styles'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,247 +37,257 @@ class phpbb_db_tools
|
|||
* The Column types for every database we support
|
||||
* @var array
|
||||
*/
|
||||
var $dbms_type_map = array(
|
||||
'mysql_41' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'smallint(4) UNSIGNED',
|
||||
'BOOL' => 'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'text',
|
||||
'XSTEXT_UNI'=> 'varchar(100)',
|
||||
'STEXT' => 'text',
|
||||
'STEXT_UNI' => 'varchar(255)',
|
||||
'TEXT' => 'text',
|
||||
'TEXT_UNI' => 'text',
|
||||
'MTEXT' => 'mediumtext',
|
||||
'MTEXT_UNI' => 'mediumtext',
|
||||
'TIMESTAMP' => 'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar(255)',
|
||||
'VARBINARY' => 'varbinary(255)',
|
||||
),
|
||||
var $dbms_type_map = array();
|
||||
|
||||
'mysql_40' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'smallint(4) UNSIGNED',
|
||||
'BOOL' => 'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varbinary(255)',
|
||||
'VCHAR:' => 'varbinary(%d)',
|
||||
'CHAR:' => 'binary(%d)',
|
||||
'XSTEXT' => 'blob',
|
||||
'XSTEXT_UNI'=> 'blob',
|
||||
'STEXT' => 'blob',
|
||||
'STEXT_UNI' => 'blob',
|
||||
'TEXT' => 'blob',
|
||||
'TEXT_UNI' => 'blob',
|
||||
'MTEXT' => 'mediumblob',
|
||||
'MTEXT_UNI' => 'mediumblob',
|
||||
'TIMESTAMP' => 'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'blob',
|
||||
'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')),
|
||||
'VCHAR_CI' => 'blob',
|
||||
'VARBINARY' => 'varbinary(255)',
|
||||
),
|
||||
/**
|
||||
* Get the column types for every database we support
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function get_dbms_type_map()
|
||||
{
|
||||
return array(
|
||||
'mysql_41' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'smallint(4) UNSIGNED',
|
||||
'BOOL' => 'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'text',
|
||||
'XSTEXT_UNI'=> 'varchar(100)',
|
||||
'STEXT' => 'text',
|
||||
'STEXT_UNI' => 'varchar(255)',
|
||||
'TEXT' => 'text',
|
||||
'TEXT_UNI' => 'text',
|
||||
'MTEXT' => 'mediumtext',
|
||||
'MTEXT_UNI' => 'mediumtext',
|
||||
'TIMESTAMP' => 'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar(255)',
|
||||
'VARBINARY' => 'varbinary(255)',
|
||||
),
|
||||
|
||||
'firebird' => array(
|
||||
'INT:' => 'INTEGER',
|
||||
'BINT' => 'DOUBLE PRECISION',
|
||||
'UINT' => 'INTEGER',
|
||||
'UINT:' => 'INTEGER',
|
||||
'TINT:' => 'INTEGER',
|
||||
'USINT' => 'INTEGER',
|
||||
'BOOL' => 'INTEGER',
|
||||
'VCHAR' => 'VARCHAR(255) CHARACTER SET NONE',
|
||||
'VCHAR:' => 'VARCHAR(%d) CHARACTER SET NONE',
|
||||
'CHAR:' => 'CHAR(%d) CHARACTER SET NONE',
|
||||
'XSTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'STEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'TEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'MTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'XSTEXT_UNI'=> 'VARCHAR(100) CHARACTER SET UTF8',
|
||||
'STEXT_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'TEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
|
||||
'MTEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
|
||||
'TIMESTAMP' => 'INTEGER',
|
||||
'DECIMAL' => 'DOUBLE PRECISION',
|
||||
'DECIMAL:' => 'DOUBLE PRECISION',
|
||||
'PDECIMAL' => 'DOUBLE PRECISION',
|
||||
'PDECIMAL:' => 'DOUBLE PRECISION',
|
||||
'VCHAR_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'VCHAR_UNI:'=> 'VARCHAR(%d) CHARACTER SET UTF8',
|
||||
'VCHAR_CI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'VARBINARY' => 'CHAR(255) CHARACTER SET NONE',
|
||||
),
|
||||
'mysql_40' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'smallint(4) UNSIGNED',
|
||||
'BOOL' => 'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varbinary(255)',
|
||||
'VCHAR:' => 'varbinary(%d)',
|
||||
'CHAR:' => 'binary(%d)',
|
||||
'XSTEXT' => 'blob',
|
||||
'XSTEXT_UNI'=> 'blob',
|
||||
'STEXT' => 'blob',
|
||||
'STEXT_UNI' => 'blob',
|
||||
'TEXT' => 'blob',
|
||||
'TEXT_UNI' => 'blob',
|
||||
'MTEXT' => 'mediumblob',
|
||||
'MTEXT_UNI' => 'mediumblob',
|
||||
'TIMESTAMP' => 'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'blob',
|
||||
'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')),
|
||||
'VCHAR_CI' => 'blob',
|
||||
'VARBINARY' => 'varbinary(255)',
|
||||
),
|
||||
|
||||
'mssql' => array(
|
||||
'INT:' => '[int]',
|
||||
'BINT' => '[float]',
|
||||
'UINT' => '[int]',
|
||||
'UINT:' => '[int]',
|
||||
'TINT:' => '[int]',
|
||||
'USINT' => '[int]',
|
||||
'BOOL' => '[int]',
|
||||
'VCHAR' => '[varchar] (255)',
|
||||
'VCHAR:' => '[varchar] (%d)',
|
||||
'CHAR:' => '[char] (%d)',
|
||||
'XSTEXT' => '[varchar] (1000)',
|
||||
'STEXT' => '[varchar] (3000)',
|
||||
'TEXT' => '[varchar] (8000)',
|
||||
'MTEXT' => '[text]',
|
||||
'XSTEXT_UNI'=> '[varchar] (100)',
|
||||
'STEXT_UNI' => '[varchar] (255)',
|
||||
'TEXT_UNI' => '[varchar] (4000)',
|
||||
'MTEXT_UNI' => '[text]',
|
||||
'TIMESTAMP' => '[int]',
|
||||
'DECIMAL' => '[float]',
|
||||
'DECIMAL:' => '[float]',
|
||||
'PDECIMAL' => '[float]',
|
||||
'PDECIMAL:' => '[float]',
|
||||
'VCHAR_UNI' => '[varchar] (255)',
|
||||
'VCHAR_UNI:'=> '[varchar] (%d)',
|
||||
'VCHAR_CI' => '[varchar] (255)',
|
||||
'VARBINARY' => '[varchar] (255)',
|
||||
),
|
||||
'firebird' => array(
|
||||
'INT:' => 'INTEGER',
|
||||
'BINT' => 'DOUBLE PRECISION',
|
||||
'UINT' => 'INTEGER',
|
||||
'UINT:' => 'INTEGER',
|
||||
'TINT:' => 'INTEGER',
|
||||
'USINT' => 'INTEGER',
|
||||
'BOOL' => 'INTEGER',
|
||||
'VCHAR' => 'VARCHAR(255) CHARACTER SET NONE',
|
||||
'VCHAR:' => 'VARCHAR(%d) CHARACTER SET NONE',
|
||||
'CHAR:' => 'CHAR(%d) CHARACTER SET NONE',
|
||||
'XSTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'STEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'TEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'MTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
|
||||
'XSTEXT_UNI'=> 'VARCHAR(100) CHARACTER SET UTF8',
|
||||
'STEXT_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'TEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
|
||||
'MTEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
|
||||
'TIMESTAMP' => 'INTEGER',
|
||||
'DECIMAL' => 'DOUBLE PRECISION',
|
||||
'DECIMAL:' => 'DOUBLE PRECISION',
|
||||
'PDECIMAL' => 'DOUBLE PRECISION',
|
||||
'PDECIMAL:' => 'DOUBLE PRECISION',
|
||||
'VCHAR_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'VCHAR_UNI:'=> 'VARCHAR(%d) CHARACTER SET UTF8',
|
||||
'VCHAR_CI' => 'VARCHAR(255) CHARACTER SET UTF8',
|
||||
'VARBINARY' => 'CHAR(255) CHARACTER SET NONE',
|
||||
),
|
||||
|
||||
'mssqlnative' => array(
|
||||
'INT:' => '[int]',
|
||||
'BINT' => '[float]',
|
||||
'UINT' => '[int]',
|
||||
'UINT:' => '[int]',
|
||||
'TINT:' => '[int]',
|
||||
'USINT' => '[int]',
|
||||
'BOOL' => '[int]',
|
||||
'VCHAR' => '[varchar] (255)',
|
||||
'VCHAR:' => '[varchar] (%d)',
|
||||
'CHAR:' => '[char] (%d)',
|
||||
'XSTEXT' => '[varchar] (1000)',
|
||||
'STEXT' => '[varchar] (3000)',
|
||||
'TEXT' => '[varchar] (8000)',
|
||||
'MTEXT' => '[text]',
|
||||
'XSTEXT_UNI'=> '[varchar] (100)',
|
||||
'STEXT_UNI' => '[varchar] (255)',
|
||||
'TEXT_UNI' => '[varchar] (4000)',
|
||||
'MTEXT_UNI' => '[text]',
|
||||
'TIMESTAMP' => '[int]',
|
||||
'DECIMAL' => '[float]',
|
||||
'DECIMAL:' => '[float]',
|
||||
'PDECIMAL' => '[float]',
|
||||
'PDECIMAL:' => '[float]',
|
||||
'VCHAR_UNI' => '[varchar] (255)',
|
||||
'VCHAR_UNI:'=> '[varchar] (%d)',
|
||||
'VCHAR_CI' => '[varchar] (255)',
|
||||
'VARBINARY' => '[varchar] (255)',
|
||||
),
|
||||
'mssql' => array(
|
||||
'INT:' => '[int]',
|
||||
'BINT' => '[float]',
|
||||
'UINT' => '[int]',
|
||||
'UINT:' => '[int]',
|
||||
'TINT:' => '[int]',
|
||||
'USINT' => '[int]',
|
||||
'BOOL' => '[int]',
|
||||
'VCHAR' => '[varchar] (255)',
|
||||
'VCHAR:' => '[varchar] (%d)',
|
||||
'CHAR:' => '[char] (%d)',
|
||||
'XSTEXT' => '[varchar] (1000)',
|
||||
'STEXT' => '[varchar] (3000)',
|
||||
'TEXT' => '[varchar] (8000)',
|
||||
'MTEXT' => '[text]',
|
||||
'XSTEXT_UNI'=> '[varchar] (100)',
|
||||
'STEXT_UNI' => '[varchar] (255)',
|
||||
'TEXT_UNI' => '[varchar] (4000)',
|
||||
'MTEXT_UNI' => '[text]',
|
||||
'TIMESTAMP' => '[int]',
|
||||
'DECIMAL' => '[float]',
|
||||
'DECIMAL:' => '[float]',
|
||||
'PDECIMAL' => '[float]',
|
||||
'PDECIMAL:' => '[float]',
|
||||
'VCHAR_UNI' => '[varchar] (255)',
|
||||
'VCHAR_UNI:'=> '[varchar] (%d)',
|
||||
'VCHAR_CI' => '[varchar] (255)',
|
||||
'VARBINARY' => '[varchar] (255)',
|
||||
),
|
||||
|
||||
'oracle' => array(
|
||||
'INT:' => 'number(%d)',
|
||||
'BINT' => 'number(20)',
|
||||
'UINT' => 'number(8)',
|
||||
'UINT:' => 'number(%d)',
|
||||
'TINT:' => 'number(%d)',
|
||||
'USINT' => 'number(4)',
|
||||
'BOOL' => 'number(1)',
|
||||
'VCHAR' => 'varchar2(255)',
|
||||
'VCHAR:' => 'varchar2(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'varchar2(1000)',
|
||||
'STEXT' => 'varchar2(3000)',
|
||||
'TEXT' => 'clob',
|
||||
'MTEXT' => 'clob',
|
||||
'XSTEXT_UNI'=> 'varchar2(300)',
|
||||
'STEXT_UNI' => 'varchar2(765)',
|
||||
'TEXT_UNI' => 'clob',
|
||||
'MTEXT_UNI' => 'clob',
|
||||
'TIMESTAMP' => 'number(11)',
|
||||
'DECIMAL' => 'number(5, 2)',
|
||||
'DECIMAL:' => 'number(%d, 2)',
|
||||
'PDECIMAL' => 'number(6, 3)',
|
||||
'PDECIMAL:' => 'number(%d, 3)',
|
||||
'VCHAR_UNI' => 'varchar2(765)',
|
||||
'VCHAR_UNI:'=> array('varchar2(%d)', 'limit' => array('mult', 3, 765, 'clob')),
|
||||
'VCHAR_CI' => 'varchar2(255)',
|
||||
'VARBINARY' => 'raw(255)',
|
||||
),
|
||||
'mssqlnative' => array(
|
||||
'INT:' => '[int]',
|
||||
'BINT' => '[float]',
|
||||
'UINT' => '[int]',
|
||||
'UINT:' => '[int]',
|
||||
'TINT:' => '[int]',
|
||||
'USINT' => '[int]',
|
||||
'BOOL' => '[int]',
|
||||
'VCHAR' => '[varchar] (255)',
|
||||
'VCHAR:' => '[varchar] (%d)',
|
||||
'CHAR:' => '[char] (%d)',
|
||||
'XSTEXT' => '[varchar] (1000)',
|
||||
'STEXT' => '[varchar] (3000)',
|
||||
'TEXT' => '[varchar] (8000)',
|
||||
'MTEXT' => '[text]',
|
||||
'XSTEXT_UNI'=> '[varchar] (100)',
|
||||
'STEXT_UNI' => '[varchar] (255)',
|
||||
'TEXT_UNI' => '[varchar] (4000)',
|
||||
'MTEXT_UNI' => '[text]',
|
||||
'TIMESTAMP' => '[int]',
|
||||
'DECIMAL' => '[float]',
|
||||
'DECIMAL:' => '[float]',
|
||||
'PDECIMAL' => '[float]',
|
||||
'PDECIMAL:' => '[float]',
|
||||
'VCHAR_UNI' => '[varchar] (255)',
|
||||
'VCHAR_UNI:'=> '[varchar] (%d)',
|
||||
'VCHAR_CI' => '[varchar] (255)',
|
||||
'VARBINARY' => '[varchar] (255)',
|
||||
),
|
||||
|
||||
'sqlite' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'INTEGER UNSIGNED', //'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'INTEGER UNSIGNED', // 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'INTEGER UNSIGNED', //'mediumint(4) UNSIGNED',
|
||||
'BOOL' => 'INTEGER UNSIGNED', //'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'text(65535)',
|
||||
'STEXT' => 'text(65535)',
|
||||
'TEXT' => 'text(65535)',
|
||||
'MTEXT' => 'mediumtext(16777215)',
|
||||
'XSTEXT_UNI'=> 'text(65535)',
|
||||
'STEXT_UNI' => 'text(65535)',
|
||||
'TEXT_UNI' => 'text(65535)',
|
||||
'MTEXT_UNI' => 'mediumtext(16777215)',
|
||||
'TIMESTAMP' => 'INTEGER UNSIGNED', //'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar(255)',
|
||||
'VARBINARY' => 'blob',
|
||||
),
|
||||
'oracle' => array(
|
||||
'INT:' => 'number(%d)',
|
||||
'BINT' => 'number(20)',
|
||||
'UINT' => 'number(8)',
|
||||
'UINT:' => 'number(%d)',
|
||||
'TINT:' => 'number(%d)',
|
||||
'USINT' => 'number(4)',
|
||||
'BOOL' => 'number(1)',
|
||||
'VCHAR' => 'varchar2(255)',
|
||||
'VCHAR:' => 'varchar2(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'varchar2(1000)',
|
||||
'STEXT' => 'varchar2(3000)',
|
||||
'TEXT' => 'clob',
|
||||
'MTEXT' => 'clob',
|
||||
'XSTEXT_UNI'=> 'varchar2(300)',
|
||||
'STEXT_UNI' => 'varchar2(765)',
|
||||
'TEXT_UNI' => 'clob',
|
||||
'MTEXT_UNI' => 'clob',
|
||||
'TIMESTAMP' => 'number(11)',
|
||||
'DECIMAL' => 'number(5, 2)',
|
||||
'DECIMAL:' => 'number(%d, 2)',
|
||||
'PDECIMAL' => 'number(6, 3)',
|
||||
'PDECIMAL:' => 'number(%d, 3)',
|
||||
'VCHAR_UNI' => 'varchar2(765)',
|
||||
'VCHAR_UNI:'=> array('varchar2(%d)', 'limit' => array('mult', 3, 765, 'clob')),
|
||||
'VCHAR_CI' => 'varchar2(255)',
|
||||
'VARBINARY' => 'raw(255)',
|
||||
),
|
||||
|
||||
'postgres' => array(
|
||||
'INT:' => 'INT4',
|
||||
'BINT' => 'INT8',
|
||||
'UINT' => 'INT4', // unsigned
|
||||
'UINT:' => 'INT4', // unsigned
|
||||
'USINT' => 'INT2', // unsigned
|
||||
'BOOL' => 'INT2', // unsigned
|
||||
'TINT:' => 'INT2',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'varchar(1000)',
|
||||
'STEXT' => 'varchar(3000)',
|
||||
'TEXT' => 'varchar(8000)',
|
||||
'MTEXT' => 'TEXT',
|
||||
'XSTEXT_UNI'=> 'varchar(100)',
|
||||
'STEXT_UNI' => 'varchar(255)',
|
||||
'TEXT_UNI' => 'varchar(4000)',
|
||||
'MTEXT_UNI' => 'TEXT',
|
||||
'TIMESTAMP' => 'INT4', // unsigned
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar_ci',
|
||||
'VARBINARY' => 'bytea',
|
||||
),
|
||||
);
|
||||
'sqlite' => array(
|
||||
'INT:' => 'int(%d)',
|
||||
'BINT' => 'bigint(20)',
|
||||
'UINT' => 'INTEGER UNSIGNED', //'mediumint(8) UNSIGNED',
|
||||
'UINT:' => 'INTEGER UNSIGNED', // 'int(%d) UNSIGNED',
|
||||
'TINT:' => 'tinyint(%d)',
|
||||
'USINT' => 'INTEGER UNSIGNED', //'mediumint(4) UNSIGNED',
|
||||
'BOOL' => 'INTEGER UNSIGNED', //'tinyint(1) UNSIGNED',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'text(65535)',
|
||||
'STEXT' => 'text(65535)',
|
||||
'TEXT' => 'text(65535)',
|
||||
'MTEXT' => 'mediumtext(16777215)',
|
||||
'XSTEXT_UNI'=> 'text(65535)',
|
||||
'STEXT_UNI' => 'text(65535)',
|
||||
'TEXT_UNI' => 'text(65535)',
|
||||
'MTEXT_UNI' => 'mediumtext(16777215)',
|
||||
'TIMESTAMP' => 'INTEGER UNSIGNED', //'int(11) UNSIGNED',
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar(255)',
|
||||
'VARBINARY' => 'blob',
|
||||
),
|
||||
|
||||
'postgres' => array(
|
||||
'INT:' => 'INT4',
|
||||
'BINT' => 'INT8',
|
||||
'UINT' => 'INT4', // unsigned
|
||||
'UINT:' => 'INT4', // unsigned
|
||||
'USINT' => 'INT2', // unsigned
|
||||
'BOOL' => 'INT2', // unsigned
|
||||
'TINT:' => 'INT2',
|
||||
'VCHAR' => 'varchar(255)',
|
||||
'VCHAR:' => 'varchar(%d)',
|
||||
'CHAR:' => 'char(%d)',
|
||||
'XSTEXT' => 'varchar(1000)',
|
||||
'STEXT' => 'varchar(3000)',
|
||||
'TEXT' => 'varchar(8000)',
|
||||
'MTEXT' => 'TEXT',
|
||||
'XSTEXT_UNI'=> 'varchar(100)',
|
||||
'STEXT_UNI' => 'varchar(255)',
|
||||
'TEXT_UNI' => 'varchar(4000)',
|
||||
'MTEXT_UNI' => 'TEXT',
|
||||
'TIMESTAMP' => 'INT4', // unsigned
|
||||
'DECIMAL' => 'decimal(5,2)',
|
||||
'DECIMAL:' => 'decimal(%d,2)',
|
||||
'PDECIMAL' => 'decimal(6,3)',
|
||||
'PDECIMAL:' => 'decimal(%d,3)',
|
||||
'VCHAR_UNI' => 'varchar(255)',
|
||||
'VCHAR_UNI:'=> 'varchar(%d)',
|
||||
'VCHAR_CI' => 'varchar_ci',
|
||||
'VARBINARY' => 'bytea',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A list of types being unsigned for better reference in some db's
|
||||
|
@ -308,6 +318,8 @@ class phpbb_db_tools
|
|||
$this->db = $db;
|
||||
$this->return_statements = $return_statements;
|
||||
|
||||
$this->dbms_type_map = self::get_dbms_type_map();
|
||||
|
||||
// Determine mapping database type
|
||||
switch ($this->db->sql_layer)
|
||||
{
|
||||
|
|
|
@ -1,137 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a style resource locator with core style paths and extension style paths
|
||||
*
|
||||
* Finds installed style paths and makes them available to the resource locator.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_style_extension_path_provider extends phpbb_extension_provider implements phpbb_style_path_provider_interface
|
||||
{
|
||||
/**
|
||||
* Optional prefix for style paths searched within extensions.
|
||||
*
|
||||
* Empty by default. Relative to the extension directory. As an example, it
|
||||
* could be adm/ for admin style.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $ext_dir_prefix = '';
|
||||
|
||||
/**
|
||||
* A provider of paths to be searched for styles
|
||||
* @var phpbb_style_path_provider
|
||||
*/
|
||||
protected $base_path_provider;
|
||||
|
||||
/** @var string */
|
||||
protected $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* Constructor stores extension manager
|
||||
*
|
||||
* @param phpbb_extension_manager $extension_manager phpBB extension manager
|
||||
* @param phpbb_style_path_provider $base_path_provider A simple path provider
|
||||
* to provide paths to be located in extensions
|
||||
* @param string $phpbb_root_path phpBB root path
|
||||
*/
|
||||
public function __construct(phpbb_extension_manager $extension_manager, phpbb_style_path_provider $base_path_provider, $phpbb_root_path)
|
||||
{
|
||||
parent::__construct($extension_manager);
|
||||
$this->base_path_provider = $base_path_provider;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a prefix for style paths searched within extensions.
|
||||
*
|
||||
* The prefix is inserted between the extension's path e.g. ext/foo/ and
|
||||
* the looked up style path, e.g. styles/bar/. So it should not have a
|
||||
* leading slash, but should have a trailing slash.
|
||||
*
|
||||
* @param string $ext_dir_prefix The prefix including trailing slash
|
||||
* @return null
|
||||
*/
|
||||
public function set_ext_dir_prefix($ext_dir_prefix)
|
||||
{
|
||||
$this->ext_dir_prefix = $ext_dir_prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds style paths using the extension manager
|
||||
*
|
||||
* Locates a path (e.g. styles/prosilver/) in all active extensions.
|
||||
* Then appends the core style paths based in the current working
|
||||
* directory.
|
||||
*
|
||||
* @return array List of style paths
|
||||
*/
|
||||
public function find()
|
||||
{
|
||||
$directories = array();
|
||||
|
||||
$finder = $this->extension_manager->get_finder();
|
||||
foreach ($this->base_path_provider as $key => $paths)
|
||||
{
|
||||
if ($key == 'style')
|
||||
{
|
||||
foreach ($paths as $path)
|
||||
{
|
||||
$directories['style'][] = $path;
|
||||
if ($path && !phpbb_is_absolute($path))
|
||||
{
|
||||
// Remove phpBB root path from the style path,
|
||||
// so the finder is able to find extension styles,
|
||||
// when the root path is not ./
|
||||
if (strpos($path, $this->phpbb_root_path) === 0)
|
||||
{
|
||||
$path = substr($path, strlen($this->phpbb_root_path));
|
||||
}
|
||||
|
||||
$result = $finder->directory('/' . $this->ext_dir_prefix . $path)
|
||||
->get_directories(true, false, true);
|
||||
foreach ($result as $ext => $ext_path)
|
||||
{
|
||||
// Make sure $ext_path has no ending slash
|
||||
if (substr($ext_path, -1) === '/')
|
||||
{
|
||||
$ext_path = substr($ext_path, 0, -1);
|
||||
}
|
||||
$directories[$ext][] = $ext_path;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $directories;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrites the current style paths
|
||||
*
|
||||
* @param array $styles An array of style paths. The first element is the main style.
|
||||
* @return null
|
||||
*/
|
||||
public function set_styles(array $styles)
|
||||
{
|
||||
$this->base_path_provider->set_styles($styles);
|
||||
$this->items = null;
|
||||
}
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a style resource locator with paths
|
||||
*
|
||||
* Finds installed style paths and makes them available to the resource locator.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_style_path_provider implements IteratorAggregate, phpbb_style_path_provider_interface
|
||||
{
|
||||
protected $paths = array();
|
||||
|
||||
/**
|
||||
* Ignores the extension dir prefix
|
||||
*
|
||||
* @param string $ext_dir_prefix The prefix including trailing slash
|
||||
* @return null
|
||||
*/
|
||||
public function set_ext_dir_prefix($ext_dir_prefix)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrites the current style paths
|
||||
*
|
||||
* The first element of the passed styles map, is considered the main
|
||||
* style.
|
||||
*
|
||||
* @param array $styles An array of style paths. The first element is the main style.
|
||||
* @return null
|
||||
*/
|
||||
public function set_styles(array $styles)
|
||||
{
|
||||
$this->paths = array('style' => $styles);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve an iterator over all style paths
|
||||
*
|
||||
* @return ArrayIterator An iterator for the array of style paths
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
return new ArrayIterator($this->paths);
|
||||
}
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a style resource locator with paths
|
||||
*
|
||||
* Finds installed style paths and makes them available to the resource locator.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
interface phpbb_style_path_provider_interface extends Traversable
|
||||
{
|
||||
/**
|
||||
* Defines a prefix to use for style paths in extensions
|
||||
*
|
||||
* @param string $ext_dir_prefix The prefix including trailing slash
|
||||
* @return null
|
||||
*/
|
||||
public function set_ext_dir_prefix($ext_dir_prefix);
|
||||
|
||||
/**
|
||||
* Overwrites the current style paths
|
||||
*
|
||||
* @param array $styles An array of style paths. The first element is the main style.
|
||||
* @return null
|
||||
*/
|
||||
public function set_styles(array $styles);
|
||||
}
|
|
@ -1,348 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Style resource locator.
|
||||
* Maintains mapping from template handles to source template file paths.
|
||||
* Locates style files: resources (such as .js and .css files) and templates.
|
||||
*
|
||||
* Style resource locator is aware of styles tree, and can return actual
|
||||
* filesystem paths (i.e., the "child" style or the "parent" styles)
|
||||
* depending on what files exist.
|
||||
*
|
||||
* Root paths stored in locator are paths to style directories. Templates are
|
||||
* stored in subdirectory that $template_path points to.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_style_resource_locator implements phpbb_template_locator
|
||||
{
|
||||
/**
|
||||
* Paths to style directories.
|
||||
* @var array
|
||||
*/
|
||||
private $roots = array();
|
||||
|
||||
/**
|
||||
* Location of templates directory within style directories.
|
||||
* Must have trailing slash. Empty if templates are stored in root
|
||||
* style directory, such as admin control panel templates.
|
||||
* @var string
|
||||
*/
|
||||
private $template_path;
|
||||
|
||||
/**
|
||||
* Map from root index to handles to source template file paths.
|
||||
* Normally it only contains paths for handles that are used
|
||||
* (or are likely to be used) by the page being rendered and not
|
||||
* all templates that exist on the filesystem.
|
||||
* @var array
|
||||
*/
|
||||
private $files = array();
|
||||
|
||||
/**
|
||||
* Map from handles to source template file names.
|
||||
* Covers the same data as $files property but maps to basenames
|
||||
* instead of paths.
|
||||
* @var array
|
||||
*/
|
||||
private $filenames = array();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* Sets default template path to template/.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->set_default_template_path();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of style paths
|
||||
*
|
||||
* These paths will be searched for style files in the provided order.
|
||||
* Paths may be outside of phpBB, but templates loaded from these paths
|
||||
* will still be cached.
|
||||
*
|
||||
* @param array $style_paths An array of paths to style directories
|
||||
* @return null
|
||||
*/
|
||||
public function set_paths($style_paths)
|
||||
{
|
||||
$this->roots = array();
|
||||
$this->files = array();
|
||||
$this->filenames = array();
|
||||
|
||||
foreach ($style_paths as $key => $paths)
|
||||
{
|
||||
foreach ($paths as $path)
|
||||
{
|
||||
// Make sure $path has no ending slash
|
||||
if (substr($path, -1) === '/')
|
||||
{
|
||||
$path = substr($path, 0, -1);
|
||||
}
|
||||
$this->roots[$key][] = $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the location of templates directory within style directories.
|
||||
*
|
||||
* The location must be a relative path, with a trailing slash.
|
||||
* Typically it is one directory level deep, e.g. "template/".
|
||||
*
|
||||
* @param string $template_path Relative path to templates directory within style directories
|
||||
* @return null
|
||||
*/
|
||||
public function set_template_path($template_path)
|
||||
{
|
||||
$this->template_path = $template_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the location of templates directory within style directories
|
||||
* to the default, which is "template/".
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function set_default_template_path()
|
||||
{
|
||||
$this->template_path = 'template/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function set_filenames(array $filename_array)
|
||||
{
|
||||
foreach ($filename_array as $handle => $filename)
|
||||
{
|
||||
if (empty($filename))
|
||||
{
|
||||
trigger_error("style resource locator: set_filenames: Empty filename specified for $handle", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$this->filename[$handle] = $filename;
|
||||
|
||||
foreach ($this->roots as $root_key => $root_paths)
|
||||
{
|
||||
foreach ($root_paths as $root_index => $root)
|
||||
{
|
||||
$this->files[$root_key][$root_index][$handle] = $root . '/' . $this->template_path . $filename;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function get_filename_for_handle($handle)
|
||||
{
|
||||
if (!isset($this->filename[$handle]))
|
||||
{
|
||||
trigger_error("style resource locator: get_filename_for_handle: No file specified for handle $handle", E_USER_ERROR);
|
||||
}
|
||||
return $this->filename[$handle];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function get_virtual_source_file_for_handle($handle)
|
||||
{
|
||||
// If we don't have a file assigned to this handle, die.
|
||||
if (!isset($this->files['style'][0][$handle]))
|
||||
{
|
||||
trigger_error("style resource locator: No file specified for handle $handle", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$source_file = $this->files['style'][0][$handle];
|
||||
return $source_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function get_source_file_for_handle($handle, $find_all = false)
|
||||
{
|
||||
// If we don't have a file assigned to this handle, die.
|
||||
if (!isset($this->files['style'][0][$handle]))
|
||||
{
|
||||
trigger_error("style resource locator: No file specified for handle $handle", E_USER_ERROR);
|
||||
}
|
||||
|
||||
// locate a source file that exists
|
||||
$source_file = $this->files['style'][0][$handle];
|
||||
$tried = $source_file;
|
||||
$found = false;
|
||||
$found_all = array();
|
||||
foreach ($this->roots as $root_key => $root_paths)
|
||||
{
|
||||
foreach ($root_paths as $root_index => $root)
|
||||
{
|
||||
$source_file = $this->files[$root_key][$root_index][$handle];
|
||||
$tried .= ', ' . $source_file;
|
||||
if (file_exists($source_file))
|
||||
{
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($found)
|
||||
{
|
||||
if ($find_all)
|
||||
{
|
||||
$found_all[] = $source_file;
|
||||
$found = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// search failed
|
||||
if (!$found && !$find_all)
|
||||
{
|
||||
trigger_error("style resource locator: File for handle $handle does not exist. Could not find: $tried", E_USER_ERROR);
|
||||
}
|
||||
|
||||
return ($find_all) ? $found_all : $source_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function get_first_file_location($files, $return_default = false, $return_full_path = true)
|
||||
{
|
||||
// set default value
|
||||
$default_result = false;
|
||||
|
||||
// check all available paths
|
||||
foreach ($this->roots as $root_paths)
|
||||
{
|
||||
foreach ($root_paths as $path)
|
||||
{
|
||||
// check all files
|
||||
foreach ($files as $filename)
|
||||
{
|
||||
$source_file = $path . '/' . $filename;
|
||||
if (file_exists($source_file))
|
||||
{
|
||||
return ($return_full_path) ? $source_file : $filename;
|
||||
}
|
||||
|
||||
// assign first file as result if $return_default is true
|
||||
if ($return_default && $default_result === false)
|
||||
{
|
||||
$default_result = $source_file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// search failed
|
||||
return $default_result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains filesystem path for a template file.
|
||||
*
|
||||
* The simplest use is specifying a single template file as a string
|
||||
* in the first argument. This template file should be a basename
|
||||
* of a template file in the selected style, or its parent styles
|
||||
* if template inheritance is being utilized.
|
||||
*
|
||||
* Note: "selected style" is whatever style the style resource locator
|
||||
* is configured for.
|
||||
*
|
||||
* The return value then will be a path, relative to the current
|
||||
* directory or absolute, to the template file in the selected style
|
||||
* or its closest parent.
|
||||
*
|
||||
* If the selected style does not have the template file being searched,
|
||||
* (and if inheritance is involved, none of the parents have it either),
|
||||
* false will be returned.
|
||||
*
|
||||
* Specifying true for $return_default will cause the function to
|
||||
* return the first path which was checked for existence in the event
|
||||
* that the template file was not found, instead of false.
|
||||
* This is the path in the selected style itself, not any of its
|
||||
* parents.
|
||||
*
|
||||
* $files can be given an array of templates instead of a single
|
||||
* template. When given an array, the function will try to resolve
|
||||
* each template in the array to a path, and will return the first
|
||||
* path that exists, or false if none exist.
|
||||
*
|
||||
* If $files is an array and template inheritance is involved, first
|
||||
* each of the files will be checked in the selected style, then each
|
||||
* of the files will be checked in the immediate parent, and so on.
|
||||
*
|
||||
* If $return_full_path is false, then instead of returning a usable
|
||||
* path (when the template is found) only the template's basename
|
||||
* will be returned. This can be used to check which of the templates
|
||||
* specified in $files exists. Naturally more than one template must
|
||||
* be given in $files.
|
||||
*
|
||||
* This function works identically to get_first_file_location except
|
||||
* it operates on a list of templates, not files. Practically speaking,
|
||||
* the templates given in the first argument first are prepended with
|
||||
* the template path (property in this class), then given to
|
||||
* get_first_file_location for the rest of the processing.
|
||||
*
|
||||
* Templates given to this function can be relative paths for templates
|
||||
* located in subdirectories of the template directories. The paths
|
||||
* should be relative to the templates directory (template/ by default).
|
||||
*
|
||||
* @param string or array $files List of templates to locate. If there is only
|
||||
* one template, $files can be a string to make code easier to read.
|
||||
* @param bool $return_default Determines what to return if template does not
|
||||
* exist. If true, function will return location where template is
|
||||
* supposed to be. If false, function will return false.
|
||||
* @param bool $return_full_path If true, function will return full path
|
||||
* to template. If false, function will return template file name.
|
||||
* This parameter can be used to check which one of set of template
|
||||
* files is available.
|
||||
* @return string or boolean Source template path if template exists or $return_default is
|
||||
* true. False if template does not exist and $return_default is false
|
||||
*/
|
||||
public function get_first_template_location($templates, $return_default = false, $return_full_path = true)
|
||||
{
|
||||
// add template path prefix
|
||||
$files = array();
|
||||
if (is_string($templates))
|
||||
{
|
||||
$files[] = $this->template_path . $templates;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($templates as $template)
|
||||
{
|
||||
$files[] = $this->template_path . $template;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->get_first_file_location($files, $return_default, $return_full_path);
|
||||
}
|
||||
}
|
|
@ -1,241 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2005 phpBB Group, sections (c) 2001 ispi of Lincoln Inc
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Base Style class.
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_style
|
||||
{
|
||||
/**
|
||||
* Template class.
|
||||
* Handles everything related to templates.
|
||||
* @var phpbb_template
|
||||
*/
|
||||
private $template;
|
||||
|
||||
/**
|
||||
* phpBB root path
|
||||
* @var string
|
||||
*/
|
||||
private $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* PHP file extension
|
||||
* @var string
|
||||
*/
|
||||
private $php_ext;
|
||||
|
||||
/**
|
||||
* phpBB config instance
|
||||
* @var phpbb_config
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* Current user
|
||||
* @var phpbb_user
|
||||
*/
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* Style resource locator
|
||||
* @var phpbb_style_resource_locator
|
||||
*/
|
||||
private $locator;
|
||||
|
||||
/**
|
||||
* Style path provider
|
||||
* @var phpbb_style_path_provider
|
||||
*/
|
||||
private $provider;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $phpbb_root_path phpBB root path
|
||||
* @param user $user current user
|
||||
* @param phpbb_style_resource_locator $locator style resource locator
|
||||
* @param phpbb_style_path_provider $provider style path provider
|
||||
* @param phpbb_template $template template
|
||||
*/
|
||||
public function __construct($phpbb_root_path, $php_ext, $config, $user, phpbb_style_resource_locator $locator, phpbb_style_path_provider_interface $provider, phpbb_template $template)
|
||||
{
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
$this->config = $config;
|
||||
$this->user = $user;
|
||||
$this->locator = $locator;
|
||||
$this->provider = $provider;
|
||||
$this->template = $template;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the style tree of the style preferred by the current user
|
||||
*
|
||||
* @return array Style tree, most specific first
|
||||
*/
|
||||
public function get_user_style()
|
||||
{
|
||||
$style_list = array(
|
||||
$this->user->style['style_path'],
|
||||
);
|
||||
|
||||
if ($this->user->style['style_parent_id'])
|
||||
{
|
||||
$style_list = array_merge($style_list, array_reverse(explode('/', $this->user->style['style_parent_tree'])));
|
||||
}
|
||||
|
||||
return $style_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set style location based on (current) user's chosen style.
|
||||
*
|
||||
* @param array $style_directories The directories to add style paths for
|
||||
* E.g. array('ext/foo/bar/styles', 'styles')
|
||||
* Default: array('styles') (phpBB's style directory)
|
||||
* @return bool true
|
||||
*/
|
||||
public function set_style($style_directories = array('styles'))
|
||||
{
|
||||
$this->names = $this->get_user_style();
|
||||
|
||||
$paths = array();
|
||||
foreach ($style_directories as $directory)
|
||||
{
|
||||
foreach ($this->names as $name)
|
||||
{
|
||||
$path = $this->get_style_path($name, $directory);
|
||||
|
||||
if (is_dir($path))
|
||||
{
|
||||
$paths[] = $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->provider->set_styles($paths);
|
||||
$this->locator->set_paths($this->provider);
|
||||
|
||||
$new_paths = array();
|
||||
foreach ($paths as $path)
|
||||
{
|
||||
$new_paths[] = $path . '/template/';
|
||||
}
|
||||
|
||||
$this->template->set_style_names($this->names, $new_paths, ($style_directories === array('styles')));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set custom style location (able to use directory outside of phpBB).
|
||||
*
|
||||
* Note: Templates are still compiled to phpBB's cache directory.
|
||||
*
|
||||
* @param string $name Name of style, used for cache prefix. Examples: "admin", "prosilver"
|
||||
* @param array or string $paths Array of style paths, relative to current root directory
|
||||
* @param array $names Array of names of templates in inheritance tree order, used by extensions. If empty, $name will be used.
|
||||
* @param string $template_path Path to templates, relative to style directory. False if path should be set to default (templates/).
|
||||
* @return bool true
|
||||
*/
|
||||
public function set_custom_style($name, $paths, $names = array(), $template_path = false)
|
||||
{
|
||||
if (is_string($paths))
|
||||
{
|
||||
$paths = array($paths);
|
||||
}
|
||||
|
||||
if (empty($names))
|
||||
{
|
||||
$names = array($name);
|
||||
}
|
||||
$this->names = $names;
|
||||
|
||||
$this->provider->set_styles($paths);
|
||||
$this->locator->set_paths($this->provider);
|
||||
|
||||
if ($template_path !== false)
|
||||
{
|
||||
$this->locator->set_template_path($template_path);
|
||||
}
|
||||
|
||||
$new_paths = array();
|
||||
foreach ($paths as $path)
|
||||
{
|
||||
$new_paths[] = $path . '/' . (($template_path !== false) ? $template_path : 'template/');
|
||||
}
|
||||
|
||||
$this->template->set_style_names($names, $new_paths);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get location of style directory for specific style_path
|
||||
*
|
||||
* @param string $path Style path, such as "prosilver"
|
||||
* @param string $style_base_directory The base directory the style is in
|
||||
* E.g. 'styles', 'ext/foo/bar/styles'
|
||||
* Default: 'styles'
|
||||
* @return string Path to style directory, relative to current path
|
||||
*/
|
||||
public function get_style_path($path, $style_base_directory = 'styles')
|
||||
{
|
||||
return $this->phpbb_root_path . trim($style_base_directory, '/') . '/' . $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines a prefix to use for style paths in extensions
|
||||
*
|
||||
* @param string $ext_dir_prefix The prefix including trailing slash
|
||||
* @return null
|
||||
*/
|
||||
public function set_ext_dir_prefix($ext_dir_prefix)
|
||||
{
|
||||
$this->provider->set_ext_dir_prefix($ext_dir_prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* Locates source file path, accounting for styles tree and verifying that
|
||||
* the path exists.
|
||||
*
|
||||
* @param string or array $files List of files to locate. If there is only
|
||||
* one file, $files can be a string to make code easier to read.
|
||||
* @param bool $return_default Determines what to return if file does not
|
||||
* exist. If true, function will return location where file is
|
||||
* supposed to be. If false, function will return false.
|
||||
* @param bool $return_full_path If true, function will return full path
|
||||
* to file. If false, function will return file name. This
|
||||
* parameter can be used to check which one of set of files
|
||||
* is available.
|
||||
* @return string or boolean Source file path if file exists or $return_default is
|
||||
* true. False if file does not exist and $return_default is false
|
||||
*/
|
||||
public function locate($files, $return_default = false, $return_full_path = true)
|
||||
{
|
||||
// convert string to array
|
||||
if (is_string($files))
|
||||
{
|
||||
$files = array($files);
|
||||
}
|
||||
|
||||
// use resource locator to find files
|
||||
return $this->locator->get_first_file_location($files, $return_default, $return_full_path);
|
||||
}
|
||||
}
|
148
phpBB/phpbb/template/base.php
Normal file
148
phpBB/phpbb/template/base.php
Normal file
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
abstract class phpbb_template_base implements phpbb_template
|
||||
{
|
||||
/**
|
||||
* Template context.
|
||||
* Stores template data used during template rendering.
|
||||
*
|
||||
* @var phpbb_template_context
|
||||
*/
|
||||
protected $context;
|
||||
|
||||
/**
|
||||
* Array of filenames assigned to set_filenames
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $filenames = array();
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function set_filenames(array $filename_array)
|
||||
{
|
||||
$this->filenames = array_merge($this->filenames, $filename_array);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a filename from the handle
|
||||
*
|
||||
* @param string $handle
|
||||
* @return string
|
||||
*/
|
||||
protected function get_filename_from_handle($handle)
|
||||
{
|
||||
return (isset($this->filenames[$handle])) ? $this->filenames[$handle] : $handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function destroy()
|
||||
{
|
||||
$this->context->clear();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function destroy_block_vars($blockname)
|
||||
{
|
||||
$this->context->destroy_block_vars($blockname);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function assign_vars(array $vararray)
|
||||
{
|
||||
foreach ($vararray as $key => $val)
|
||||
{
|
||||
$this->assign_var($key, $val);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function assign_var($varname, $varval)
|
||||
{
|
||||
$this->context->assign_var($varname, $varval);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function append_var($varname, $varval)
|
||||
{
|
||||
$this->context->append_var($varname, $varval);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function assign_block_vars($blockname, array $vararray)
|
||||
{
|
||||
$this->context->assign_block_vars($blockname, $vararray);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function alter_block_array($blockname, array $vararray, $key = false, $mode = 'insert')
|
||||
{
|
||||
return $this->context->alter_block_array($blockname, $vararray, $key, $mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls hook if any is defined.
|
||||
*
|
||||
* @param string $handle Template handle being displayed.
|
||||
* @param string $method Method name of the caller.
|
||||
*/
|
||||
protected function call_hook($handle, $method)
|
||||
{
|
||||
global $phpbb_hook;
|
||||
|
||||
if (!empty($phpbb_hook) && $phpbb_hook->call_hook(array(__CLASS__, $method), $handle, $this))
|
||||
{
|
||||
if ($phpbb_hook->hook_return(array(__CLASS__, $method)))
|
||||
{
|
||||
$result = $phpbb_hook->hook_return_result(array(__CLASS__, $method));
|
||||
return array($result);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,163 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resource locator interface.
|
||||
*
|
||||
* Objects implementing this interface maintain mapping from template handles
|
||||
* to source template file paths and locate templates.
|
||||
*
|
||||
* Locates style files.
|
||||
*
|
||||
* Resource locator is aware of styles tree, and can return actual
|
||||
* filesystem paths (i.e., the "child" style or the "parent" styles)
|
||||
* depending on what files exist.
|
||||
*
|
||||
* Root paths stored in locator are paths to style directories. Templates are
|
||||
* stored in subdirectory that $template_path points to.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
interface phpbb_template_locator
|
||||
{
|
||||
/**
|
||||
* Sets the template filenames for handles. $filename_array
|
||||
* should be a hash of handle => filename pairs.
|
||||
*
|
||||
* @param array $filename_array Should be a hash of handle => filename pairs.
|
||||
*/
|
||||
public function set_filenames(array $filename_array);
|
||||
|
||||
/**
|
||||
* Determines the filename for a template handle.
|
||||
*
|
||||
* The filename comes from array used in a set_filenames call,
|
||||
* which should have been performed prior to invoking this function.
|
||||
* Return value is a file basename (without path).
|
||||
*
|
||||
* @param $handle string Template handle
|
||||
* @return string Filename corresponding to the template handle
|
||||
*/
|
||||
public function get_filename_for_handle($handle);
|
||||
|
||||
/**
|
||||
* Determines the source file path for a template handle without
|
||||
* regard for styles tree.
|
||||
*
|
||||
* This function returns the path in "primary" style directory
|
||||
* corresponding to the given template handle. That path may or
|
||||
* may not actually exist on the filesystem. Because this function
|
||||
* does not perform stat calls to determine whether the path it
|
||||
* returns actually exists, it is faster than get_source_file_for_handle.
|
||||
*
|
||||
* Use get_source_file_for_handle to obtain the actual path that is
|
||||
* guaranteed to exist (which might come from the parent style
|
||||
* directory if primary style has parent styles).
|
||||
*
|
||||
* This function will trigger an error if the handle was never
|
||||
* associated with a template file via set_filenames.
|
||||
*
|
||||
* @param $handle string Template handle
|
||||
* @return string Path to source file path in primary style directory
|
||||
*/
|
||||
public function get_virtual_source_file_for_handle($handle);
|
||||
|
||||
/**
|
||||
* Determines the source file path for a template handle, accounting
|
||||
* for styles tree and verifying that the path exists.
|
||||
*
|
||||
* This function returns the actual path that may be compiled for
|
||||
* the specified template handle. It will trigger an error if
|
||||
* the template handle was never associated with a template path
|
||||
* via set_filenames or if the template file does not exist on the
|
||||
* filesystem.
|
||||
*
|
||||
* Use get_virtual_source_file_for_handle to just resolve a template
|
||||
* handle to a path without any filesystem or styles tree checks.
|
||||
*
|
||||
* @param string $handle Template handle (i.e. "friendly" template name)
|
||||
* @param bool $find_all If true, each root path will be checked and function
|
||||
* will return array of files instead of string and will not
|
||||
* trigger a error if template does not exist
|
||||
* @return string Source file path
|
||||
*/
|
||||
public function get_source_file_for_handle($handle, $find_all = false);
|
||||
|
||||
/**
|
||||
* Obtains a complete filesystem path for a file in a style.
|
||||
*
|
||||
* This function traverses the style tree (selected style and
|
||||
* its parents in order, if inheritance is being used) and finds
|
||||
* the first file on the filesystem matching specified relative path,
|
||||
* or the first of the specified paths if more than one path is given.
|
||||
*
|
||||
* This function can be used to determine filesystem path of any
|
||||
* file under any style, with the consequence being that complete
|
||||
* relative to the style directory path must be provided as an argument.
|
||||
*
|
||||
* In particular, this function can be used to locate templates
|
||||
* and javascript files.
|
||||
*
|
||||
* For locating templates get_first_template_location should be used
|
||||
* as it prepends the configured template path to the template basename.
|
||||
*
|
||||
* Note: "selected style" is whatever style the style resource locator
|
||||
* is configured for.
|
||||
*
|
||||
* The return value then will be a path, relative to the current
|
||||
* directory or absolute, to the first existing file in the selected
|
||||
* style or its closest parent.
|
||||
*
|
||||
* If the selected style does not have the file being searched,
|
||||
* (and if inheritance is involved, none of the parents have it either),
|
||||
* false will be returned.
|
||||
*
|
||||
* Multiple files can be specified, in which case the first file in
|
||||
* the list that can be found on the filesystem is returned.
|
||||
*
|
||||
* If multiple files are specified and inheritance is involved,
|
||||
* first each of the specified files is checked in the selected style,
|
||||
* then each of the specified files is checked in the immediate parent,
|
||||
* etc.
|
||||
*
|
||||
* Specifying true for $return_default will cause the function to
|
||||
* return the first path which was checked for existence in the event
|
||||
* that the template file was not found, instead of false.
|
||||
* This is always a path in the selected style itself, not any of its
|
||||
* parents.
|
||||
*
|
||||
* If $return_full_path is false, then instead of returning a usable
|
||||
* path (when the file is found) the file's path relative to the style
|
||||
* directory will be returned. This is the same path as was given to
|
||||
* the function as a parameter. This can be used to check which of the
|
||||
* files specified in $files exists. Naturally this requires passing
|
||||
* more than one file in $files.
|
||||
*
|
||||
* @param array $files List of files to locate.
|
||||
* @param bool $return_default Determines what to return if file does not
|
||||
* exist. If true, function will return location where file is
|
||||
* supposed to be. If false, function will return false.
|
||||
* @param bool $return_full_path If true, function will return full path
|
||||
* to file. If false, function will return file name. This
|
||||
* parameter can be used to check which one of set of files
|
||||
* is available.
|
||||
* @return string or boolean Source file path if file exists or $return_default is
|
||||
* true. False if file does not exist and $return_default is false
|
||||
*/
|
||||
public function get_first_file_location($files, $return_default = false, $return_full_path = true);
|
||||
}
|
|
@ -34,14 +34,32 @@ interface phpbb_template
|
|||
public function set_filenames(array $filename_array);
|
||||
|
||||
/**
|
||||
* Sets the style names/paths corresponding to style hierarchy being compiled
|
||||
* and/or rendered.
|
||||
* Get the style tree of the style preferred by the current user
|
||||
*
|
||||
* @param array $style_names List of style names in inheritance tree order
|
||||
* @param array $style_paths List of style paths in inheritance tree order
|
||||
* @return array Style tree, most specific first
|
||||
*/
|
||||
public function get_user_style();
|
||||
|
||||
/**
|
||||
* Set style location based on (current) user's chosen style.
|
||||
*
|
||||
* @param array $style_directories The directories to add style paths for
|
||||
* E.g. array('ext/foo/bar/styles', 'styles')
|
||||
* Default: array('styles') (phpBB's style directory)
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function set_style_names(array $style_names, array $style_paths);
|
||||
public function set_style($style_directories = array('styles'));
|
||||
|
||||
/**
|
||||
* Set custom style location (able to use directory outside of phpBB).
|
||||
*
|
||||
* Note: Templates are still compiled to phpBB's cache directory.
|
||||
*
|
||||
* @param string|array $names Array of names or string of name of template(s) in inheritance tree order, used by extensions.
|
||||
* @param string|array or string $paths Array of style paths, relative to current root directory
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function set_custom_style($names, $paths);
|
||||
|
||||
/**
|
||||
* Clears all variables and blocks assigned to this template.
|
||||
|
|
|
@ -130,7 +130,7 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
|||
// E.g. 'asdf'"' -> asdf'"
|
||||
// E.g. "asdf'"" -> asdf'"
|
||||
// E.g. 'asdf'" -> 'asdf'"
|
||||
$matches[2] = preg_replace('#^([\'"])?(.+?)\1$#', '$2', $matches[2]);
|
||||
$matches[2] = preg_replace('#^([\'"])?(.*?)\1$#', '$2', $matches[2]);
|
||||
|
||||
// Replace template variables with start/end to parse variables (' ~ TEST ~ '.html)
|
||||
$matches[2] = preg_replace('#{([a-zA-Z0-9_\.$]+)}#', "'~ \$1 ~'", $matches[2]);
|
||||
|
@ -219,6 +219,12 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
|||
*/
|
||||
protected function fix_if_tokens($code)
|
||||
{
|
||||
// Replace ELSE IF with ELSEIF
|
||||
$code = preg_replace('#<!-- ELSE IF (.+?) -->#', '<!-- ELSEIF $1 -->', $code);
|
||||
|
||||
// Replace our "div by" with Twig's divisibleby (Twig does not like test names with spaces)
|
||||
$code = preg_replace('# div by ([0-9]+)#', ' divisibleby($1)', $code);
|
||||
|
||||
$callback = function($matches)
|
||||
{
|
||||
$inner = $matches[2];
|
||||
|
@ -234,9 +240,6 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
|||
return "<!-- {$matches[1]}IF{$inner}-->";
|
||||
};
|
||||
|
||||
// Replace our "div by" with Twig's divisibleby (Twig does not like test names with spaces)
|
||||
$code = preg_replace('# div by ([0-9]+)#', ' divisibleby($1)', $code);
|
||||
|
||||
return preg_replace_callback('#<!-- (ELSE)?IF((.*) \(?!?[\$|\.]([^\s]+)(.*))-->#', $callback, $code);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,15 +19,8 @@ if (!defined('IN_PHPBB'))
|
|||
* Twig Template class.
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_template_twig implements phpbb_template
|
||||
class phpbb_template_twig extends phpbb_template_base
|
||||
{
|
||||
/**
|
||||
* Template context.
|
||||
* Stores template data used during template rendering.
|
||||
* @var phpbb_template_context
|
||||
*/
|
||||
protected $context;
|
||||
|
||||
/**
|
||||
* Path of the cache directory for the template
|
||||
*
|
||||
|
@ -43,12 +36,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
*/
|
||||
protected $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* adm relative path
|
||||
* @var string
|
||||
*/
|
||||
protected $adm_relative_path;
|
||||
|
||||
/**
|
||||
* PHP file extension
|
||||
* @var string
|
||||
|
@ -74,16 +61,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
*/
|
||||
protected $extension_manager;
|
||||
|
||||
/**
|
||||
* Name of the style that the template being compiled and/or rendered
|
||||
* belongs to, and its parents, in inheritance tree order.
|
||||
*
|
||||
* Used to invoke style-specific template events.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $style_names;
|
||||
|
||||
/**
|
||||
* Twig Environment
|
||||
*
|
||||
|
@ -91,13 +68,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
*/
|
||||
protected $twig;
|
||||
|
||||
/**
|
||||
* Array of filenames assigned to set_filenames
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $filenames = array();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
@ -112,7 +82,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
public function __construct($phpbb_root_path, $php_ext, $config, $user, phpbb_template_context $context, phpbb_extension_manager $extension_manager = null, $adm_relative_path = null)
|
||||
{
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->adm_relative_path = $adm_relative_path;
|
||||
$this->php_ext = $php_ext;
|
||||
$this->config = $config;
|
||||
$this->user = $user;
|
||||
|
@ -147,6 +116,12 @@ class phpbb_template_twig implements phpbb_template
|
|||
$lexer = new phpbb_template_twig_lexer($this->twig);
|
||||
|
||||
$this->twig->setLexer($lexer);
|
||||
|
||||
// Add admin namespace
|
||||
if ($adm_relative_path !== null && is_dir($this->phpbb_root_path . $adm_relative_path . 'style/'))
|
||||
{
|
||||
$this->twig->getLoader()->setPaths($this->phpbb_root_path . $adm_relative_path . 'style/', 'admin');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -165,51 +140,90 @@ class phpbb_template_twig implements phpbb_template
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the template filenames for handles.
|
||||
* Get the style tree of the style preferred by the current user
|
||||
*
|
||||
* @param array $filename_array Should be a hash of handle => filename pairs.
|
||||
* @return array Style tree, most specific first
|
||||
*/
|
||||
public function get_user_style()
|
||||
{
|
||||
$style_list = array(
|
||||
$this->user->style['style_path'],
|
||||
);
|
||||
|
||||
if ($this->user->style['style_parent_id'])
|
||||
{
|
||||
$style_list = array_merge($style_list, array_reverse(explode('/', $this->user->style['style_parent_tree'])));
|
||||
}
|
||||
|
||||
return $style_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set style location based on (current) user's chosen style.
|
||||
*
|
||||
* @param array $style_directories The directories to add style paths for
|
||||
* E.g. array('ext/foo/bar/styles', 'styles')
|
||||
* Default: array('styles') (phpBB's style directory)
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function set_filenames(array $filename_array)
|
||||
public function set_style($style_directories = array('styles'))
|
||||
{
|
||||
$this->filenames = array_merge($this->filenames, $filename_array);
|
||||
if ($style_directories !== array('styles') && $this->twig->getLoader()->getPaths('core') === array())
|
||||
{
|
||||
// We should set up the core styles path since not already setup
|
||||
$this->set_style();
|
||||
}
|
||||
|
||||
$names = $this->get_user_style();
|
||||
|
||||
$paths = array();
|
||||
foreach ($style_directories as $directory)
|
||||
{
|
||||
foreach ($names as $name)
|
||||
{
|
||||
$path = $this->phpbb_root_path . trim($directory, '/') . "/{$name}/template/";
|
||||
|
||||
if (is_dir($path))
|
||||
{
|
||||
$paths[] = $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we're setting up the main phpBB styles directory and the core
|
||||
// namespace isn't setup yet, we will set it up now
|
||||
if ($style_directories === array('styles') && $this->twig->getLoader()->getPaths('core') === array())
|
||||
{
|
||||
// Set up the core style paths namespace
|
||||
$this->twig->getLoader()->setPaths($paths, 'core');
|
||||
}
|
||||
|
||||
$this->set_custom_style($names, $paths);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the style names/paths corresponding to style hierarchy being compiled
|
||||
* and/or rendered.
|
||||
* Set custom style location (able to use directory outside of phpBB).
|
||||
*
|
||||
* @param array $style_names List of style names in inheritance tree order
|
||||
* @param array $style_paths List of style paths in inheritance tree order
|
||||
* @param bool $is_core True if the style names are the "core" styles for this page load
|
||||
* Core means the main phpBB template files
|
||||
* Note: Templates are still compiled to phpBB's cache directory.
|
||||
*
|
||||
* @param string|array $names Array of names or string of name of template(s) in inheritance tree order, used by extensions.
|
||||
* @param string|array or string $paths Array of style paths, relative to current root directory
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function set_style_names(array $style_names, array $style_paths, $is_core = false)
|
||||
public function set_custom_style($names, $paths)
|
||||
{
|
||||
$this->style_names = $style_names;
|
||||
$paths = (is_string($paths)) ? array($paths) : $paths;
|
||||
$names = (is_string($names)) ? array($names) : $names;
|
||||
|
||||
// Set as __main__ namespace
|
||||
$this->twig->getLoader()->setPaths($style_paths);
|
||||
|
||||
// Core style namespace from phpbb_style::set_style()
|
||||
if ($is_core)
|
||||
{
|
||||
$this->twig->getLoader()->setPaths($style_paths, 'core');
|
||||
}
|
||||
|
||||
// Add admin namespace
|
||||
if (is_dir($this->phpbb_root_path . $this->adm_relative_path . 'style/'))
|
||||
{
|
||||
$this->twig->getLoader()->setPaths($this->phpbb_root_path . $this->adm_relative_path . 'style/', 'admin');
|
||||
}
|
||||
$this->twig->getLoader()->setPaths($paths);
|
||||
|
||||
// Add all namespaces for all extensions
|
||||
if ($this->extension_manager instanceof phpbb_extension_manager)
|
||||
{
|
||||
$style_names[] = 'all';
|
||||
$names[] = 'all';
|
||||
|
||||
foreach ($this->extension_manager->all_enabled() as $ext_namespace => $ext_path)
|
||||
{
|
||||
|
@ -217,7 +231,7 @@ class phpbb_template_twig implements phpbb_template
|
|||
$namespace = str_replace('/', '_', $ext_namespace);
|
||||
$paths = array();
|
||||
|
||||
foreach ($style_names as $style_name)
|
||||
foreach ($names as $style_name)
|
||||
{
|
||||
$ext_style_path = $ext_path . 'styles/' . $style_name . '/template';
|
||||
|
||||
|
@ -234,31 +248,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all variables and blocks assigned to this template.
|
||||
*
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function destroy()
|
||||
{
|
||||
$this->context = array();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset/empty complete block
|
||||
*
|
||||
* @param string $blockname Name of block to destroy
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function destroy_block_vars($blockname)
|
||||
{
|
||||
$this->context->destroy_block_vars($blockname);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a template for provided handle.
|
||||
*
|
||||
|
@ -282,28 +271,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls hook if any is defined.
|
||||
*
|
||||
* @param string $handle Template handle being displayed.
|
||||
* @param string $method Method name of the caller.
|
||||
*/
|
||||
protected function call_hook($handle, $method)
|
||||
{
|
||||
global $phpbb_hook;
|
||||
|
||||
if (!empty($phpbb_hook) && $phpbb_hook->call_hook(array(__CLASS__, $method), $handle, $this))
|
||||
{
|
||||
if ($phpbb_hook->hook_return(array(__CLASS__, $method)))
|
||||
{
|
||||
$result = $phpbb_hook->hook_return_result(array(__CLASS__, $method));
|
||||
return array($result);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the handle and assign the output to a template variable
|
||||
* or return the compiled result.
|
||||
|
@ -325,105 +292,12 @@ class phpbb_template_twig implements phpbb_template
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign key variable pairs from an array
|
||||
*
|
||||
* @param array $vararray A hash of variable name => value pairs
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function assign_vars(array $vararray)
|
||||
{
|
||||
foreach ($vararray as $key => $val)
|
||||
{
|
||||
$this->assign_var($key, $val);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign a single scalar value to a single key.
|
||||
*
|
||||
* Value can be a string, an integer or a boolean.
|
||||
*
|
||||
* @param string $varname Variable name
|
||||
* @param string $varval Value to assign to variable
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function assign_var($varname, $varval)
|
||||
{
|
||||
$this->context->assign_var($varname, $varval);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append text to the string value stored in a key.
|
||||
*
|
||||
* Text is appended using the string concatenation operator (.).
|
||||
*
|
||||
* @param string $varname Variable name
|
||||
* @param string $varval Value to append to variable
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function append_var($varname, $varval)
|
||||
{
|
||||
$this->context->append_var($varname, $varval);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign key variable pairs from an array to a specified block
|
||||
* @param string $blockname Name of block to assign $vararray to
|
||||
* @param array $vararray A hash of variable name => value pairs
|
||||
* @return phpbb_template $this
|
||||
*/
|
||||
public function assign_block_vars($blockname, array $vararray)
|
||||
{
|
||||
$this->context->assign_block_vars($blockname, $vararray);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change already assigned key variable pair (one-dimensional - single loop entry)
|
||||
*
|
||||
* An example of how to use this function:
|
||||
* {@example alter_block_array.php}
|
||||
*
|
||||
* @param string $blockname the blockname, for example 'loop'
|
||||
* @param array $vararray the var array to insert/add or merge
|
||||
* @param mixed $key Key to search for
|
||||
*
|
||||
* array: KEY => VALUE [the key/value pair to search for within the loop to determine the correct position]
|
||||
*
|
||||
* int: Position [the position to change or insert at directly given]
|
||||
*
|
||||
* If key is false the position is set to 0
|
||||
* If key is true the position is set to the last entry
|
||||
*
|
||||
* @param string $mode Mode to execute (valid modes are 'insert' and 'change')
|
||||
*
|
||||
* If insert, the vararray is inserted at the given position (position counting from zero).
|
||||
* If change, the current block gets merged with the vararray (resulting in new key/value pairs be added and existing keys be replaced by the new value).
|
||||
*
|
||||
* Since counting begins by zero, inserting at the last position will result in this array: array(vararray, last positioned array)
|
||||
* and inserting at position 1 will result in this array: array(first positioned array, vararray, following vars)
|
||||
*
|
||||
* @return bool false on error, true on success
|
||||
*/
|
||||
public function alter_block_array($blockname, array $vararray, $key = false, $mode = 'insert')
|
||||
{
|
||||
return $this->context->alter_block_array($blockname, $vararray, $key, $mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get template vars in a format Twig will use (from the context)
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_template_vars()
|
||||
protected function get_template_vars()
|
||||
{
|
||||
$context_vars = $this->context->get_data_ref();
|
||||
|
||||
|
@ -442,17 +316,6 @@ class phpbb_template_twig implements phpbb_template
|
|||
return $vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a filename from the handle
|
||||
*
|
||||
* @param string $handle
|
||||
* @return string
|
||||
*/
|
||||
protected function get_filename_from_handle($handle)
|
||||
{
|
||||
return (isset($this->filenames[$handle])) ? $this->filenames[$handle] : $handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get path to template for handle (required for BBCode parser)
|
||||
*
|
||||
|
|
|
@ -75,7 +75,7 @@ class phpbb_user extends phpbb_session
|
|||
*/
|
||||
function setup($lang_set = false, $style_id = false)
|
||||
{
|
||||
global $db, $phpbb_style, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;
|
||||
global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
if ($this->data['user_id'] != ANONYMOUS)
|
||||
|
@ -251,7 +251,7 @@ class phpbb_user extends phpbb_session
|
|||
}
|
||||
}
|
||||
|
||||
$phpbb_style->set_style();
|
||||
$template->set_style();
|
||||
|
||||
$this->img_lang = $this->lang_name;
|
||||
|
||||
|
|
|
@ -1152,8 +1152,14 @@ if ($submit || $preview || $refresh)
|
|||
$data['topic_posts_softdeleted'] = $post_data['topic_posts_softdeleted'];
|
||||
}
|
||||
|
||||
// Only return the username when it is either a guest posting or we are editing a post and
|
||||
// the username was supplied; otherwise post_data might hold the data of the post that is
|
||||
// being quoted (which could result in the username being returned being that of the quoted
|
||||
// post's poster, not the poster of the current post). See: PHPBB3-11769 for more information.
|
||||
$post_author_name = ((!$user->data['is_registered'] || $mode == 'edit') && $post_data['username'] !== '') ? $post_data['username'] : '';
|
||||
|
||||
// The last parameter tells submit_post if search indexer has to be run
|
||||
$redirect_url = submit_post($mode, $post_data['post_subject'], $post_data['username'], $post_data['topic_type'], $poll, $data, $update_message, ($update_message || $update_subject) ? true : false);
|
||||
$redirect_url = submit_post($mode, $post_data['post_subject'], $post_author_name, $post_data['topic_type'], $poll, $data, $update_message, ($update_message || $update_subject) ? true : false);
|
||||
|
||||
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && (isset($captcha) && $captcha->is_solved() === true) && ($mode == 'post' || $mode == 'reply' || $mode == 'quote'))
|
||||
{
|
||||
|
|
|
@ -42,19 +42,12 @@ function jumpto() {
|
|||
* id = ID of parent container, name = name prefix, state = state [true/false]
|
||||
*/
|
||||
function marklist(id, name, state) {
|
||||
var parent = document.getElementById(id) || document[id];
|
||||
|
||||
if (!parent) {
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = parent.getElementsByTagName('input');
|
||||
|
||||
for (var r = 0; r < rb.length; r++) {
|
||||
if (rb[r].name.substr(0, name.length) === name) {
|
||||
rb[r].checked = state;
|
||||
jQuery('#' + id + ' input[type=checkbox][name]').each(function() {
|
||||
var $this = jQuery(this);
|
||||
if ($this.attr('name').substr(0, name.length) == name) {
|
||||
$this.prop('checked', state);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,29 +117,15 @@ jQuery(document).ready(function() {
|
|||
}
|
||||
|
||||
function subPanels(p) {
|
||||
var i, e, t;
|
||||
var i;
|
||||
|
||||
if (typeof(p) === 'string') {
|
||||
show_panel = p;
|
||||
}
|
||||
|
||||
for (i = 0; i < panels.length; i++) {
|
||||
e = document.getElementById(panels[i]);
|
||||
t = document.getElementById(panels[i] + '-tab');
|
||||
|
||||
if (e) {
|
||||
if (panels[i] === show_panel) {
|
||||
e.style.display = 'block';
|
||||
if (t) {
|
||||
t.className = 'activetab';
|
||||
}
|
||||
} else {
|
||||
e.style.display = 'none';
|
||||
if (t) {
|
||||
t.className = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
jQuery('#' + panels[i]).css('display', panels[i] === show_panel ? 'block' : 'none');
|
||||
jQuery('#' + panels[i] + '-tab').toggleClass('activetab', panels[i] === show_panel);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -255,57 +234,6 @@ function play_qt_file(obj) {
|
|||
obj.Play();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the nodeName of elem is name
|
||||
* @author jQuery
|
||||
*/
|
||||
function is_node_name(elem, name) {
|
||||
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if elem is in array, return position
|
||||
* @author jQuery
|
||||
*/
|
||||
function is_in_array(elem, array) {
|
||||
for (var i = 0, length = array.length; i < length; i++) {
|
||||
// === is correct (IE)
|
||||
if (array[i] === elem) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find Element, type and class in tree
|
||||
* Not used, but may come in handy for those not using JQuery
|
||||
* @author jQuery.find, Meik Sievertsen
|
||||
*/
|
||||
function find_in_tree(node, tag, type, class_name) {
|
||||
var result, element, i = 0, length = node.childNodes.length;
|
||||
|
||||
for (element = node.childNodes[0]; i < length; element = node.childNodes[++i]) {
|
||||
if (!element || element.nodeType !== 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((!tag || is_node_name(element, tag)) && (!type || element.type === type)
|
||||
&& (!class_name || is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1)) {
|
||||
return element;
|
||||
}
|
||||
|
||||
if (element.childNodes.length) {
|
||||
result = find_in_tree(element, tag, type, class_name);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var in_autocomplete = false;
|
||||
var last_key_entered = '';
|
||||
|
||||
|
@ -336,47 +264,6 @@ function phpbb_check_key(event) {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Usually used for onkeypress event, to submit a form on enter
|
||||
*/
|
||||
function submit_default_button(event, selector, class_name) {
|
||||
// Add which for key events
|
||||
if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
|
||||
event.which = event.charCode || event.keyCode;
|
||||
}
|
||||
|
||||
if (phpbb_check_key(event)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var current = selector.parentNode;
|
||||
|
||||
// Search parent form element
|
||||
while (current && (!current.nodeName || current.nodeType !== 1 || !is_node_name(current, 'form')) && current !== document) {
|
||||
current = current.parentNode;
|
||||
}
|
||||
|
||||
// Find the input submit button with the class name
|
||||
//current = find_in_tree(current, 'input', 'submit', class_name);
|
||||
var input_tags = current.getElementsByTagName('input');
|
||||
current = false;
|
||||
|
||||
for (var i = 0, element = input_tags[0]; i < input_tags.length; element = input_tags[++i]) {
|
||||
if (element.type === 'submit' && is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1) {
|
||||
current = element;
|
||||
}
|
||||
}
|
||||
|
||||
if (!current) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Submit form
|
||||
current.focus();
|
||||
current.click();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply onkeypress event for forcing default submit button on ENTER key press
|
||||
* The jQuery snippet used is based on http://greatwebguy.com/programming/dom/default-html-button-submit-on-enter-with-jquery/
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<h3>{L_REPORT_REASON}{L_COLON} {REPORT_REASON_TITLE}</h3>
|
||||
<p class="author">{L_REPORTED} {L_POST_BY_AUTHOR} {REPORTER_FULL} « {REPORT_DATE}</p>
|
||||
<!-- IF not S_POST_REPORTED -->
|
||||
<p class="rules">{L_REPORT_CLOSED}</p>
|
||||
<p class="post-notice reported">{L_REPORT_CLOSED}</p>
|
||||
<!-- ENDIF -->
|
||||
<div class="content">
|
||||
<!-- IF REPORT_TEXT -->
|
||||
|
@ -71,7 +71,7 @@
|
|||
<!-- IF S_POST_UNAPPROVED -->
|
||||
<form method="post" id="mcp_approve" action="{U_APPROVE_ACTION}">
|
||||
|
||||
<p class="rules">
|
||||
<p class="post-notice unapproved">
|
||||
<input class="button2" type="submit" value="{L_DISAPPROVE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_APPROVE}" name="action[approve]" />
|
||||
<!-- IF not S_FIRST_POST --><input type="hidden" name="mode" value="unapproved_posts" /><!-- ENDIF -->
|
||||
|
@ -82,7 +82,7 @@
|
|||
<!-- ELSEIF S_POST_DELETED -->
|
||||
<form method="post" id="mcp_approve" action="{U_APPROVE_ACTION}">
|
||||
|
||||
<p class="rules">
|
||||
<p class="post-notice deleted">
|
||||
<input class="button2" type="submit" value="{L_DELETE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_RESTORE}" name="action[restore]" />
|
||||
<!-- IF not S_FIRST_POST --><input type="hidden" name="mode" value="unapproved_posts" /><!-- ENDIF -->
|
||||
|
@ -93,7 +93,7 @@
|
|||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_MESSAGE_REPORTED -->
|
||||
<p class="rules">
|
||||
<p class="post-notice reported">
|
||||
{REPORTED_IMG} <a href="{U_MCP_REPORT}"><strong>{L_MESSAGE_REPORTED}</strong></a>
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -101,11 +101,21 @@
|
|||
<h3><a href="{postrow.U_POST_DETAILS}">{postrow.POST_SUBJECT}</a></h3>
|
||||
<p class="author"><a href="#pr{postrow.POST_ID}">{postrow.MINI_POST_IMG}</a> {L_POSTED} {postrow.POST_DATE} {L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong><!-- IF postrow.U_MCP_DETAILS --> [ <a href="{postrow.U_MCP_DETAILS}">{L_POST_DETAILS}</a> ]<!-- ENDIF --></p>
|
||||
|
||||
<!-- IF postrow.S_POST_UNAPPROVED or postrow.S_POST_DELETED or postrow.S_POST_REPORTED -->
|
||||
<p class="rules">
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->{UNAPPROVED_IMG} <a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_UNAPPROVED}</strong></a><br /><!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_DELETED -->{DELETED_IMG} <a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_DELETED}</strong></a><br /><!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_REPORTED -->{REPORTED_IMG} <a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a><!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->
|
||||
<p class="post-notice unapproved">
|
||||
<a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_UNAPPROVED}</strong></a>
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF postrow.S_POST_DELETED -->
|
||||
<p class="post-notice deleted">
|
||||
<a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_DELETED}</strong></a>
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF postrow.S_POST_REPORTED -->
|
||||
<p class="post-notice reported">
|
||||
<a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a>
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_DISPLAY_NOTICE -->
|
||||
<div class="rules">{L_DOWNLOAD_NOTICE}</div>
|
||||
<div class="post-notice error">{L_DOWNLOAD_NOTICE}</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF EDITED_MESSAGE or EDIT_REASON -->
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
<fieldset>
|
||||
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_personal_prepend -->
|
||||
<dl>
|
||||
<dt><label for="viewemail0">{L_SHOW_EMAIL}{L_COLON}</label></dt>
|
||||
<dd>
|
||||
|
@ -71,6 +72,7 @@
|
|||
</dd>
|
||||
<dd id="custom_date" style="display:none;"><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="30" class="inputbox narrow" style="margin-top: 3px;" /></dd>
|
||||
</dl>
|
||||
<!-- EVENT ucp_prefs_personal_append -->
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
<fieldset>
|
||||
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_post_prepend -->
|
||||
<dl>
|
||||
<dt><label for="bbcode1">{L_DEFAULT_BBCODE}{L_COLON}</label></dt>
|
||||
<dd>
|
||||
|
@ -36,6 +37,7 @@
|
|||
<label for="notify0"><input type="radio" name="notify" id="notify0" value="0"<!-- IF not S_NOTIFY --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- EVENT ucp_prefs_post_append -->
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
<fieldset>
|
||||
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_view_radio_buttons_prepend -->
|
||||
<dl>
|
||||
<dt><label for="images1">{L_VIEW_IMAGES}{L_COLON}</label></dt>
|
||||
<dd>
|
||||
|
@ -53,7 +54,9 @@
|
|||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_view_radio_buttons_append -->
|
||||
<hr />
|
||||
<!-- EVENT ucp_prefs_view_select_menu_prepend -->
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_TOPICS_DAYS}{L_COLON}</label></dt>
|
||||
<dd>{S_TOPIC_SORT_DAYS}</dd>
|
||||
|
@ -79,6 +82,7 @@
|
|||
<dt><label>{L_VIEW_POSTS_DIR}{L_COLON}</label></dt>
|
||||
<dd>{S_POST_SORT_DIR}</dd>
|
||||
</dl>
|
||||
<!-- EVENT ucp_prefs_view_select_menu_append -->
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -151,29 +151,32 @@
|
|||
<h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>
|
||||
<p class="author"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF -->{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> » {postrow.POST_DATE} </p>
|
||||
|
||||
<!-- IF postrow.S_POST_UNAPPROVED or postrow.S_POST_DELETED or postrow.S_POST_REPORTED -->
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->
|
||||
<form method="post" class="mcp_approve" action="{postrow.U_APPROVE_ACTION}">
|
||||
<p class="rules">
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->
|
||||
{UNAPPROVED_IMG} <strong>{L_POST_UNAPPROVED}</strong>
|
||||
<input class="button2" type="submit" value="{L_DISAPPROVE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_APPROVE}" name="action[approve]" />
|
||||
<input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" />
|
||||
{S_FORM_TOKEN}
|
||||
<br />
|
||||
<!-- ELSEIF postrow.S_POST_DELETED -->
|
||||
{DELETED_IMG} <strong>{L_POST_DELETED}</strong>
|
||||
<input class="button2" type="submit" value="{L_DELETE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_RESTORE}" name="action[restore]" />
|
||||
<input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" />
|
||||
{S_FORM_TOKEN}
|
||||
<br />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_REPORTED -->
|
||||
{REPORTED_IMG} <a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a>
|
||||
<!-- ENDIF -->
|
||||
<p class="post-notice unapproved">
|
||||
<strong>{L_POST_UNAPPROVED}</strong>
|
||||
<input class="button2" type="submit" value="{L_DISAPPROVE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_APPROVE}" name="action[approve]" />
|
||||
<input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</form>
|
||||
<!-- ELSEIF postrow.S_POST_DELETED -->
|
||||
<form method="post" class="mcp_approve" action="{postrow.U_APPROVE_ACTION}">
|
||||
<p class="post-notice deleted">
|
||||
<strong>{L_POST_DELETED}</strong>
|
||||
<input class="button2" type="submit" value="{L_DELETE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_RESTORE}" name="action[restore]" />
|
||||
<input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF postrow.S_POST_REPORTED -->
|
||||
<p class="post-notice reported">
|
||||
<a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a>
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="content">{postrow.MESSAGE}</div>
|
||||
|
|
|
@ -371,6 +371,13 @@
|
|||
float: right;
|
||||
}
|
||||
|
||||
.rtl p.post-notice:before {
|
||||
left: auto;
|
||||
right: 0;
|
||||
padding-left: 5px;
|
||||
padding-right: 26px;
|
||||
}
|
||||
|
||||
/* Topic review panel
|
||||
----------------------------------------*/
|
||||
.rtl #topicreview {
|
||||
|
|
|
@ -214,11 +214,24 @@ div.rules {
|
|||
color: #BC2A4D;
|
||||
}
|
||||
|
||||
p.rules {
|
||||
p.post-notice {
|
||||
background-color: #ECD5D8;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
p.post-notice.deleted:before {
|
||||
background-image: url("./images/icon_topic_deleted.png");
|
||||
}
|
||||
|
||||
p.post-notice.unapproved:before {
|
||||
background-image: url("./images/icon_topic_unapproved.gif");
|
||||
}
|
||||
|
||||
p.post-notice.reported:before, p.post-notice.error:before {
|
||||
background-image: url("./images/icon_topic_reported.gif");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
--------------------------------------------------------------
|
||||
Colours and backgrounds for links.css
|
||||
|
|
|
@ -685,23 +685,28 @@ div.rules ul, div.rules ol {
|
|||
margin-left: 20px;
|
||||
}
|
||||
|
||||
p.rules {
|
||||
background-image: none;
|
||||
p.post-notice {
|
||||
position: relative;
|
||||
padding: 5px;
|
||||
padding-left: 26px;
|
||||
min-height: 14px;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
p.rules img {
|
||||
vertical-align: middle;
|
||||
p.post-notice:before {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 28px;
|
||||
background: transparent none 50% 50% no-repeat;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
p.rules strong {
|
||||
vertical-align: middle;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
p.rules a {
|
||||
vertical-align: middle;
|
||||
clear: both;
|
||||
form > p.post-notice strong {
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
#top {
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
<td class="row3" colspan="2" align="center"><span class="gensmall error">{ERROR}</span></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_personal_prepend -->
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b class="genmed">{L_SHOW_EMAIL}{L_COLON}</b></td>
|
||||
<td class="row2"><input type="radio" class="radio" name="viewemail" value="1"<!-- IF S_VIEW_EMAIL --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span> <input type="radio" class="radio" name="viewemail" value="0"<!-- IF not S_VIEW_EMAIL --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
|
||||
|
@ -75,6 +76,7 @@
|
|||
<div id="custom_date"<!-- IF not S_CUSTOM_DATEFORMAT --> style="display:none;"<!-- ENDIF -->><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="30" class="post" style="margin-top: 3px;" /></div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- EVENT ucp_prefs_personal_append -->
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" /> <input class="btnlite" type="reset" value="{L_RESET}" name="reset" /></td>
|
||||
</tr>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<td class="row3" colspan="2" align="center"><span class="gensmall error">{ERROR}</span></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_post_prepend -->
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b class="genmed">{L_DEFAULT_BBCODE}{L_COLON}</b></td>
|
||||
<td class="row2"><input type="radio" class="radio" name="bbcode" value="1"<!-- IF S_BBCODE --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_YES}</span> <input type="radio" class="radio" name="bbcode" value="0"<!-- IF not S_BBCODE --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_NO}</span></td>
|
||||
|
@ -25,6 +26,7 @@
|
|||
<td class="row1" width="50%"><b class="genmed">{L_DEFAULT_NOTIFY}{L_COLON}</b></td>
|
||||
<td class="row2"><input type="radio" class="radio" name="notify" value="1"<!-- IF S_NOTIFY --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_YES}</span> <input type="radio" class="radio" name="notify" value="0"<!-- IF not S_NOTIFY --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_NO}</span></td>
|
||||
</tr>
|
||||
<!-- EVENT ucp_prefs_post_append -->
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" /> <input class="btnlite" type="reset" value="{L_RESET}" name="reset" /></td>
|
||||
</tr>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<td class="row3" colspan="2" align="center"><span class="gensmall error">{ERROR}</span></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_view_radio_buttons_prepend -->
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b class="genmed">{L_VIEW_IMAGES}{L_COLON}</b></td>
|
||||
<td class="row2"><input type="radio" class="radio" name="images" value="1"<!-- IF S_IMAGES --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_YES}</span> <input type="radio" class="radio" name="images" value="0"<!-- IF not S_IMAGES --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_NO}</span></td>
|
||||
|
@ -35,9 +36,11 @@
|
|||
<td class="row2"><input type="radio" class="radio" name="wordcensor" value="1"<!-- IF S_DISABLE_CENSORS --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_YES}</span> <input type="radio" class="radio" name="wordcensor" value="0"<!-- IF not S_DISABLE_CENSORS --> checked="checked"<!-- ENDIF --> /><span class="gen">{L_NO}</span></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- EVENT ucp_prefs_view_radio_buttons_append -->
|
||||
<tr>
|
||||
<td colspan="2" class="spacer"></td>
|
||||
</tr>
|
||||
<!-- EVENT ucp_prefs_view_select_menu_prepend -->
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b class="genmed">{L_VIEW_TOPICS_DAYS}{L_COLON}</b></td>
|
||||
<td class="row2">{S_TOPIC_SORT_DAYS}</td>
|
||||
|
@ -65,6 +68,7 @@
|
|||
<td class="row1" width="50%"><b class="genmed">{L_VIEW_POSTS_DIR}{L_COLON}</b></td>
|
||||
<td class="row2">{S_POST_SORT_DIR}</td>
|
||||
</tr>
|
||||
<!-- EVENT ucp_prefs_view_select_menu_append -->
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" /> <input class="btnlite" type="reset" value="{L_RESET}" name="reset" /></td>
|
||||
</tr>
|
||||
|
|
|
@ -15,28 +15,28 @@ class phpbb_controller_helper_url_test extends phpbb_test_case
|
|||
public function helper_url_data()
|
||||
{
|
||||
return array(
|
||||
array('foo/bar?t=1&f=2', false, true, false, 'app.php?t=1&f=2&controller=foo/bar', 'parameters in url-argument'),
|
||||
array('foo/bar', 't=1&f=2', true, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument using amp'),
|
||||
array('foo/bar', 't=1&f=2', false, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument using &'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2), true, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument as array'),
|
||||
array('foo/bar?t=1&f=2', false, true, false, 'foo/bar?t=1&f=2', 'parameters in url-argument'),
|
||||
array('foo/bar', 't=1&f=2', true, false, 'foo/bar?t=1&f=2', 'parameters in params-argument using amp'),
|
||||
array('foo/bar', 't=1&f=2', false, false, 'foo/bar?t=1&f=2', 'parameters in params-argument using &'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2), true, false, 'foo/bar?t=1&f=2', 'parameters in params-argument as array'),
|
||||
|
||||
// Custom sid parameter
|
||||
array('foo/bar', 't=1&f=2', true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid', 'using session_id'),
|
||||
array('foo/bar', 't=1&f=2', true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid', 'using session_id'),
|
||||
|
||||
// Testing anchors
|
||||
array('foo/bar?t=1&f=2#anchor', false, true, false, 'app.php?t=1&f=2&controller=foo/bar#anchor', 'anchor in url-argument'),
|
||||
array('foo/bar', 't=1&f=2#anchor', true, false, 'app.php?controller=foo/bar&t=1&f=2#anchor', 'anchor in params-argument'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, false, 'app.php?controller=foo/bar&t=1&f=2#anchor', 'anchor in params-argument (array)'),
|
||||
array('foo/bar?t=1&f=2#anchor', false, true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in url-argument'),
|
||||
array('foo/bar', 't=1&f=2#anchor', true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in params-argument'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in params-argument (array)'),
|
||||
|
||||
// Anchors and custom sid
|
||||
array('foo/bar?t=1&f=2#anchor', false, true, 'custom-sid', 'app.php?t=1&f=2&controller=foo/bar&sid=custom-sid#anchor', 'anchor in url-argument using session_id'),
|
||||
array('foo/bar', 't=1&f=2#anchor', true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument using session_id'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument (array) using session_id'),
|
||||
array('foo/bar?t=1&f=2#anchor', false, true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in url-argument using session_id'),
|
||||
array('foo/bar', 't=1&f=2#anchor', true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument using session_id'),
|
||||
array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument (array) using session_id'),
|
||||
|
||||
// Empty parameters should not append the &
|
||||
array('foo/bar', false, true, false, 'app.php?controller=foo/bar', 'no params using bool false'),
|
||||
array('foo/bar', '', true, false, 'app.php?controller=foo/bar', 'no params using empty string'),
|
||||
array('foo/bar', array(), true, false, 'app.php?controller=foo/bar', 'no params using empty array'),
|
||||
array('foo/bar', false, true, false, 'foo/bar', 'no params using bool false'),
|
||||
array('foo/bar', '', true, false, 'foo/bar', 'no params using empty string'),
|
||||
array('foo/bar', array(), true, false, 'foo/bar', 'no params using empty array'),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -48,14 +48,12 @@ class phpbb_controller_helper_url_test extends phpbb_test_case
|
|||
global $phpbb_dispatcher, $phpbb_root_path, $phpEx;
|
||||
|
||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher;
|
||||
$this->style_resource_locator = new phpbb_style_resource_locator();
|
||||
$this->user = $this->getMock('phpbb_user');
|
||||
$this->template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $this->user, new phpbb_template_context());
|
||||
$this->style_resource_locator = new phpbb_style_resource_locator();
|
||||
$this->style_provider = new phpbb_style_path_provider();
|
||||
$this->style = new phpbb_style($phpbb_root_path, $phpEx, new phpbb_config(array()), $this->user, $this->style_resource_locator, $this->style_provider, $this->template);
|
||||
|
||||
$helper = new phpbb_controller_helper($this->template, $this->user, '', 'php');
|
||||
|
||||
$request = new phpbb_mock_request($_GET, $_POST, $_COOKIE, $_SERVER, false, $_FILES);
|
||||
$helper = new phpbb_controller_helper($this->template, $this->user, $request, '', 'php');
|
||||
$this->assertEquals($helper->url($route, $params, $is_amp, $session_id), $expected);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_extension_style_path_provider_test extends phpbb_test_case
|
||||
{
|
||||
protected $relative_root_path;
|
||||
protected $root_path;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->relative_root_path = './';
|
||||
$this->root_path = dirname(__FILE__) . '/';
|
||||
}
|
||||
|
||||
public function test_find()
|
||||
{
|
||||
$phpbb_style_path_provider = new phpbb_style_path_provider();
|
||||
$phpbb_style_path_provider->set_styles(array($this->relative_root_path . 'styles/prosilver'));
|
||||
$phpbb_style_extension_path_provider = new phpbb_style_extension_path_provider(new phpbb_mock_extension_manager(
|
||||
$this->root_path,
|
||||
array(
|
||||
'foo' => array(
|
||||
'ext_name' => 'foo',
|
||||
'ext_active' => '1',
|
||||
'ext_path' => 'ext/foo/',
|
||||
),
|
||||
'bar' => array(
|
||||
'ext_name' => 'bar',
|
||||
'ext_active' => '1',
|
||||
'ext_path' => 'ext/bar/',
|
||||
),
|
||||
)), $phpbb_style_path_provider, $this->relative_root_path);
|
||||
|
||||
$this->assertEquals(array(
|
||||
'style' => array(
|
||||
$this->relative_root_path . 'styles/prosilver',
|
||||
),
|
||||
'bar' => array(
|
||||
$this->root_path . 'ext/bar/styles/prosilver',
|
||||
),
|
||||
), $phpbb_style_extension_path_provider->find());
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
require_once dirname(__FILE__) . '/../style_path_provider_test.php';
|
||||
|
||||
class phpbb_extension_subdir_style_path_provider_test extends phpbb_extension_style_path_provider_test
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
$this->relative_root_path = '../';
|
||||
$this->root_path = dirname(__FILE__) . '/../';
|
||||
}
|
||||
}
|
|
@ -52,7 +52,7 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
|
|||
public function test_foo_bar()
|
||||
{
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
$crawler = self::request('GET', 'app.php?controller=foo/bar', array(), false);
|
||||
$crawler = self::request('GET', 'app.php/foo/bar', array(), false);
|
||||
self::assert_response_status_code();
|
||||
$this->assertContains("foo/bar controller handle() method", $crawler->filter('body')->text());
|
||||
$this->phpbb_extension_manager->purge('foo/bar');
|
||||
|
@ -64,7 +64,7 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
|
|||
public function test_controller_with_template()
|
||||
{
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
$crawler = self::request('GET', 'app.php?controller=foo/template');
|
||||
$crawler = self::request('GET', 'app.php/foo/template');
|
||||
$this->assertContains("I am a variable", $crawler->filter('#content')->text());
|
||||
$this->phpbb_extension_manager->purge('foo/bar');
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
|
|||
public function test_missing_argument()
|
||||
{
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
$crawler = self::request('GET', 'app.php?controller=foo/baz', array(), false);
|
||||
$crawler = self::request('GET', 'app.php/foo/baz', array(), false);
|
||||
$this->assert_response_html(500);
|
||||
$this->assertContains('Missing value for argument #1: test in class phpbb_ext_foo_bar_controller:baz', $crawler->filter('body')->text());
|
||||
$this->phpbb_extension_manager->purge('foo/bar');
|
||||
|
@ -88,7 +88,7 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
|
|||
public function test_exception_should_result_in_500_status_code()
|
||||
{
|
||||
$this->phpbb_extension_manager->enable('foo/bar');
|
||||
$crawler = self::request('GET', 'app.php?controller=foo/exception', array(), false);
|
||||
$crawler = self::request('GET', 'app.php/foo/exception', array(), false);
|
||||
$this->assert_response_html(500);
|
||||
$this->assertContains('Exception thrown from foo/exception route', $crawler->filter('body')->text());
|
||||
$this->phpbb_extension_manager->purge('foo/bar');
|
||||
|
@ -105,7 +105,7 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
|
|||
*/
|
||||
public function test_error_ext_disabled_or_404()
|
||||
{
|
||||
$crawler = self::request('GET', 'app.php?controller=does/not/exist', array(), false);
|
||||
$crawler = self::request('GET', 'app.php/does/not/exist', array(), false);
|
||||
$this->assert_response_html(404);
|
||||
$this->assertContains('No route found for "GET /does/not/exist"', $crawler->filter('body')->text());
|
||||
}
|
||||
|
|
|
@ -10,14 +10,9 @@
|
|||
/**
|
||||
* Mock auth provider class with basic functions to help test sessions.
|
||||
*/
|
||||
class phpbb_mock_auth_provider implements phpbb_auth_provider_interface
|
||||
class phpbb_mock_auth_provider extends phpbb_auth_provider_base
|
||||
{
|
||||
function init()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
function login($username, $password)
|
||||
public function login($username, $password)
|
||||
{
|
||||
return array(
|
||||
'status' => "",
|
||||
|
@ -25,29 +20,4 @@ class phpbb_mock_auth_provider implements phpbb_auth_provider_interface
|
|||
'user_row' => "",
|
||||
);
|
||||
}
|
||||
|
||||
function autologin()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
function acp()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
function logout($data, $new_session)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
function validate_session($user)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function get_acp_template($new_config)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ class phpbb_template_includephp_test extends phpbb_template_template_test_case
|
|||
|
||||
$this->setup_engine(array('tpl_allow_php' => true));
|
||||
|
||||
$this->style->set_custom_style('tests', $cache_dir, array(), '');
|
||||
$this->template->set_custom_style('tests', $cache_dir);
|
||||
|
||||
$this->run_template('includephp_absolute.html', array(), array(), array(), "Path is absolute.\ntesting included php");
|
||||
|
||||
|
|
|
@ -113,13 +113,10 @@ Zeta test event in all',
|
|||
$config = new phpbb_config(array_merge($defaults, $new_config));
|
||||
|
||||
$this->template_path = dirname(__FILE__) . "/datasets/$dataset/styles/silver/template";
|
||||
$this->style_resource_locator = new phpbb_style_resource_locator();
|
||||
$this->extension_manager = new phpbb_mock_filesystem_extension_manager(
|
||||
dirname(__FILE__) . "/datasets/$dataset/"
|
||||
);
|
||||
$this->template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $user, new phpbb_template_context, $this->extension_manager);
|
||||
$this->style_provider = new phpbb_style_path_provider();
|
||||
$this->style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $this->style_resource_locator, $this->style_provider, $this->template);
|
||||
$this->style->set_custom_style('silver', array($this->template_path), $style_names, '');
|
||||
$this->template->set_custom_style(((!empty($style_names)) ? $style_names : 'silver'), array($this->template_path));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
|||
array(),
|
||||
'1!false',
|
||||
),
|
||||
array(
|
||||
'if.html',
|
||||
array('S_OTHER_OTHER_VALUE' => true),
|
||||
array(),
|
||||
array(),
|
||||
'|S_OTHER_OTHER_VALUE|!false',
|
||||
),
|
||||
array(
|
||||
'if.html',
|
||||
array('S_VALUE' => false, 'S_OTHER_VALUE' => true),
|
||||
|
@ -151,7 +158,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
|||
array(),
|
||||
array('test_loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
||||
array(),
|
||||
"xyz\nabc\n\$VALUE == 'abc'\n(\$VALUE == 'abc')\n!\$DOESNT_EXIST\n(!\$DOESNT_EXIST)\nabc\nbar\nbar\nabc\ntest!@#$%^&*()_-=+{}[]:;\",<.>/?",
|
||||
"xyz\nabc\n\$VALUE == 'abc'\n(\$VALUE == 'abc')\n!\$DOESNT_EXIST\n(!\$DOESNT_EXIST)\nabc\nbar\nbar\nabc\ntest!@#$%^&*()_-=+{}[]:;\",<.>/?[]",
|
||||
),
|
||||
array(
|
||||
'define_advanced.html',
|
||||
|
@ -410,7 +417,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
|||
|
||||
$this->setup_engine(array('tpl_allow_php' => true));
|
||||
|
||||
$this->style->set_custom_style('tests', $cache_dir, array(), '');
|
||||
$this->template->set_custom_style('tests', $cache_dir);
|
||||
|
||||
$this->run_template('php.html', array(), array(), array(), 'test');
|
||||
}
|
||||
|
|
|
@ -11,11 +11,8 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
|||
|
||||
class phpbb_template_template_test_case extends phpbb_test_case
|
||||
{
|
||||
protected $style;
|
||||
protected $template;
|
||||
protected $template_path;
|
||||
protected $style_resource_locator;
|
||||
protected $style_provider;
|
||||
protected $user;
|
||||
|
||||
protected $test_path = 'tests/template';
|
||||
|
@ -67,11 +64,8 @@ class phpbb_template_template_test_case extends phpbb_test_case
|
|||
$this->user = new phpbb_user;
|
||||
|
||||
$this->template_path = $this->test_path . '/templates';
|
||||
$this->style_resource_locator = new phpbb_style_resource_locator();
|
||||
$this->style_provider = new phpbb_style_path_provider();
|
||||
$this->template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $this->user, new phpbb_template_context());
|
||||
$this->style = new phpbb_style($phpbb_root_path, $phpEx, $config, $this->user, $this->style_resource_locator, $this->style_provider, $this->template);
|
||||
$this->style->set_custom_style('tests', $this->template_path, array(), '');
|
||||
$this->template->set_custom_style('tests', $this->template_path);
|
||||
}
|
||||
|
||||
protected function setUp()
|
||||
|
|
|
@ -20,10 +20,7 @@ class phpbb_template_template_test_case_with_tree extends phpbb_template_templat
|
|||
|
||||
$this->template_path = $this->test_path . '/templates';
|
||||
$this->parent_template_path = $this->test_path . '/parent_templates';
|
||||
$this->style_resource_locator = new phpbb_style_resource_locator();
|
||||
$this->style_provider = new phpbb_style_path_provider();
|
||||
$this->template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $user, new phpbb_template_context());
|
||||
$this->style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $this->style_resource_locator, $this->style_provider, $this->template);
|
||||
$this->style->set_custom_style('tests', array($this->template_path, $this->parent_template_path), array(), '');
|
||||
$this->template->set_custom_style('tests', array($this->template_path, $this->parent_template_path));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,3 +23,5 @@ $VALUE == 'abc'
|
|||
{$VALUE}
|
||||
<!-- DEFINE $VALUE = 'test!@#$%^&*()_-=+{}[]:;",<.>/?' -->
|
||||
{$VALUE}
|
||||
<!-- DEFINE $VALUE = '' -->
|
||||
[{$VALUE}]
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
1
|
||||
<!-- ELSEIF S_OTHER_VALUE -->
|
||||
2
|
||||
<!-- ELSE IF S_OTHER_OTHER_VALUE -->
|
||||
|S_OTHER_OTHER_VALUE|
|
||||
<!-- ELSE -->
|
||||
03
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -42,7 +42,7 @@ server {
|
|||
root $PHPBB_ROOT_PATH/;
|
||||
index index.php index.html;
|
||||
|
||||
location ~ \.php$ {
|
||||
location ~ \.php {
|
||||
fastcgi_pass unix:$PHP_FPM_SOCK;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue