mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge branch '3.1.x'
This commit is contained in:
commit
3b91b243b0
9 changed files with 167 additions and 10 deletions
|
@ -0,0 +1,143 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
*
|
||||||
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||||
|
*
|
||||||
|
* For full copyright and license information, please see
|
||||||
|
* the docs/CREDITS.txt file.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that the opening brace of a control structures is on the line after.
|
||||||
|
* From Generic_Sniffs_Functions_OpeningFunctionBraceBsdAllmanSniff
|
||||||
|
*/
|
||||||
|
class phpbb_Sniffs_ControlStructures_OpeningBraceBsdAllmanSniff implements PHP_CodeSniffer_Sniff
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Registers the tokens that this sniff wants to listen for.
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
T_IF,
|
||||||
|
T_ELSE,
|
||||||
|
T_FOREACH,
|
||||||
|
T_WHILE,
|
||||||
|
T_DO,
|
||||||
|
T_FOR,
|
||||||
|
T_SWITCH,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes this test, when one of its tokens is encountered.
|
||||||
|
*
|
||||||
|
* @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
||||||
|
* @param int $stackPtr The position of the current token in the
|
||||||
|
* stack passed in $tokens.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
||||||
|
{
|
||||||
|
$tokens = $phpcsFile->getTokens();
|
||||||
|
|
||||||
|
if (isset($tokens[$stackPtr]['scope_opener']) === false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* else if ()
|
||||||
|
* {
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
if ($tokens[$stackPtr]['code'] === T_ELSE && $tokens[$stackPtr + 2]['code'] === T_IF)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$openingBrace = $tokens[$stackPtr]['scope_opener'];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ...
|
||||||
|
* do
|
||||||
|
* {
|
||||||
|
* <code>
|
||||||
|
* } while();
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* else
|
||||||
|
* {
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
if ($tokens[$stackPtr]['code'] === T_DO ||$tokens[$stackPtr]['code'] === T_ELSE)
|
||||||
|
{
|
||||||
|
$cs_line = $tokens[$stackPtr]['line'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// The end of the function occurs at the end of the argument list. Its
|
||||||
|
// like this because some people like to break long function declarations
|
||||||
|
// over multiple lines.
|
||||||
|
$cs_line = $tokens[$tokens[$stackPtr]['parenthesis_closer']]['line'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$braceLine = $tokens[$openingBrace]['line'];
|
||||||
|
|
||||||
|
$lineDifference = ($braceLine - $cs_line);
|
||||||
|
|
||||||
|
if ($lineDifference === 0)
|
||||||
|
{
|
||||||
|
$error = 'Opening brace should be on a new line';
|
||||||
|
$phpcsFile->addError($error, $openingBrace, 'BraceOnSameLine');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($lineDifference > 1)
|
||||||
|
{
|
||||||
|
$error = 'Opening brace should be on the line after the declaration; found %s blank line(s)';
|
||||||
|
$data = array(($lineDifference - 1));
|
||||||
|
$phpcsFile->addError($error, $openingBrace, 'BraceSpacing', $data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We need to actually find the first piece of content on this line,
|
||||||
|
// as if this is a method with tokens before it (public, static etc)
|
||||||
|
// or an if with an else before it, then we need to start the scope
|
||||||
|
// checking from there, rather than the current token.
|
||||||
|
$lineStart = $stackPtr;
|
||||||
|
while (($lineStart = $phpcsFile->findPrevious(array(T_WHITESPACE), ($lineStart - 1), null, false)) !== false)
|
||||||
|
{
|
||||||
|
if (strpos($tokens[$lineStart]['content'], $phpcsFile->eolChar) !== false)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// We found a new line, now go forward and find the first non-whitespace
|
||||||
|
// token.
|
||||||
|
$lineStart = $phpcsFile->findNext(array(T_WHITESPACE), $lineStart, null, true);
|
||||||
|
|
||||||
|
// The opening brace is on the correct line, now it needs to be
|
||||||
|
// checked to be correctly indented.
|
||||||
|
$startColumn = $tokens[$lineStart]['column'];
|
||||||
|
$braceIndent = $tokens[$openingBrace]['column'];
|
||||||
|
|
||||||
|
if ($braceIndent !== $startColumn)
|
||||||
|
{
|
||||||
|
$error = 'Opening brace indented incorrectly; expected %s spaces, found %s';
|
||||||
|
$data = array(
|
||||||
|
($startColumn - 1),
|
||||||
|
($braceIndent - 1),
|
||||||
|
);
|
||||||
|
$phpcsFile->addError($error, $openingBrace, 'BraceIndent', $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,4 +12,7 @@
|
||||||
<!-- Tabs MUST be used for indentation -->
|
<!-- Tabs MUST be used for indentation -->
|
||||||
<rule ref="Generic.WhiteSpace.DisallowSpaceIndent" />
|
<rule ref="Generic.WhiteSpace.DisallowSpaceIndent" />
|
||||||
|
|
||||||
|
<!-- ALL braces MUST be on their own lines. -->
|
||||||
|
<rule ref="./phpbb/Sniffs/ControlStructures/OpeningBraceBsdAllmanSniff.php" />
|
||||||
|
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
|
|
@ -515,7 +515,8 @@ class acp_board
|
||||||
|
|
||||||
if ($config_name == 'guest_style')
|
if ($config_name == 'guest_style')
|
||||||
{
|
{
|
||||||
if (isset($cfg_array[$config_name])) {
|
if (isset($cfg_array[$config_name]))
|
||||||
|
{
|
||||||
$this->guest_style_set($cfg_array[$config_name]);
|
$this->guest_style_set($cfg_array[$config_name]);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -117,7 +117,8 @@ class token_storage implements TokenStorageInterface
|
||||||
{
|
{
|
||||||
$service = $this->get_service_name_for_db($service);
|
$service = $this->get_service_name_for_db($service);
|
||||||
|
|
||||||
if ($this->cachedToken) {
|
if ($this->cachedToken)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +233,8 @@ class token_storage implements TokenStorageInterface
|
||||||
{
|
{
|
||||||
$service = $this->get_service_name_for_db($service);
|
$service = $this->get_service_name_for_db($service);
|
||||||
|
|
||||||
if ($this->cachedToken instanceof TokenInterface) {
|
if ($this->cachedToken instanceof TokenInterface)
|
||||||
|
{
|
||||||
return $this->cachedToken;
|
return $this->cachedToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,8 @@ class loader extends \Twig_Loader_Filesystem
|
||||||
|
|
||||||
// If this is in the cache we can skip the entire process below
|
// If this is in the cache we can skip the entire process below
|
||||||
// as it should have already been validated
|
// as it should have already been validated
|
||||||
if (isset($this->cache[$name])) {
|
if (isset($this->cache[$name]))
|
||||||
|
{
|
||||||
return $this->cache[$name];
|
return $this->cache[$name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,8 @@ class definenode extends \Twig_Node
|
||||||
{
|
{
|
||||||
$compiler->addDebugInfo($this);
|
$compiler->addDebugInfo($this);
|
||||||
|
|
||||||
if ($this->getAttribute('capture')) {
|
if ($this->getAttribute('capture'))
|
||||||
|
{
|
||||||
$compiler
|
$compiler
|
||||||
->write("ob_start();\n")
|
->write("ob_start();\n")
|
||||||
->subcompile($this->getNode('value'))
|
->subcompile($this->getNode('value'))
|
||||||
|
|
|
@ -47,7 +47,8 @@ class includephp extends \Twig_Node
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->getAttribute('ignore_missing')) {
|
if ($this->getAttribute('ignore_missing'))
|
||||||
|
{
|
||||||
$compiler
|
$compiler
|
||||||
->write("try {\n")
|
->write("try {\n")
|
||||||
->indent()
|
->indent()
|
||||||
|
@ -76,7 +77,8 @@ class includephp extends \Twig_Node
|
||||||
->write("}\n")
|
->write("}\n")
|
||||||
;
|
;
|
||||||
|
|
||||||
if ($this->getAttribute('ignore_missing')) {
|
if ($this->getAttribute('ignore_missing'))
|
||||||
|
{
|
||||||
$compiler
|
$compiler
|
||||||
->outdent()
|
->outdent()
|
||||||
->write("} catch (\Twig_Error_Loader \$e) {\n")
|
->write("} catch (\Twig_Error_Loader \$e) {\n")
|
||||||
|
|
|
@ -33,7 +33,8 @@ class defineparser extends \Twig_TokenParser
|
||||||
$name = $this->parser->getExpressionParser()->parseExpression();
|
$name = $this->parser->getExpressionParser()->parseExpression();
|
||||||
|
|
||||||
$capture = false;
|
$capture = false;
|
||||||
if ($stream->test(\Twig_Token::OPERATOR_TYPE, '=')) {
|
if ($stream->test(\Twig_Token::OPERATOR_TYPE, '='))
|
||||||
|
{
|
||||||
$stream->next();
|
$stream->next();
|
||||||
$value = $this->parser->getExpressionParser()->parseExpression();
|
$value = $this->parser->getExpressionParser()->parseExpression();
|
||||||
|
|
||||||
|
@ -45,7 +46,9 @@ class defineparser extends \Twig_TokenParser
|
||||||
}
|
}
|
||||||
|
|
||||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$capture = true;
|
$capture = true;
|
||||||
|
|
||||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||||
|
|
|
@ -31,7 +31,8 @@ class includephp extends \Twig_TokenParser
|
||||||
$stream = $this->parser->getStream();
|
$stream = $this->parser->getStream();
|
||||||
|
|
||||||
$ignoreMissing = false;
|
$ignoreMissing = false;
|
||||||
if ($stream->test(\Twig_Token::NAME_TYPE, 'ignore')) {
|
if ($stream->test(\Twig_Token::NAME_TYPE, 'ignore'))
|
||||||
|
{
|
||||||
$stream->next();
|
$stream->next();
|
||||||
$stream->expect(\Twig_Token::NAME_TYPE, 'missing');
|
$stream->expect(\Twig_Token::NAME_TYPE, 'missing');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue