* Use time() instead of: - wfTimestamp() - wfTimestamp( TS_UNIX ) - wfTimestamp( TS_UNIX, 0 ) - wfTimestamp( TS_UNIX, time() ) - intval( wfTimestamp( TS_UNIX, time() ) ) * Consistently use 1 as default instead of 0. Previously the unwritten convention was that anything "final" max()'ed with 1, and any internal method would use 0, but this wasn't applied consistently made it fragile. There doesn't seem to be any value in returning 0 only to have it maxed up to 1 (because if the 0 would ever make it out alive, we'd be in trouble). * wfTimestamp returns a string for TS_UNIX. In PHP this doesn't matter much. In fact, max() takes number-like integers so transparently, it even preserves it: > max( 1, 3, '2' ); < 3 > max( 1, '3', 2 ); < "3" Just cast it in one place at the very end (StartupModule) instead of doing intval( wfTimestamp() ). * Fix weird documentation claiming getModifiedTime can return an array, or mixed. * Remove 'version > 1 ? version : 1' logic in ResourceLoader::makeLoaderRegisterScript. The client doesn't have "0 means now" behaviour so this isn't needed. And the method was only doing it for variadic argument calls. Removal of quotes around timestamps reduced the size of the startup module from 26.8KB to 25.9KB before gzip. After gzip the size was and still is 5.7KB, though. (From 5456 bytes to 5415 bytes.) Change-Id: If92ca3e7511e78fa779f2f2701e2ab24db78c8a8
84 lines
2.1 KiB
PHP
84 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Resource loader module for user preference customizations.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
* @author Trevor Parscal
|
|
* @author Roan Kattouw
|
|
*/
|
|
|
|
/**
|
|
* Module for user preference customizations
|
|
*/
|
|
class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
|
|
|
|
/* Protected Members */
|
|
|
|
protected $modifiedTime = array();
|
|
|
|
protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
|
|
|
|
protected $targets = array( 'desktop', 'mobile' );
|
|
|
|
/* Methods */
|
|
|
|
/**
|
|
* @return array List of module names as strings
|
|
*/
|
|
public function getDependencies() {
|
|
return array( 'user.defaults' );
|
|
}
|
|
|
|
/**
|
|
* @param ResourceLoaderContext $context
|
|
* @return int
|
|
*/
|
|
public function getModifiedTime( ResourceLoaderContext $context ) {
|
|
$hash = $context->getHash();
|
|
if ( !isset( $this->modifiedTime[$hash] ) ) {
|
|
$this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $context->getUserObj()->getTouched() );
|
|
}
|
|
|
|
return $this->modifiedTime[$hash];
|
|
}
|
|
|
|
/**
|
|
* @param ResourceLoaderContext $context
|
|
* @return string
|
|
*/
|
|
public function getScript( ResourceLoaderContext $context ) {
|
|
return Xml::encodeJsCall( 'mw.user.options.set',
|
|
array( $context->getUserObj()->getOptions( User::GETOPTIONS_EXCLUDE_DEFAULTS ) ),
|
|
ResourceLoader::inDebugMode()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function supportsURLLoading() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getGroup() {
|
|
return 'private';
|
|
}
|
|
}
|