* Make the cgroup name configurable, so that it can be switched on and
off in configuration, or so a different cgroup can be used for
different wikis. The DefaultSettings.php entry also makes the feature
more discoverable and so more useful to non-Wikimedia users.
* Send named parameters to the shell script instead of numbered
parameters. Send the command as argument 1, for easier ps -f
interpretation.
* Move the wrapper script to includes/, since it doesn't need to be
executable anymore, so it doesn't make sense for it to be in bin/.
* Remove the requirement for a release script to be used. Clean up in
the wrapper script instead. The release script had to be configured
globally, which might not be suitable for all MediaWiki installations.
Change-Id: Ic8362cab63df162852d5df56cf695ef163cd6232
The PHP_SAPI constant has been available since PHP 4.2.0. It's more
concise to use the constant and has less overhead than a function call.
Furthermore, PHP_SAPI rhymes with "happy", whereas "php_sapi_name"
rhymes with "lame". QED, etc.
Change-Id: Ie8c121cb8fcef50536af8d3f66723b458f0bf9af
* Use the "timeout" command to implement wall clock time limits.
* Write a message to stderr when the time limit is exceeded, for
consistency with ulimit
* Configure with $wgMaxShellWallClockTime
* If "time" is specified in $limits, use that as the wall clock limit in
preference to the global variable, to support legacy callers which
usually want to disable the limits.
* Remove the requirement for ulimit5.sh to be executable since this is
not necessary when you specify the interpreter. Should avoid subtle
problems when the executable bit is accidentally stripped.
* Move the interpretation of 0/-1/false limits to the shell script, so
that e.g. wall clock time can be limited even if memory is unlimited.
Change-Id: Id9f2fea7c3b027565bdc33b88a1a7d4cdfe43a6c
* Added code to use BCMath or GMP if they are
loaded, since they are both significantly faster.
A parameter was added that can be used to force
usage of a specific engine (mainly for testing).
* Made an array of base digits rather than using
strpos() every time.
* Used casting instead of intval(), since the latter
is six times slower.
Also added unit tests for wfBaseConvert as well as
a benchmarking class that measures the difference
between using GMP, BCMath, and pure PHP.
Change-Id: I841717be2b29a0b7fc57a13fde5cc0642cda82df
This allows to have distinct stat groups for people using database table prefix and
it makes wfIncrStats() consistent with ProfilerSimpleUDP that already uses wfWikiID().
Change-Id: Iecef9f490df8c5685a4887cc81dcb4a7e4d3172c
Since PHP 5.4+ E_STRICT is now included in E_ALL. Hence
wfSuppressWarnings was not filtering E_STRICT.
There was some complaints on project:support_desk about
timezone warnings popping up. See also bug 43092
Change-Id: Ie1ace158dac1733e6b2b2c1d533004d9bcab8c80
Whenever we use wfDebugLog( "group", "message" ); and "group" is not
also set in $wfDebugLogGroups, the group information is lost. By
prefixing the message with the group name, it makes it obvious where the
message comes from.
Example output:
...
[EventLogging] wgEventLoggingSchemaIndexUri has not been configured.
[EventLogging] EventLogging requires memcached, and no memcached[...]
Fully initialised
Profiler::instance called without $wgProfiler['class'] set[...]
Connected to database 0 at
MessageGroups::init-nocache
SQL ERROR (ignored): no such table: revtag_type
MessageGroups::loadGroupDefinitions-end
[ContentHandler] Created handler for wikitext: WikitextContentHandler
[ContentHandler] Created handler for javascript: JavaScriptContentHandler
...
Change-Id: Id75401bec516b5111cd1e3d4a9b29843953ce12b
Previously, no profiling data was recorded from unit test runs.
That made it impossible to a) use unit tests for selective profiling
of individual functions, and b) made it impossibel to profile
the tests themselves.
This change fixes this problem by calling wfLogProfilingData()
after the test runner has finished.
Thaks to Hashar for some ideas, especially the fix in GlobalFunctions.
Change-Id: Iaa295115f3c4eb3b529388dcd953fe8932448b3e
diff3 issues a warning to stderr if any of the files does not end with a
newline character.
TextContent::preSaveTransform() does normalize revision text by simply
calling trim(). Thus to avoid a diff3 error we simply apply the same
normalization and add a newline to please the command.
Change-Id: I7baa3df95dd70cbc865b2491ccc791e60f8b9e6e
Followup I68eb9f27
No caller of wfTimestamp can handle the exception, false is always used,
as the method comment says.
See bug 40037 for File related timestamps.
The api result is also not b/c:
<api servedby="mw70">
<error code="internal_api_error_TimestampException" info="Exception
Caught: MWTimestamp::setTimestamp : Invalid timestamp - te"
xml:space="preserve" />
</api>
Change-Id: I1e8c785941d35678f3d12824bdde0ce245572592
Adding abbreviated wrappers for lengthy function invocations is good
practice, it improves code readability. If all we ever had was
MWTimestamp, and we had a million instances of
$timestamp = new MWTimestamp( $ts );
$mwTimestamp = $timestamp->getTimestamp( TS_MW );
I would introduce a global function or class static method wrapper to
clean up those invocations. But I don't have to, because we already have
the wrapper.
Change-Id: I9149a7626676a0115a0a877f27d8b65e6e868de9
This patch marks the regex matching url protocol as being case
insensitive. We will from now render links like [HTTP://ww].
Tests added.
Change-Id: I706acb7a0ae194b50d2318763beae4e5e83671f3
Figured since a JS Timestamp class was being implemented
it might be appropriate to create a complementary PHP
Timestamp class. Much of code is taken from wfTimestamp().
Note: Another change (I53dcf547) is attempting a related
issue. Not sure how much of scope overlap there is.
Change-Id: I68eb9f27eebe80df757187f634392e1bcba5551f
Signed-off-by: Tyler Romeo <tylerromeo@gmail.com>
These two functions cannot return a boolean.
Also simplified wfGetCaller() to not use the $caller local
variable which is totally useless in that case.
Change-Id: I81707a8292afc1829921b58cdaae81b3147ee3cb
- Group common code in one instead of doing checks one
time in GlobalFunctions.php and another time in Debug.php
- Remove the code catching the fact that a warning is due
to a deprecation warning, no longer needed
- Pass the caller offset from wfDeprecated() to
MWDebug::deprecated(); this was breaking deprecation
notices for global objects.
- Changed PHP error level for deprecation notices (when
$wgDevelopmentWarnings is set to true) from E_USER_NOTICE
to E_USER_DEPRECATED since we now require PHP 5.3+
- Added E_USER_DEPRECATED to wfSuppressWarnings() and
removed the check for the E_DEPRECATED constant being set
now that we require PHP 5.3+
- Fixed MWDebugTest by calling wfSuppressWarnings() and
wfRestoreWarnings() in setUp() and tearDown()
Change-Id: I6810b57c90d384de55a2cf177047767cdb734f79
Revert 94f623363b. Apparently all
ReverseChronologicalPager subclasses were broken by the unexplained
interface change in wfArrayToCgi(): changing the interpretation of
null array values from "omit this key" to "include this key with no
value". The function has always been called with the former
interpretation, that's why the special case was in there.
Also reverted dependent changes 4b517fa and part of 3d97704.
Change-Id: I41dadbde5d0e0e4c54cc76bfc13c263c15c73828
- This removes the duplication of MWDebug::$debug and
OutputPage::$mDebugtext, so there's no need to store two times
the same text
- Removed OutputPage::debug() since it's no longer used
- Had to keep OutputPage::$mDebugtext because it's still
referenced by SemanticPageMaker extension
- Moved Skin::formatDebugHTML() to MWDebug::GetHTMLDebugLog()
and replaced the call in Skin::generateDebugHTML() to use it
- Also check $logonly before sending entries to the debug
toolbar in wfDebug(), for consistency
- Changed MWDebug::getDebugHTML() to also return the debug log
in an HTML comment if $wgDebugComments is set to true and
changed the location of this call to BaseTemplate::printTrail()
so that its result is the latest possible. This also includes
the debug toolbar.
- Removed MockOutputPage and related test cases since they are
no longer accurate
Change-Id: Ie0f389f8566457b1c938c627ed930040741ac9d9
mw.util.wikiScript() and mw.util.wikiScript( 'index' ) now return the
value of $wgScript rather than building the path to index.php manually;
the latter is incorrect if $wgScript is customized. Similarly,
mw.util.wikiScript( 'load' ) now uses $wgLoadScript.
Same for wfScript(), wfScript( 'index' ) and wfScript( 'load' )
The qunit tests already had a test case for wgScript, but wgScript was
set in a way that didn't trigger the bug. Changed it to use customized
wgScript and wgLoadScript values and added test cases for 'index' and
'load'
This fixes bug 39103 (wfScript/mw.util.wikiScript do not respect custom
$wgScript/$wgLoadScript) as well as bug 39102 ("Entry points" on
Special:Version do not respect custom $wgScript/$wgLoadScript)
Change-Id: I5c9e82849e314dc7a87f8ae91150cc412b4011cf
Workaround for php bug [1], reported in 5.3.2, fixed already
Workaround can be removed when our minimum PHP version is > 5.3.2
[1] https://bugs.php.net/bug.php?id=52063
Change-Id: Ia60e64300787d0b683829765e8eeac1535e9d0a4
can be set to any other timezone.
Also avoids the ugly default-changing that was being used by c15605.
Change-Id: I7a5086f84310f50a1929e07bd2e6527a518424b2
* Introduce $wgSessionCacheType to allow the session storage to be
configured independently of $wgMemc.
* Renamed $wgSessionsInMemcached to $wgSessionsInObjectCache to reflect
the new versatility.
* Modernized the relevant code, removing the explicit require_once(),
used the autoloader instead. Moved it to ObjectCacheSessionHandler.
* Tested with memcached, external sharded MySQL and APC, it all seems to
work just fine.
Change-Id: I473334bb56cafb4e21ac1c1304d69095676fc0c4
Add a Uri class matching our mw.Uri JS class for handling uris.
This class should be helpful in a bunch of places where we end up doing manual
concatenation of things like the path + '?' + query of a url parsed with wfParseUrl.
[tylerromeo@gmail.com: Removed cat() function, fixed wfWarn() usage for aliases
and added visibility to all functions. Also added test for aliases.]
Signed-off-by: Tyler Romeo <tylerromeo@gmail.com>
Change-Id: Iefdedb7c80cf1d4aab58050edab3ab44ba868a58
add optional limits argument to overwrite
filesize, memory and time limits or a command
executed with wfShellExec.
Just having once size fits all $wgMaxShell* options
is not good enough for tasks that take long
or create large files (i.e. video transcoding)
Change-Id: I54148907bfd103fd28aff69baae03437efcfe1ee
$wgDBerrorLog is used to log database error. It is using
$wgLocalTimezone to format the date which might not always be wanted in
a multi Timezone cluster of wiki.
wgDBerrorLogInUTC , when true, will override the Wiki timezone to uses
UTC whenever a database error is logged.
Change-Id: I091d6029272b69db0aefdebfc37896d0a8e8770e