@@ -153,7 +153,7 @@ discard block |
||
153 | 153 | * @param RecentChange|RCCacheEntry $rc |
154 | 154 | * @param string|bool $watched Optionally timestamp for adding watched class |
155 | 155 | * |
156 | - * @return array of classes |
|
156 | + * @return string[] of classes |
|
157 | 157 | */ |
158 | 158 | protected function getHTMLClasses( $rc, $watched ) { |
159 | 159 | $classes = []; |
@@ -228,7 +228,7 @@ discard block |
||
228 | 228 | } |
229 | 229 | |
230 | 230 | /** |
231 | - * @param ResultWrapper|array $rows |
|
231 | + * @param ResultWrapper $rows |
|
232 | 232 | */ |
233 | 233 | public function initChangesListRows( $rows ) { |
234 | 234 | Hooks::run( 'ChangesListInitRows', [ $this, $rows ] ); |
@@ -478,6 +478,8 @@ discard block |
||
478 | 478 | * |
479 | 479 | * @param string &$s HTML to update |
480 | 480 | * @param RecentChange &$rc |
481 | + * @param string $s |
|
482 | + * @param RecentChange $rc |
|
481 | 483 | */ |
482 | 484 | public function insertUserRelatedLinks( &$s, &$rc ) { |
483 | 485 | if ( $this->isDeleted( $rc, Revision::DELETED_USER ) ) { |
@@ -636,7 +638,7 @@ discard block |
||
636 | 638 | |
637 | 639 | /** |
638 | 640 | * @param RecentChange $rc |
639 | - * @param array $classes |
|
641 | + * @param string[] $classes |
|
640 | 642 | * @return string |
641 | 643 | * @since 1.26 |
642 | 644 | */ |
@@ -646,6 +648,10 @@ discard block |
||
646 | 648 | return $s; |
647 | 649 | } |
648 | 650 | |
651 | + /** |
|
652 | + * @param string $s |
|
653 | + * @param RecentChange $rc |
|
654 | + */ |
|
649 | 655 | public function insertExtra( &$s, &$rc, &$classes ) { |
650 | 656 | // Empty, used for subclasses to add anything special. |
651 | 657 | } |
@@ -85,7 +85,7 @@ |
||
85 | 85 | } |
86 | 86 | |
87 | 87 | /** |
88 | - * @return array |
|
88 | + * @return string[] |
|
89 | 89 | */ |
90 | 90 | function getOrderFields() { |
91 | 91 | return array( 'rd_namespace', 'rd_title', 'rd_from' ); |
@@ -1206,7 +1206,7 @@ discard block |
||
1206 | 1206 | * @since 1.27 |
1207 | 1207 | * |
1208 | 1208 | * @param string $referenceString Space delimited list of ids |
1209 | - * @param string|array $options String or array of strings (default is array()): |
|
1209 | + * @param string $options String or array of strings (default is array()): |
|
1210 | 1210 | * 'noninitial': This is a non-initial fragment of an id, not a full id, |
1211 | 1211 | * so don't pay attention if the first character isn't valid at the |
1212 | 1212 | * beginning of an id. Only matters if $wgExperimentalHtmlIds is |
@@ -1334,7 +1334,7 @@ discard block |
||
1334 | 1334 | * Pick the appropriate attribute value from a match set from the |
1335 | 1335 | * attribs regex matches. |
1336 | 1336 | * |
1337 | - * @param array $set |
|
1337 | + * @param string[] $set |
|
1338 | 1338 | * @throws MWException When tag conditions are not met. |
1339 | 1339 | * @return string |
1340 | 1340 | */ |
@@ -1850,7 +1850,7 @@ discard block |
||
1850 | 1850 | |
1851 | 1851 | /** |
1852 | 1852 | * @param string $url |
1853 | - * @return mixed|string |
|
1853 | + * @return string |
|
1854 | 1854 | */ |
1855 | 1855 | static function cleanUrl( $url ) { |
1856 | 1856 | # Normalize any HTML entities in input. They will be |
@@ -1936,7 +1936,7 @@ discard block |
||
1936 | 1936 | * @since 1.18 |
1937 | 1937 | * |
1938 | 1938 | * @param string $addr E-mail address |
1939 | - * @return bool |
|
1939 | + * @return null|boolean |
|
1940 | 1940 | */ |
1941 | 1941 | public static function validateEmail( $addr ) { |
1942 | 1942 | $result = null; |
@@ -751,7 +751,7 @@ discard block |
||
751 | 751 | |
752 | 752 | /** |
753 | 753 | * Determine if the stack has $tag in button scope. |
754 | - * @param BalanceElement|array|string $tag |
|
754 | + * @param string $tag |
|
755 | 755 | * @return bool |
756 | 756 | * @see https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope |
757 | 757 | */ |
@@ -831,6 +831,7 @@ discard block |
||
831 | 831 | |
832 | 832 | /** |
833 | 833 | * Return the adjusted current node. |
834 | + * @param BalanceElement|null $fragmentContext |
|
834 | 835 | */ |
835 | 836 | public function adjustedCurrentNode( $fragmentContext ) { |
836 | 837 | return ( $fragmentContext && $this->length() === 1 ) ? |
@@ -840,7 +841,7 @@ discard block |
||
840 | 841 | /** |
841 | 842 | * Return an iterator over this stack which visits the current node |
842 | 843 | * first, and the root node last. |
843 | - * @return Iterator |
|
844 | + * @return ReverseArrayIterator |
|
844 | 845 | */ |
845 | 846 | public function getIterator() { |
846 | 847 | return new ReverseArrayIterator( $this->elements ); |
@@ -1063,7 +1064,7 @@ discard block |
||
1063 | 1064 | * @param string $tag The subject tag name. |
1064 | 1065 | * @param BalanceActiveFormattingElements $afe The current |
1065 | 1066 | * active formatting elements list. |
1066 | - * @return true if the adoption agency algorithm "did something", false |
|
1067 | + * @return boolean if the adoption agency algorithm "did something", false |
|
1067 | 1068 | * if more processing is required by the caller. |
1068 | 1069 | * @see https://html.spec.whatwg.org/multipage/syntax.html#adoption-agency-algorithm |
1069 | 1070 | */ |
@@ -1441,6 +1442,7 @@ discard block |
||
1441 | 1442 | * Find and return the last element with the specified tag between the |
1442 | 1443 | * end of the list and the last marker on the list. |
1443 | 1444 | * Used when parsing <a> "in body mode". |
1445 | + * @param string $tag |
|
1444 | 1446 | */ |
1445 | 1447 | public function findElementByTag( $tag ) { |
1446 | 1448 | $elt = $this->tail; |
@@ -1588,6 +1590,10 @@ discard block |
||
1588 | 1590 | * @see https://html.spec.whatwg.org/multipage/syntax.html#reconstruct-the-active-formatting-elements |
1589 | 1591 | */ |
1590 | 1592 | // @codingStandardsIgnoreEnd |
1593 | + |
|
1594 | + /** |
|
1595 | + * @param BalanceStack|null $stack |
|
1596 | + */ |
|
1591 | 1597 | public function reconstruct( $stack ) { |
1592 | 1598 | $entry = $this->tail; |
1593 | 1599 | // If there are no entries in the list of active formatting elements, |
@@ -2051,6 +2057,10 @@ discard block |
||
2051 | 2057 | return $oldMode; |
2052 | 2058 | } |
2053 | 2059 | |
2060 | + /** |
|
2061 | + * @param string $mode |
|
2062 | + * @param boolean $selfclose |
|
2063 | + */ |
|
2054 | 2064 | private function switchModeAndReprocess( $mode, $token, $value, $attribs, $selfclose ) { |
2055 | 2065 | $this->switchMode( $mode ); |
2056 | 2066 | return $this->insertToken( $token, $value, $attribs, $selfclose ); |
@@ -3080,6 +3090,11 @@ discard block |
||
3080 | 3090 | return false; |
3081 | 3091 | } |
3082 | 3092 | } |
3093 | + |
|
3094 | + /** |
|
3095 | + * @param string $token |
|
3096 | + * @param string $value |
|
3097 | + */ |
|
3083 | 3098 | private function inCellMode( $token, $value, $attribs = null, $selfclose = false ) { |
3084 | 3099 | if ( $token === 'tag' ) { |
3085 | 3100 | switch ( $value ) { |
@@ -234,7 +234,6 @@ discard block |
||
234 | 234 | * array( 'y' ) |
235 | 235 | * ) |
236 | 236 | * |
237 | - * @param array $array1,... |
|
238 | 237 | * @return array |
239 | 238 | */ |
240 | 239 | function wfMergeErrorArrays( /*...*/ ) { |
@@ -261,7 +260,7 @@ discard block |
||
261 | 260 | * |
262 | 261 | * @param array $array The array. |
263 | 262 | * @param array $insert The array to insert. |
264 | - * @param mixed $after The key to insert after |
|
263 | + * @param string $after The key to insert after |
|
265 | 264 | * @return array |
266 | 265 | */ |
267 | 266 | function wfArrayInsertAfter( array $array, array $insert, $after ) { |
@@ -1300,7 +1299,7 @@ discard block |
||
1300 | 1299 | /** |
1301 | 1300 | * Get the value of $wgReadOnly or the contents of $wgReadOnlyFile. |
1302 | 1301 | * |
1303 | - * @return string|bool String when in read-only mode; false otherwise |
|
1302 | + * @return string|false String when in read-only mode; false otherwise |
|
1304 | 1303 | * @since 1.27 |
1305 | 1304 | */ |
1306 | 1305 | function wfConfiguredReadOnlyReason() { |
@@ -1375,7 +1374,6 @@ discard block |
||
1375 | 1374 | * This function replaces all old wfMsg* functions. |
1376 | 1375 | * |
1377 | 1376 | * @param string|string[]|MessageSpecifier $key Message key, or array of keys, or a MessageSpecifier |
1378 | - * @param mixed $params,... Normal message parameters |
|
1379 | 1377 | * @return Message |
1380 | 1378 | * |
1381 | 1379 | * @since 1.17 |
@@ -1396,7 +1394,6 @@ discard block |
||
1396 | 1394 | * for the first message which is non-empty. If all messages are empty then an |
1397 | 1395 | * instance of the first message key is returned. |
1398 | 1396 | * |
1399 | - * @param string|string[] $keys,... Message keys |
|
1400 | 1397 | * @return Message |
1401 | 1398 | * |
1402 | 1399 | * @since 1.18 |
@@ -1627,7 +1624,7 @@ discard block |
||
1627 | 1624 | * @todo FIXME: We may want to blacklist some broken browsers |
1628 | 1625 | * |
1629 | 1626 | * @param bool $force |
1630 | - * @return bool Whereas client accept gzip compression |
|
1627 | + * @return null|boolean Whereas client accept gzip compression |
|
1631 | 1628 | */ |
1632 | 1629 | function wfClientAcceptsGzip( $force = false ) { |
1633 | 1630 | static $result = null; |
@@ -1763,7 +1760,7 @@ discard block |
||
1763 | 1760 | /** |
1764 | 1761 | * Provide a simple HTTP error. |
1765 | 1762 | * |
1766 | - * @param int|string $code |
|
1763 | + * @param integer $code |
|
1767 | 1764 | * @param string $label |
1768 | 1765 | * @param string $desc |
1769 | 1766 | */ |
@@ -2045,8 +2042,8 @@ discard block |
||
2045 | 2042 | * |
2046 | 2043 | * @param mixed $outputtype A timestamp in one of the supported formats, the |
2047 | 2044 | * function will autodetect which format is supplied and act accordingly. |
2048 | - * @param mixed $ts Optional timestamp to convert, default 0 for the current time |
|
2049 | - * @return string|bool String / false The same date in the format specified in $outputtype or false |
|
2045 | + * @param integer $ts Optional timestamp to convert, default 0 for the current time |
|
2046 | + * @return string|false String / false The same date in the format specified in $outputtype or false |
|
2050 | 2047 | */ |
2051 | 2048 | function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) { |
2052 | 2049 | try { |
@@ -2087,7 +2084,7 @@ discard block |
||
2087 | 2084 | /** |
2088 | 2085 | * Check if the operating system is Windows |
2089 | 2086 | * |
2090 | - * @return bool True if it's Windows, false otherwise. |
|
2087 | + * @return boolean|null True if it's Windows, false otherwise. |
|
2091 | 2088 | */ |
2092 | 2089 | function wfIsWindows() { |
2093 | 2090 | static $isWindows = null; |
@@ -2344,7 +2341,7 @@ discard block |
||
2344 | 2341 | /** |
2345 | 2342 | * Check if wfShellExec() is effectively disabled via php.ini config |
2346 | 2343 | * |
2347 | - * @return bool|string False or 'disabled' |
|
2344 | + * @return string|false False or 'disabled' |
|
2348 | 2345 | * @since 1.22 |
2349 | 2346 | */ |
2350 | 2347 | function wfShellExecDisabled() { |
@@ -2958,7 +2955,7 @@ discard block |
||
2958 | 2955 | * @param int $pad Minimum number of digits in the output (pad with zeroes) |
2959 | 2956 | * @param bool $lowercase Whether to output in lowercase or uppercase |
2960 | 2957 | * @param string $engine Either "gmp", "bcmath", or "php" |
2961 | - * @return string|bool The output number as a string, or false on error |
|
2958 | + * @return false|string The output number as a string, or false on error |
|
2962 | 2959 | */ |
2963 | 2960 | function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, |
2964 | 2961 | $lowercase = true, $engine = 'auto' |
@@ -3043,7 +3040,6 @@ discard block |
||
3043 | 3040 | /** |
3044 | 3041 | * Make a cache key for the local wiki. |
3045 | 3042 | * |
3046 | - * @param string $args,... |
|
3047 | 3043 | * @return string |
3048 | 3044 | */ |
3049 | 3045 | function wfMemcKey( /*...*/ ) { |
@@ -3060,7 +3056,6 @@ discard block |
||
3060 | 3056 | * |
3061 | 3057 | * @param string $db |
3062 | 3058 | * @param string $prefix |
3063 | - * @param string $args,... |
|
3064 | 3059 | * @return string |
3065 | 3060 | */ |
3066 | 3061 | function wfForeignMemcKey( $db, $prefix /*...*/ ) { |
@@ -3080,7 +3075,6 @@ discard block |
||
3080 | 3075 | * in the first segment will clash with wfMemcKey/wfForeignMemcKey. |
3081 | 3076 | * |
3082 | 3077 | * @since 1.26 |
3083 | - * @param string $args,... |
|
3084 | 3078 | * @return string |
3085 | 3079 | */ |
3086 | 3080 | function wfGlobalCacheKey( /*...*/ ) { |
@@ -3195,7 +3189,7 @@ discard block |
||
3195 | 3189 | * Returns a valid placeholder object if the file does not exist. |
3196 | 3190 | * |
3197 | 3191 | * @param Title|string $title |
3198 | - * @return LocalFile|null A File, or null if passed an invalid Title |
|
3192 | + * @return File|null A File, or null if passed an invalid Title |
|
3199 | 3193 | */ |
3200 | 3194 | function wfLocalFile( $title ) { |
3201 | 3195 | return RepoGroup::singleton()->getLocalRepo()->newFile( $title ); |
@@ -3399,7 +3393,7 @@ discard block |
||
3399 | 3393 | /** |
3400 | 3394 | * Set PHP's time limit to the larger of php.ini or $wgTransactionalTimeLimit |
3401 | 3395 | * |
3402 | - * @return int Prior time limit |
|
3396 | + * @return string Prior time limit |
|
3403 | 3397 | * @since 1.26 |
3404 | 3398 | */ |
3405 | 3399 | function wfTransactionalTimeLimit() { |
@@ -3535,7 +3529,7 @@ discard block |
||
3535 | 3529 | * |
3536 | 3530 | * @param string $format The format string (See php's docs) |
3537 | 3531 | * @param string $data A binary string of binary data |
3538 | - * @param int|bool $length The minimum length of $data or false. This is to |
|
3532 | + * @param integer $length The minimum length of $data or false. This is to |
|
3539 | 3533 | * prevent reading beyond the end of $data. false to disable the check. |
3540 | 3534 | * |
3541 | 3535 | * Also be careful when using this function to read unsigned 32 bit integer |
@@ -421,7 +421,7 @@ discard block |
||
421 | 421 | * |
422 | 422 | * @since 1.24 |
423 | 423 | * @param array $params All supplied parameters for the module |
424 | - * @return string|array|null |
|
424 | + * @return string |
|
425 | 425 | */ |
426 | 426 | protected function getWebUITokenSalt( array $params ) { |
427 | 427 | return null; |
@@ -627,6 +627,7 @@ discard block |
||
627 | 627 | /** |
628 | 628 | * Set the continuation manager |
629 | 629 | * @param ApiContinuationManager|null |
630 | + * @param ApiContinuationManager|null $manager |
|
630 | 631 | */ |
631 | 632 | public function setContinuationManager( $manager ) { |
632 | 633 | // Main module has setContinuationManager() method overridden |
@@ -710,6 +711,7 @@ discard block |
||
710 | 711 | * |
711 | 712 | * @param array $params User provided set of parameters, as from $this->extractRequestParams() |
712 | 713 | * @param string $required,... Names of parameters of which exactly one must be set |
714 | + * @param string $required |
|
713 | 715 | */ |
714 | 716 | public function requireOnlyOneParameter( $params, $required /*...*/ ) { |
715 | 717 | $required = func_get_args(); |
@@ -736,6 +738,7 @@ discard block |
||
736 | 738 | * |
737 | 739 | * @param array $params User provided set of parameters, as from $this->extractRequestParams() |
738 | 740 | * @param string $required,... Names of parameters of which at most one must be set |
741 | + * @param string $required |
|
739 | 742 | */ |
740 | 743 | public function requireMaxOneParameter( $params, $required /*...*/ ) { |
741 | 744 | $required = func_get_args(); |
@@ -759,6 +762,7 @@ discard block |
||
759 | 762 | * @since 1.23 |
760 | 763 | * @param array $params User provided set of parameters, as from $this->extractRequestParams() |
761 | 764 | * @param string $required,... Names of parameters of which at least one must be set |
765 | + * @param string $required |
|
762 | 766 | */ |
763 | 767 | public function requireAtLeastOneParameter( $params, $required /*...*/ ) { |
764 | 768 | $required = func_get_args(); |
@@ -2543,7 +2547,7 @@ discard block |
||
2543 | 2547 | * "apihelp-{$this->getModulePath()}-description". |
2544 | 2548 | * |
2545 | 2549 | * @deprecated since 1.25 |
2546 | - * @return Message|string|array |
|
2550 | + * @return boolean |
|
2547 | 2551 | */ |
2548 | 2552 | protected function getDescription() { |
2549 | 2553 | return false; |
@@ -2698,7 +2702,7 @@ discard block |
||
2698 | 2702 | * Generates the parameter descriptions for this module, to be displayed in the |
2699 | 2703 | * module's help. |
2700 | 2704 | * @deprecated since 1.25 |
2701 | - * @return string|bool |
|
2705 | + * @return string|false |
|
2702 | 2706 | */ |
2703 | 2707 | public function makeHelpMsgParameters() { |
2704 | 2708 | wfDeprecated( __METHOD__, '1.25' ); |
@@ -2889,7 +2893,7 @@ discard block |
||
2889 | 2893 | |
2890 | 2894 | /** |
2891 | 2895 | * @deprecated since 1.25, always returns 0 |
2892 | - * @return float |
|
2896 | + * @return integer |
|
2893 | 2897 | */ |
2894 | 2898 | public function getProfileTime() { |
2895 | 2899 | wfDeprecated( __METHOD__, '1.25' ); |
@@ -2912,7 +2916,7 @@ discard block |
||
2912 | 2916 | |
2913 | 2917 | /** |
2914 | 2918 | * @deprecated since 1.25, always returns 0 |
2915 | - * @return float |
|
2919 | + * @return integer |
|
2916 | 2920 | */ |
2917 | 2921 | public function getProfileDBTime() { |
2918 | 2922 | wfDeprecated( __METHOD__, '1.25' ); |
@@ -185,7 +185,7 @@ discard block |
||
185 | 185 | /** |
186 | 186 | * Return the list of ipblocks fields that should be selected to create |
187 | 187 | * a new block. |
188 | - * @return array |
|
188 | + * @return string[] |
|
189 | 189 | */ |
190 | 190 | public static function selectFields() { |
191 | 191 | return [ |
@@ -1004,7 +1004,7 @@ discard block |
||
1004 | 1004 | /** |
1005 | 1005 | * Get a timestamp of the expiry for autoblocks |
1006 | 1006 | * |
1007 | - * @param string|int $timestamp |
|
1007 | + * @param string|false $timestamp |
|
1008 | 1008 | * @return string |
1009 | 1009 | */ |
1010 | 1010 | public static function getAutoblockExpiry( $timestamp ) { |
@@ -1361,7 +1361,7 @@ discard block |
||
1361 | 1361 | /** |
1362 | 1362 | * @since 1.19 |
1363 | 1363 | * |
1364 | - * @return mixed|string |
|
1364 | + * @return string |
|
1365 | 1365 | */ |
1366 | 1366 | public function getExpiry() { |
1367 | 1367 | return $this->mExpiry; |
@@ -205,42 +205,42 @@ discard block |
||
205 | 205 | } |
206 | 206 | |
207 | 207 | /** |
208 | - * @return mixed DB key name, or false on failure |
|
208 | + * @return boolean DB key name, or false on failure |
|
209 | 209 | */ |
210 | 210 | public function getName() { |
211 | 211 | return $this->getX( 'mName' ); |
212 | 212 | } |
213 | 213 | |
214 | 214 | /** |
215 | - * @return mixed Category ID, or false on failure |
|
215 | + * @return boolean Category ID, or false on failure |
|
216 | 216 | */ |
217 | 217 | public function getID() { |
218 | 218 | return $this->getX( 'mID' ); |
219 | 219 | } |
220 | 220 | |
221 | 221 | /** |
222 | - * @return mixed Total number of member pages, or false on failure |
|
222 | + * @return boolean Total number of member pages, or false on failure |
|
223 | 223 | */ |
224 | 224 | public function getPageCount() { |
225 | 225 | return $this->getX( 'mPages' ); |
226 | 226 | } |
227 | 227 | |
228 | 228 | /** |
229 | - * @return mixed Number of subcategories, or false on failure |
|
229 | + * @return boolean Number of subcategories, or false on failure |
|
230 | 230 | */ |
231 | 231 | public function getSubcatCount() { |
232 | 232 | return $this->getX( 'mSubcats' ); |
233 | 233 | } |
234 | 234 | |
235 | 235 | /** |
236 | - * @return mixed Number of member files, or false on failure |
|
236 | + * @return boolean Number of member files, or false on failure |
|
237 | 237 | */ |
238 | 238 | public function getFileCount() { |
239 | 239 | return $this->getX( 'mFiles' ); |
240 | 240 | } |
241 | 241 | |
242 | 242 | /** |
243 | - * @return Title|bool Title for this category, or false on failure. |
|
243 | + * @return Title Title for this category, or false on failure. |
|
244 | 244 | */ |
245 | 245 | public function getTitle() { |
246 | 246 | if ( $this->mTitle ) { |
@@ -260,7 +260,7 @@ discard block |
||
260 | 260 | * category sort key $offset. |
261 | 261 | * @param int $limit |
262 | 262 | * @param string $offset |
263 | - * @return TitleArray TitleArray object for category members. |
|
263 | + * @return TitleArrayFromResult|null TitleArray object for category members. |
|
264 | 264 | */ |
265 | 265 | public function getMembers( $limit = false, $offset = '' ) { |
266 | 266 |
@@ -659,7 +659,7 @@ discard block |
||
659 | 659 | * |
660 | 660 | * @param IContextSource $context Context to use, anything else will be ignored. |
661 | 661 | * @param int $old Revision ID we want to show and diff with. |
662 | - * @param int|string $new Either a revision ID or one of the strings 'cur', 'prev' or 'next'. |
|
662 | + * @param integer $new Either a revision ID or one of the strings 'cur', 'prev' or 'next'. |
|
663 | 663 | * @param int $rcid FIXME: Deprecated, no longer used. Defaults to 0. |
664 | 664 | * @param bool $refreshCache If set, refreshes the diff cache. Defaults to false. |
665 | 665 | * @param bool $unhide If set, allow viewing deleted revs. Defaults to false. |
@@ -889,7 +889,7 @@ discard block |
||
889 | 889 | * @param Title $title The page's title |
890 | 890 | * @param bool &$hasHistory Whether the page has a history |
891 | 891 | * |
892 | - * @return mixed String containing deletion reason or empty string, or |
|
892 | + * @return false|string String containing deletion reason or empty string, or |
|
893 | 893 | * boolean false if no revision occurred |
894 | 894 | * |
895 | 895 | * @todo &$hasHistory is extremely ugly, it's here because |