Commit graph

1058 commits

Author SHA1 Message Date
jenkins-bot
a87e2ea37a Merge "Improve the shell cgroup feature" 2013-02-07 18:40:49 +00:00
Chad Horohoe
296e57f634 Deprecate in_string()
It's a silly wrapper for something you can do in one line
of PHP anyway.

Change-Id: Ib85e4aaa20e62fe5f218b38cf0759c9c799c3381
2013-02-06 14:38:57 -05:00
Tim Starling
674962b339 Improve the shell cgroup feature
* 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
2013-02-05 16:47:34 +11:00
Ori Livneh
6c163ad265 (Bug 37957) Replace php_sapi_name() with PHP_SAPI
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
2013-02-04 12:50:45 -08:00
umherirrender
1044b0b8df fix some spacing
Change-Id: I8f976013f33c5818e4402604fe8610aa3f43b0c6
2013-02-04 20:18:33 +00:00
S Page
a5e40b661c Document that default timestamp is current time.
Change-Id: Ie255ac62a52f5d023f7cd6ffc6c0df91e7a02403
2013-01-19 07:35:22 +00:00
Aaron Schulz
3943a73e21 Do not send data for 0 increment calls in wfIncrStats().
Change-Id: I5f1ca83ad56e129b42a96a5c73ec42cd2d978901
2013-01-18 10:26:54 -08:00
Tim Starling
c8e3fa04db Implement wall clock time limits for shell commands
* 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
2013-01-14 09:53:59 +11:00
jenkins-bot
f02f1a7658 Merge "Cleaned up and optimized wfBaseConvert();" 2013-01-02 21:38:58 +00:00
btongminh
4f23290816 wfMerge() now works if $wgDiff3 contains spaces
Change-Id: Ia18012ee87fe45e292cf08542f5b0680d0b85371
2012-12-29 21:39:54 +01:00
Tyler Anthony Romeo
9b9daadc46 Cleaned up and optimized wfBaseConvert();
* 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
2012-12-27 00:17:18 -05:00
Aaron Schulz
b44f8b296b Made wfBaseconvert actually work with $lowercase=false.
* This used to return false for any non-digit input characters.

Change-Id: Ie7fca2669724dea29f4733bbc77a559d4f48a5b1
2012-12-25 09:36:45 +00:00
Alexandre Emsenhuber
4b5f75205b Use wfWikiID() instead of $wgDBname in wfIncrStats()
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
2012-12-21 18:17:30 +00:00
Brian Wolff
02f6386b3b Make wfSuppressWarnings kill E_STRICT in PHP 5.4+
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
2012-12-16 07:28:57 +00:00
Antoine Musso
e32c8afe54 prefix debug log when they end up in the main log
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
2012-12-07 16:53:12 +01:00
Siebrand Mazeland
02f8475482 Add wfDeprecated to wfMsg* methods from 1.21 on
These were marked soft deprecated in 1.18.

Change-Id: Ifa82da981c69b2ea9d5b298e9dfb04fc29483206
2012-12-04 12:19:09 +01:00
csteipp
d834a4892a (bug 40995) Refresh SessionId on login
SpecialUserlogin updated to refresh the user's session_id on each
successful login.

Change-Id: I1bd76f2c199b515f570e18669ca2138668bf847e
2012-11-29 22:18:31 +00:00
Hashar
34a65359cc Merge "Log profiling data when tests have finished." 2012-11-19 13:12:16 +00:00
daniel
e606537090 Log profiling data when tests have finished.
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
2012-11-16 20:14:29 +01:00
Daniel Kinzler
2c85e0dd5b avoid STDERR diff3 messages when using wfMerge()
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
2012-11-10 17:26:08 +00:00
Siebrand Mazeland
d4b046a893 Update docs for return and exception info
* Removed some inline tabs in the process.
* IDE fixed some incorrect leading spaces, too.

Change-Id: Ic9303eff6db4424ac3f1fa2816839692b43e6190
2012-10-09 09:41:58 +00:00
umherirrender
161c35bcb4 Remove deprecated 1.16 wfLoadExtensionMessages
Change-Id: I9b9ecc9818d17c98748f39177c28554f8c485de5
2012-10-05 22:41:22 +02:00
umherirrender
99159fd750 wfTimestamp should not die on bogus input [Regression]
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
2012-09-14 18:28:22 +02:00
IAlex
8634014e86 Merge "Replace some occurrences of wfMsg* by alternatives. Undeprecated wfMsgReplaceArgs." 2012-09-10 17:33:37 +00:00
Tim Starling
653ee32ed2 Remove @deprecated from wfTimestamp()
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
2012-09-07 15:13:38 +10:00
Fran McCrory
d6028a1811 (bug 34939) Handle mixed-case URL protocols in wikitext
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
2012-09-04 16:26:46 +02:00
Siebrand Mazeland
475a1daa03 Replace some occurrences of wfMsg* by alternatives. Undeprecated wfMsgReplaceArgs.
* wfMsgReplaceArgs isn't really i18n related. It just replaces text parts.
* Updated language.txt. Now refers to mediawiki.org.
* Removed deprecated Block::formatExpiry(). Merge Id7d057a4 first.
* Reformatted weirdly formatted array in ApiBase.php.
* Removed wfMsg() in RandomTest.php.

Change-Id: Ied5cfda8fa5d9283dfeebdcb0e1af8453d47e7a9
2012-09-03 11:49:58 +02:00
Tyler Anthony Romeo
e738203a8e Added PHP complement for mw.Time.
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>
2012-08-30 20:44:09 -04:00
Alexandre Emsenhuber
b455e43276 Fix wfGetCaller() and wfFormatStackFrame() documentation
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
2012-08-29 21:36:37 +02:00
Alexandre Emsenhuber
5af2159512 Moved warning stuff into MWDebug class.
- 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
2012-08-28 15:33:44 +02:00
Nikerabbit
d6b9b27492 Merge "Use the MWDebug class to display debug log back in the request." 2012-08-28 05:49:41 +00:00
Tim Starling
ad03f2f753 Revert Uri class due to bug 39710
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
2012-08-28 10:53:09 +10:00
Alexandre Emsenhuber
61dd1d037b Use the MWDebug class to display debug log back in the request.
- 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
2012-08-27 23:47:19 +02:00
Aaron Schulz
a17e263c81 Added sanity check to StreamFile for mwstore paths.
Change-Id: Id402f077037f3e84c9158f7d48be0ed82ba4a1cf
2012-08-22 20:46:54 -07:00
Catrope
8b1b82f396 Make wfScript()/mw.util.wikiScript() respect $wgScript/$wgLoadScript
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
2012-08-21 14:27:04 -07:00
Siebrand Mazeland
6fe1f0509b Replace deprecated wfMsg* calls with Message class calls.
Doing this in steps of roughly 100 changes per commit, so that it remains reviewable.

Change-Id: Ib15e670badd3f6aecae8b60e2f9129a31341ce16
2012-08-21 18:38:44 +02:00
Reedy
2e0be64b93 Bug 39516 - Call to a member function format() on a non-object
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
2012-08-20 23:41:18 +01:00
Alex Monk
2fabea7eea Use wfMessage instead of deprecated wfMsg*
Or $this->msg in special pages.

Change-Id: I774a89d646615053c8424050e42ad95601f92543
2012-08-18 14:11:05 +02:00
Siebrand Mazeland
4b517facdd Add version of deprecation for wfAppendQuery() and suggest alternative.
Change-Id: I31f03aa38d029ca19d8e6655d05c4d201dccae47
2012-08-18 00:00:06 +02:00
Platonides
ef498e793e Replace $wgDBerrorLogInUTC with a $wgDBerrorLogTZ variable which
can be set to any other timezone.
Also avoids the ugly default-changing that was being used by c15605.

Change-Id: I7a5086f84310f50a1929e07bd2e6527a518424b2
2012-08-08 15:51:39 +01:00
Aaron Schulz
e7a615ad7c Merge "Allow session storage to be configured independently" 2012-08-08 00:35:59 +00:00
Tim Starling
6eb6313b6f Allow session storage to be configured independently
* 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
2012-08-08 10:25:56 +10:00
Waldir Pimenta
1e769a5f9a improve wfStripIllegalFilenameChars()'s readability
make the preg_replace regex more readable,
and expand documentation a little.

Change-Id: Id26d9d42be7d3f2780e82da27dd2477d62d8e106
2012-08-07 20:09:26 +01:00
Aaron Schulz
3d60b479de Merge "Add a Uri class." 2012-08-07 03:37:30 +00:00
Daniel Friesen
94f623363b Add a Uri class.
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
2012-08-06 22:46:25 -04:00
jeroendedauw
2b65df98fe Add @deperecation stuff to message functions
Change-Id: I69168ed9d850baf02b3dd7c8bd0e820f3f00f43f
2012-08-06 19:32:52 +02:00
Jan Gerber
2a02b44b59 add optional limits argument to wgShellExec
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
2012-07-16 14:35:51 -07:00
Antoine Musso
ef9534313e prevents some doxygen warnings
This patch fix misc issues reported by doxygen. Nothing fancy.

Change-Id: I98edc8c877019f1dc4a82a37bca518df2eb904fc
2012-07-15 22:32:48 +02:00
Reedy
fb9cbb1b4c Fix casing of wgDBerrorLogInUtc
Change-Id: I644ea64b1a40160f3468ec35836ee9aa003c03de
2012-07-13 19:02:12 +01:00
Antoine Musso
bc6d5fb88a dbErrorLog can now be forced to UTC
$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
2012-07-13 16:56:36 +02:00