--- /dev/null
+<?php
+/**
+ * This sniff is based on Squiz_Sniffs_Classes_ClassFileNameSniff. Originally written
+ * by Greg Sherwood <gsherwood@squiz.net> and Marc McIntyre <mmcintyre@squiz.net>
+ * and released under the terms of the BSD Licence.
+ * See: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php
+ *
+ * @author Tim Duesterhus
+ * @license BSD Licence <https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt>
+ * @package com.woltlab.wcf
+ * @category Community Framework
+ */
+class WCF_Sniffs_Classes_ClassFileNameSniff implements PHP_CodeSniffer_Sniff {
+ /**
+ * Returns an array of tokens this test wants to listen for.
+ *
+ * @return array
+ */
+ public function register() {
+ return array(
+ T_CLASS,
+ T_INTERFACE,
+ );
+ }
+
+ /**
+ * 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();
+ $decName = $phpcsFile->findNext(T_STRING, $stackPtr);
+ $fullPath = basename($phpcsFile->getFilename());
+ $fileName = substr($fullPath, 0, strpos($fullPath, '.'));
+
+ if ($tokens[$decName]['content'] !== $fileName) {
+ $error = '%s name doesn\'t match filename; expected "%s %s"';
+ $data = array(
+ ucfirst($tokens[$stackPtr]['content']),
+ $tokens[$stackPtr]['content'],
+ $fileName,
+ );
+ $phpcsFile->addError($error, $stackPtr, 'NoMatch', $data);
+ }
+ }
+}
--- /dev/null
+<?php
+if (class_exists('PHP_CodeSniffer_Standards_AbstractPatternSniff', true) === false) {
+ throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_Standards_AbstractPatternSniff not found');
+}
+
+/**
+ * This sniff is based on Squiz_Sniffs_ControlStructures_ControlSignatureSniff. Originally written
+ * by Greg Sherwood <gsherwood@squiz.net> and Marc McIntyre <mmcintyre@squiz.net>
+ * and released under the terms of the BSD Licence.
+ * See: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php
+ *
+ * @author Tim Duesterhus
+ * @license BSD Licence <https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt>
+ * @package com.woltlab.wcf
+ * @category Community Framework
+ */
+class WCF_Sniffs_ControlStructures_ControlSignatureSniff extends PHP_CodeSniffer_Standards_AbstractPatternSniff {
+ /**
+ * A list of tokenizers this sniff supports.
+ *
+ * @var array
+ */
+ public $supportedTokenizers = array(
+ 'PHP',
+ 'JS'
+ );
+
+ /**
+ * Returns the patterns that this test wishes to verify.
+ *
+ * @return array(string)
+ */
+ protected function getPatterns() {
+ return array(
+ 'try {EOL...}EOL...catch (...) {',
+ 'do {EOL...}EOL...while (...);EOL',
+ 'while (...) {EOL',
+ 'for (...) {EOL',
+ 'if (...) {EOL',
+ 'foreach (...) {EOL',
+ '}EOL...else if (...) {EOL',
+ '}EOL...elseif (...) {EOL',
+ '}EOL...else {EOL',
+ );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This sniff is based on Squiz_Sniffs_WhiteSpace_SuperfluousWhitespaceSniff. Originally written
+ * by Greg Sherwood <gsherwood@squiz.net> and Marc McIntyre <mmcintyre@squiz.net>
+ * and released under the terms of the BSD Licence.
+ * See: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php
+ *
+ * @author Tim Duesterhus
+ * @license BSD Licence <https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt>
+ * @package com.woltlab.wcf
+ * @category Community Framework
+ */
+class WCF_Sniffs_WhiteSpace_SuperfluousWhitespaceSniff implements PHP_CodeSniffer_Sniff {
+ /**
+ * A list of tokenizers this sniff supports.
+ *
+ * @var array
+ */
+ public $supportedTokenizers = array(
+ 'PHP',
+ 'JS',
+ 'CSS',
+ );
+
+ /**
+ * If TRUE, whitespace rules are not checked for blank lines.
+ *
+ * Blank lines are those that contain only whitespace.
+ *
+ * @var boolean
+ */
+ public $ignoreBlankLines = false;
+
+ /**
+ * Returns an array of tokens this test wants to listen for.
+ *
+ * @return array
+ */
+ public function register() {
+ return array(
+ T_OPEN_TAG,
+ T_CLOSE_TAG,
+ T_WHITESPACE,
+ T_COMMENT,
+ );
+ }
+
+ /**
+ * Processes this sniff, 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.
+ */
+ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) {
+ $tokens = $phpcsFile->getTokens();
+
+ if ($tokens[$stackPtr]['code'] === T_OPEN_TAG) {
+ // Check for start of file whitespace.
+ if ($phpcsFile->tokenizerType !== 'PHP') {
+ // The first token is always the open tag inserted when tokenizsed
+ // and the second token is always the first piece of content in
+ // the file. If the second token is whitespace, there was
+ // whitespace at the start of the file.
+ if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) {
+ return;
+ }
+ }
+ else {
+ // If its the first token, then there is no space.
+ if ($stackPtr === 0) {
+ return;
+ }
+
+ for ($i = ($stackPtr - 1); $i >= 0; $i--) {
+ // If we find something that isn't inline html then there is something previous in the file.
+ if ($tokens[$i]['type'] !== 'T_INLINE_HTML') {
+ return;
+ }
+
+ // If we have ended up with inline html make sure it isn't just whitespace.
+ $tokenContent = trim($tokens[$i]['content']);
+ if ($tokenContent !== '') {
+ return;
+ }
+ }
+ }
+
+ $phpcsFile->addError('Additional whitespace found at start of file', $stackPtr, 'StartFile');
+ }
+ else if ($tokens[$stackPtr]['code'] === T_CLOSE_TAG) {
+ // Check for end of file whitespace.
+
+ if ($phpcsFile->tokenizerType === 'JS') {
+ // The last token is always the close tag inserted when tokenized
+ // and the second last token is always the last piece of content in
+ // the file. If the second last token is whitespace, there was
+ // whitespace at the end of the file.
+ if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE) {
+ return;
+ }
+ }
+ else if ($phpcsFile->tokenizerType === 'CSS') {
+ // The last two tokens are always the close tag and whitespace
+ // inserted when tokenizsed and the third last token is always the
+ // last piece of content in the file. If the third last token is
+ // whitespace, there was whitespace at the end of the file.
+ if ($tokens[($stackPtr - 3)]['code'] !== T_WHITESPACE) {
+ return;
+ }
+
+ // Adjust the pointer to give the correct line number for the error.
+ $stackPtr -= 2;
+ }
+ else {
+ if (isset($tokens[($stackPtr + 1)]) === false) {
+ // The close PHP token is the last in the file.
+ return;
+ }
+
+ for ($i = ($stackPtr + 1); $i < $phpcsFile->numTokens; $i++) {
+ // If we find something that isn't inline html then there
+ // is more to the file.
+ if ($tokens[$i]['type'] !== 'T_INLINE_HTML') {
+ return;
+ }
+
+ // If we have ended up with inline html make sure it
+ // isn't just whitespace.
+ $tokenContent = trim($tokens[$i]['content']);
+ if (empty($tokenContent) === false) {
+ return;
+ }
+ }
+ }
+
+ $phpcsFile->addError('Additional whitespace found at end of file', $stackPtr, 'EndFile');
+ }
+ else {
+ // Check for end of line whitespace.
+
+ // Ignore whitespace that is not at the end of a line.
+ if (strpos($tokens[$stackPtr]['content'], $phpcsFile->eolChar) === false) {
+ return;
+ }
+
+ // Ignore blank lines if required.
+ if ($this->ignoreBlankLines === true && $tokens[($stackPtr - 1)]['line'] !== $tokens[$stackPtr]['line']) {
+ return;
+ }
+
+ $tokenContent = rtrim($tokens[$stackPtr]['content'], $phpcsFile->eolChar);
+ if (empty($tokenContent) === false) {
+ if (preg_match("|^.*\n\\s+$|", $tokenContent) !== 0) {
+ $phpcsFile->addError('Whitespace found at end of line', $stackPtr, 'EndLine');
+ }
+ }
+
+ // Check for multiple blanks lines in a function.
+
+ if ($phpcsFile->hasCondition($stackPtr, T_FUNCTION) === true) {
+ if ($tokens[($stackPtr - 1)]['line'] < $tokens[$stackPtr]['line'] && $tokens[($stackPtr - 2)]['line'] === $tokens[($stackPtr - 1)]['line']) {
+ // This is an empty line and the line before this one is not
+ // empty, so this could be the start of a multiple empty
+ // line block.
+ $next = $phpcsFile->findNext(T_WHITESPACE, $stackPtr, null, true);
+ $lines = $tokens[$next]['line'] - $tokens[$stackPtr]['line'];
+ if ($lines > 1) {
+ $error = 'Functions must not contain multiple empty lines in a row; found %s empty lines';
+ $data = array($lines);
+ $phpcsFile->addError($error, $stackPtr, 'EmptyLines', $data);
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0"?>
+<ruleset name="WCF">
+ <description>WoltLab Community Framework Coding Standard</description>
+ <exclude-pattern>*/wcfsetup/test.php</exclude-pattern>
+ <exclude-pattern>*/wcfsetup/install.php</exclude-pattern>
+ <exclude-pattern>*/CodeSniff/*</exclude-pattern>
+
+ <rule ref="Generic.Classes.DuplicateClassName" />
+ <rule ref="Generic.Files.ByteOrderMark" />
+ <rule ref="Generic.Files.EndFileNewline" />
+ <rule ref="Generic.Files.OneClassPerFile" />
+ <rule ref="Generic.Files.OneInterfacePerFile" />
+ <rule ref="Generic.Formatting.DisallowMultipleStatements" />
+ <rule ref="Generic.Functions.FunctionCallArgumentSpacing" />
+ <rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie" />
+ <rule ref="Generic.NamingConventions.UpperCaseConstantName" />
+ <rule ref="Generic.PHP.CharacterBeforePHPOpeningTag" />
+ <rule ref="Generic.PHP.DisallowShortOpenTag" />
+ <rule ref="Generic.PHP.ForbiddenFunctions" />
+ <rule ref="Generic.PHP.LowerCaseConstant" />
+ <rule ref="Generic.WhiteSpace.DisallowSpaceIndent" />
+ <rule ref="Squiz.Arrays.ArrayBracketSpacing" />
+ <rule ref="Squiz.Classes.LowercaseClassKeywords" />
+ <!--rule ref="Squiz.Classes.SelfMemberReference" /--> <!-- TODO: Is this wanted? -->
+ <rule ref="Squiz.Classes.ValidClassName" />
+ <rule ref="Squiz.Commenting.DocCommentAlignment" />
+ <rule ref="Squiz.ControlStructures.ElseIfDeclaration" />
+ <rule ref="Squiz.ControlStructures.ForEachLoopDeclaration" />
+ <rule ref="Squiz.ControlStructures.ForLoopDeclaration" />
+ <rule ref="Squiz.ControlStructures.LowercaseDeclaration" />
+ <rule ref="Squiz.Operators.ValidLogicalOperators" />
+ <rule ref="WCF.Classes.ClassFileName" />
+ <rule ref="WCF.ControlStructures.ControlSignature" />
+ <rule ref="WCF.WhiteSpace.SuperfluousWhitespace" />
+ <rule ref="Zend.Files.ClosingTag" />
+
+
+ <!-- Use Unix newlines -->
+ <rule ref="Generic.Files.LineEndings">
+ <properties>
+ <property name="eolChar" value="\n" />
+ </properties>
+ </rule>
+</ruleset>
* @package com.woltlab.wcf
* @category Community Framework
*/
+// @codingStandardsIgnoreFile
// get url
$url = '';
if (isset($_GET['url'])) $url = htmlspecialchars(str_replace(';', '%3B', trim($_GET['url'])));
<div style="padding: 5em; background-color: lightgrey">
<?php
+// @codingStandardsIgnoreFile
$flags = glob('*.svg');
foreach ($flags as $flag) {
if ($flag == 'de-informal.svg') {
<?php
+// @codingStandardsIgnoreFile
$icons = array();
$files = glob('*.svg');
if (is_array($files)) {
if (!$this->archive->isValidInstall()) {
throw new UserInputException($type, 'noValidInstall');
}
- elseif ($this->archive->isAlreadyInstalled()) {
+ else if ($this->archive->isAlreadyInstalled()) {
throw new UserInputException($type, 'uniqueAlreadyInstalled');
}
}
$groupIDs[$row['userID']][] = $row['groupID'];
}
-
foreach ($users as $userID => $userData) {
if (!UserGroup::isAccessibleGroup($groupIDs[$userID])) {
throw new PermissionDeniedException();
}
}
- for($i = 0; $i < 7; $i++) {
+ for ($i = 0; $i < 7; $i++) {
if (file_exists(WCF_DIR.'log/'.date('Y-m-d', TIME_NOW - 86400 * $i).'.txt')) {
$this->healthDetails['error'][] = WCF::getLanguage()->getDynamicVariable('wcf.acp.index.health.exception', array(
'date' => TIME_NOW - 86400 * $i
$this->data = $this->prune($object);
- if(empty($this->data)) {
+ if (empty($this->data)) {
throw new AJAXException("no results");
}
protected function prune(IRESTfulResponse $object) {
$prunedArray = array();
- foreach($object->getResponseFields() as $fieldName) {
+ foreach ($object->getResponseFields() as $fieldName) {
if ($object->$fieldName) {
$prunedArray[$fieldName] = $object->$fieldName;
}
// use table index as array index
$objects = array();
- foreach($this->objects as $object) {
+ foreach ($this->objects as $object) {
$objectID = $object->{$this->getDatabaseTableIndexName()};
$objects[$objectID] = $object;
* @return wcf\data\category\Category
*/
public function getCategory();
-}
\ No newline at end of file
+}
* @return string
*/
public function getLink();
-}
\ No newline at end of file
+}
* Validates the "loadContainer" action.
*/
public function validateLoadContainer();
-}
\ No newline at end of file
+}
* Validates the "getSearchResultList" action.
*/
public function validateGetSearchResultList();
-}
\ No newline at end of file
+}
* @return string
*/
public function getTitle();
-}
\ No newline at end of file
+}
$languageItemList->sqlLimit = 0;
$languageItemList->readObjects();
- foreach($languageItemList->getObjects() as $languageItem) {
+ foreach ($languageItemList->getObjects() as $languageItem) {
$languageItemEditor = new LanguageItemEditor($languageItem);
$languageItemEditor->update(array(
'languageCustomItemValue' => $items[$languageItem->languageItem],
* @subpackage system.exception
* @category Community Framework
*/
+// @codingStandardsIgnoreFile
class SystemException extends LoggedException implements IPrintableException {
/**
* error description
// calculate the checksum
$checksum = 0;
- for ($i = 0; $i < 148; $i++) $checksum += ord(substr($binaryDataFirst, $i, 1));
- for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
- for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($binaryDataLast, $j, 1));
+ for ($i = 0; $i < 148; $i++) {
+ $checksum += ord(substr($binaryDataFirst, $i, 1));
+ }
+ for ($i = 148; $i < 156; $i++) {
+ $checksum += ord(' ');
+ }
+ for ($i = 156, $j = 0; $i < 512; $i++, $j++) {
+ $checksum += ord(substr($binaryDataLast, $j, 1));
+ }
$this->file->write($binaryDataFirst, 148);
$this->file->write(pack("a8", sprintf("%6s ", decOct($checksum))), 8); // write the checksum
// calculate the checksum
$checksum = 0;
- for ($i = 0; $i < 148; $i++) $checksum += ord(substr($binaryDataFirst, $i, 1));
- for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
- for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($binaryDataLast, $j, 1));
+ for ($i = 0; $i < 148; $i++) {
+ $checksum += ord(substr($binaryDataFirst, $i, 1));
+ }
+ for ($i = 148; $i < 156; $i++) {
+ $checksum += ord(' ');
+ }
+ for ($i = 156, $j = 0; $i < 512; $i++, $j++) {
+ $checksum += ord(substr($binaryDataLast, $j, 1));
+ }
$this->file->write($binaryDataFirst, 148);
$this->file->write(pack("a8", sprintf("%6s ", decOct($checksum))), 8); // write the checksum
$headers.
$data.
$this->endOfData.
- pack("v", sizeof($this->data)).
- pack("v", sizeof($this->data)).
+ pack("v", count($this->data)).
+ pack("v", count($this->data)).
pack("V", strlen($data)).
pack("V", strlen($headers)).
"\x00\x00";
* @see wcf\system\SingletonFactory::init()
*/
protected function init() {
- $this->availableLanguages = LanguageFactory::getInstance()->getLanguages();
+ $this->availableLanguages = LanguageFactory::getInstance()->getLanguages();
}
/**
$statement = WCF::getDB()->prepareStatement($sql);
$statement->execute($conditions->getParameters());
}
-}
\ No newline at end of file
+}
*/
public function getOutput(User $user, UserOption $option, $value);
}
-?>
}
}
}
-}
\ No newline at end of file
+}
// remove file extension
foreach ($files as &$file) {
- $file = preg_replace('~.tpl$~','', $file);
+ $file = preg_replace('~.tpl$~', '', $file);
}
unset($file);
*/
protected function getShowOrder($showOrder, $parentName = null, $columnName = null, $tableNameExtension = '') {
if ($showOrder === null) {
- // get greatest showOrder value
+ // get greatest showOrder value
$conditions = new PreparedStatementConditionBuilder();
if ($columnName !== null) $conditions->add($columnName." = ?", array($parentName));
* @return string
*/
public function getTemplate();
-}
\ No newline at end of file
+}
throw new SystemException("Sitemap name '".$sitemapName."' is unknown");
}
}
-}
\ No newline at end of file
+}
<?php
-
+// @codingStandardsIgnoreFile
/**
* lessphp v0.3.8
* http://leafo.net/lessphp
return 1;
}
-
throw new SystemException("Unable to find template '$templateName'");
}
*/
public static function makeArgString($args) {
$argString = '';
- foreach ($args as $key => $val) {
+ foreach ($args as $key => $val) {
if ($argString != '') {
$argString .= ', ';
}
if ($file && $line) {
$errorMsg .= " in template '$file' on line $line";
}
- elseif ($file && !$line) {
+ else if ($file && !$line) {
$errorMsg .= " in template '$file'";
}
return $errorMsg;
* @subpackage system.template.plugin
* @category Community Framework
*/
+// TODO: Is the classname or the filename correct?
class StaticlangCompilerTemplatePlugin implements ICompilerTemplatePlugin {
/**
* @see wcf\system\template\ICompilerTemplatePlugin::executeStart()
$this->replyBody = '';
$this->statusCode = 0;
}
-}
\ No newline at end of file
+}
}
private function __construct() { }
-}
\ No newline at end of file
+}