Commit graph

230 commits

Author SHA1 Message Date
Niklas Laxström
a064f78053 New hook MessageCache::get
Example usage:

$wgHooks['MessageCache::get'][] = function( &$key ) {
	static $keys = null;
	if ( $keys === null ) {
		global $wgExtensionMessagesFiles;
		require( $wgExtensionMessagesFiles['OverrideMessages'] );
		$keys = array_flip( array_keys( $messages['en'] ) );
	}

	if ( isset( $keys["myprefix-$key"] ) ) {
		$key = "myprefix-$key";
	}

	return true;
}

Pros:
* Easy way to override standard core and extension messages without
  any changes to them
* Messages can be stored in a standard i18n file
* Messages can be translated easily with Translate
* Messages can be shared accross multiple wikis easily
* Takes advantage of the normal message cache behavior unlike the
  MessagePreLoad hook
* Missing translations fallback to the override, not to the
  uncustomized standard translation
* Do not need to handle conflicting message keys at translatewiki.net
  if adopted by WMF

Cons:
* This method is called often, so there will be small performance
  impact if no hooks are registered. Impact can be big if the
  implementation of hook subscriber is inefficient.

This can help with bugs like 36149. It doesn't remove the manual work
needed to detect those messages and adding them to the i18n file.

I have been using this patch in a wiki farm for months.

Change-Id: Ib39937a440e71ae7292cf992ab37a569189741e4
2014-02-10 15:51:52 +00:00
Siebrand Mazeland
f077c4b1d6 Update formatting
Change-Id: I18aff576262479c9bb1c56eb8e1d1aaae200e4b1
2014-02-06 09:27:05 +01:00
Alexandre Emsenhuber
8d701eeeea Remove trailing line breaks from wfDebugLog() messages
This is useless since the message is passed through trim() and a
line break is added afterwards.

Change-Id: I1a26b30a07f7c9c749fce5bb6b2b4b3d79901b7c
2014-02-04 22:16:13 +01:00
Alexandre Emsenhuber
a7a0883019 Enhance the destination control parameter of wfDebug() and wfDebugLog()
- The parameter is now a string, making is more understandable than
  boolean values
- It takes the same values in both wfDebug() and wfDebugLog() (except
  for 'private' which is only used in the latter)
- This adds a new possibility to wfDebugLog() to log the message either
  on the specific log or the general one, but not to the debug toolbar
- Old boolean values are still recognised for backward compatibility
- Also send the messages passed to wfDebugLog() to the debug toolbar
  when they are written to a specific log and not restricted to logs
- Updated the calls of and wfDebug() and wfDebugLog() with the last
  parameter to change it into a string
- Renamed MWDebug::sendWarning() to MWDebug::sendMessage() and added
  $group parameter to it; will not break anything since that method
  is marked as private
- Changed the call to wfDebug() from MWDebug::sendMessage() to use
  wfDebugLog() with 'log' as thrid parameter, so that those messages
  can be logged separately from the main log and they don't show up
  a second time on the "debug log" tab of the debug toolbar

Change-Id: I1be09d4c1d3408ed5b26a5db02691c17c0ec0926
2014-02-04 19:56:24 +00:00
Jacob Clark
cced9d13f9 Added wfSuppressWarnings and wfRestoreWarnings
Added wfSuppressWarnings and wfRestoreWarnings before and after the
ini_set call to apc cache by default to suppress errors if ini_set is
disabled.

Change-Id: If91e99c30fce3af14e69acd35112af188e62b6ac
2014-02-02 19:23:24 +00:00
MaxSem
0998c41943 Revert "Include short descriptions for extensions bundled in the release"
Contains var_dump(), self-merged non-trivial code.

This reverts commit 96b2c66e24.

Change-Id: Ie630466ef50e6bcdabf01daff28c283c764aae35
2014-01-12 23:59:44 +00:00
Mark A. Hershberger
96b2c66e24 Include short descriptions for extensions bundled in the release
Also fix styling for the list of extensions.

Bug: 43817
Change-Id: I5335225683ec8f1c163bb67f478787ebc52ee3a9
2014-01-12 18:21:55 -05:00
Siebrand Mazeland
8a096e3444 Random documentation tweaks
Change-Id: I57c3bde6551c14324cf34e4db003a319d6cebc47
2014-01-02 23:45:14 +01:00
Aaron Schulz
7bd3a8c576 Added $purgeBlobs flag to LocalisationCacheRecache hook
* This helps replace the WMF live hack to skip calling clear()

Change-Id: I37bd6cf87e72b6d32e4c6c261abe2a0ef43d067e
2013-12-30 21:45:59 +00:00
jenkins-bot
1728c1a698 Merge "Made Title cache use MapCacheLRU" 2013-12-26 22:24:14 +00:00
jenkins-bot
c9eaaf7093 Merge "Plural rules: updates for UTS #35 Rev 33" 2013-12-23 14:00:34 +00:00
Siebrand Mazeland
2f7b68ffde Rename $wgExtensionMessagesDirs to $wgMessagesDirs
This is a better name, as we'll also be adding core and the installer i18n
to this.

Change-Id: Ic4c5849654aef54f3e5aea01a2d68e47d148b9bd
2013-12-20 17:02:18 +01:00
jenkins-bot
b3970523a3 Merge "Add support for JSON i18n files" 2013-12-20 13:41:42 +00:00
Roan Kattouw
6380e81cd0 Add support for JSON i18n files
Implementation for https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format

Add $wgExtensionMessagesDirs, which tracks the directory
(or directories) where each extension stores it's JSON i18n files.
In this commit only support for messages is implemented, but adding
support for other i18n variables (e.g. magic words) is easy to do later.

To be backwards compatible, an extension can specify both
$wgExtensionMessagesFiles and $wgExtensionMessagesDirs. Older versions
of MediaWiki will just work, and newer versions will use the JSON files
while ignoring the PHP file (except if the PHP file contains non-message
data like magic words).

Misc changes:
* Updated mergeMessageFileList.php to output both
  $wgExtensionMessagesFiles and $wgExtensionMessagesDirs

Change-Id: I8d137e15e1670880a9847263e6ce796c62a4670d
2013-12-20 14:34:06 +01:00
Tim Starling
e571717e06 Plural rules: updates for UTS #35 Rev 33
* New operands i, v, w, f, t
* New operators =, !=, %
* Ignore "samples", which are basically unit tests embedded in rule
  specifications
* Ignore the new "other" rules, which have an empty condition. It
  doesn't really makes sense to parse them, since the empty condition
  means special handling should be done in the caller, it is not
  equivalent to an unconditional true or false.
* Trailing zero support requires that the input number be a string.
  Documented this.
* Fixed some comments
* Added test cases for new features

Bug: 56931
Change-Id: I96986c0c664f785e75b0a4ced2ec9e37b72681c1
2013-12-13 11:53:29 +11:00
Aaron Schulz
5ac27d708b Made Title cache use MapCacheLRU
Change-Id: I913238adc2b8471e247df77150cfd772da1ac3f4
2013-12-04 00:27:23 -08:00
Aaron Schulz
a0368b3762 Made RepoGroup use ProcessCacheLRU
Change-Id: I322a6cf15566bde4fc5ee5bfa1be5fdc680cd763
2013-12-03 12:24:50 -08:00
Aaron Schulz
77f7e9ba65 Added MapCacheLRU class, a simpler cousin to ProcessCacheLRU
Change-Id: Ibe1b44c8e168a086afb3481b4bb7660dc7d31ae7
2013-12-03 19:47:02 +00:00
jenkins-bot
bc5951e743 Merge "Update some documentation" 2013-12-03 17:10:21 +00:00
Siebrand Mazeland
db9ebea5ac Remove unused local variable
Change-Id: I5f13b3bf7e769d0b0960b44e15b9c2454d9eb165
2013-12-03 15:01:07 +01:00
Siebrand Mazeland
cbb6648205 Update some documentation
Change-Id: I6a75964d2048de451e9b01a08f87cfe1ebd842ba
2013-12-03 14:59:45 +01:00
jenkins-bot
01596b2bbf Merge "Fixed spacing" 2013-12-02 06:32:10 +00:00
umherirrender
5ca5672aac Fixed spacing
- Place commas correct
- Moved comments
- Add space after if/foreach/catch
- Reformat some conditions
- Removed trailing spaces/tabs

Change-Id: I40ccda72c418c4a33fcd675773cb08d971510cdb
2013-12-01 20:58:51 +01:00
umherirrender
e0b8d17b79 Simplify switch in BacklinkCache::getConditions
Change-Id: I9f1ddad705d1697dd81f74eb735dc386bab9d200
2013-12-01 11:55:44 +01:00
Chad Horohoe
13d64f3cb1 Improved CdbException handling in LocalisationCache
Change-Id: If1ad9a982c2a4a7a1e9ca7739b3c215bb821211a
2013-11-26 13:54:24 -08:00
jenkins-bot
9e0c2a0658 Merge "Fixed "Undefined property: stdClass::$page_namespace" error" 2013-11-20 06:36:30 +00:00
Aaron Schulz
ddaffed317 Fixed "Undefined property: stdClass::$page_namespace" error
* BacklinkCache::fullResultCache should always have all the columns
* Fixes bug from a9dc4d943e

Change-Id: Ic0042ef6b1ce655bd97814362d95d8b0fe53affa
2013-11-19 15:37:06 -08:00
jenkins-bot
b6dd4a28f5 Merge "Declare visibility on class properties of LinkBatch" 2013-11-19 19:49:57 +00:00
Siebrand Mazeland
7f56ab1d7c Declare visibility on class properties of LinkBatch
Set to public. Usage in for example api/ApiPageSet.php.

Change-Id: I8d6b8a0728a465544b09832b2916235628a21b8e
2013-11-19 08:32:31 +00:00
Siebrand Mazeland
a0c583e408 Remove unused classes Title[List]Dependency
Classes TitleListDependency and TitleDependency that are currently not
used. Searched core and extensions in Gerrit.

Change-Id: I51404ce36c4ef55393588817d1673fd17c81b4a2
2013-11-18 21:46:23 +01:00
Siebrand Mazeland
4a4fc11008 Update LinkCache::addGoodLinkObj param defaults to int
Update the defaults for $revision and $model from bool to int, making it
consistent with the documented input. Also update docs and line length.
Change "inval( $x )" to preferred "(int) $x" while changing the method.

Change-Id: Ic19a408aa7c50fb03e2c3aca8df3fa7cedc2420b
2013-11-18 21:09:24 +01:00
jenkins-bot
4bed5565db Merge "Declare visibility on class properties of LCStore* classes" 2013-11-18 18:58:22 +00:00
jenkins-bot
618a686ae6 Merge "Declare visibility on class properties of LocalisationCache" 2013-11-18 18:56:27 +00:00
jenkins-bot
10b41a1fb0 Merge "Remove underscore from classes LCStore_*" 2013-11-18 18:54:25 +00:00
jenkins-bot
3f8d11fe84 Merge "Set visibility on class properties for *Dependency classes" 2013-11-18 18:46:48 +00:00
jenkins-bot
4910f271f1 Merge "Declare visibility for class properties of LocalisationCacheBulkLoad" 2013-11-18 18:45:10 +00:00
jenkins-bot
f678aaa3a8 Merge "Remove underscore from class LocalisationCache_BulkLoad" 2013-11-18 18:43:16 +00:00
jenkins-bot
4792e870bd Merge "Break long lines in includes/cache/" 2013-11-18 18:41:27 +00:00
jenkins-bot
5bd4512e18 Merge "Update formatting" 2013-11-18 18:39:29 +00:00
Siebrand Mazeland
0ec4a01507 Set visibility on class properties for *Dependency classes
Set visibility to private for properties that are not referenced outside
of the class itself, and when the class is not currently being subclassed.

Change-Id: I427c6de5a0a29b43cff755db0eb8a750db620173
2013-11-18 04:53:13 +00:00
Siebrand Mazeland
e9c996a1b8 Set visibility for class properties of DependencyWrapper
Set to private. No subclassing and no uses outside of the class in core or
extensions.

Change-Id: If195d02b8ce853242312de7fb4bc7dc1cbe94365
2013-11-18 04:52:49 +00:00
Siebrand Mazeland
7d11e65dcc Declare visibility on class properties of LCStore* classes
No direct references found in core or extensions outside of the classes
themselves. None of these are subclassed, so set all of them to private.

Change-Id: Id599c0830c1e6d3679c7ae55147f4444f8252987
2013-11-17 23:18:01 +01:00
Siebrand Mazeland
540d8dafeb Declare visibility on class properties of LocalisationCache
Mark all private, except the one that's being used in subclass. Checked
core and extension for direct uses. None found.

Change-Id: If73d65ca094ff56deb19d3b6f3ef99892654726d
2013-11-17 22:49:03 +01:00
Siebrand Mazeland
e711503e7a Remove underscore from classes LCStore_*
iPart of program to remove underscores from class names. Checked core and
600+ extensions for occurrences. All uses are in core, and are updated in
this change.

Change-Id: I432dc249d22053728013ae7d0d56c3c398021c5e
2013-11-17 22:09:31 +01:00
Siebrand Mazeland
1e07d64050 Declare visibility for class properties of LocalisationCacheBulkLoad
Mark all as private. Not referenced elsewhere in core or extensions.

Change-Id: Ibe0e854f39261053e5147138309c3a4b1944e5fe
2013-11-17 22:03:53 +01:00
Siebrand Mazeland
04021a8e81 Remove underscore from class LocalisationCache_BulkLoad
Part of program to remove underscores from class names. Checked core and
600+ extensions for occurrences. All uses are in core, and are updated in
this change.

Change-Id: Ib157c3cf209677718ff184552cf872b1d3f4e969
2013-11-17 22:00:34 +01:00
Siebrand Mazeland
ddb4e02634 Break long lines in includes/cache/
Change-Id: I23a6f46f89b3cdcaf2a3b982dc63e779eed5840d
2013-11-17 21:49:59 +01:00
Siebrand Mazeland
8251479984 Update formatting
Change-Id: I9aa56cbe0989d6f302ee0f47c4a6154101f73e90
2013-11-17 21:46:55 +01:00
Aaron Schulz
a9dc4d943e BacklinkCache performance tweaks
* In partition(), avoid doing the JOIN since it is not needed and prevents
  index-only queries.
* Made numLinks() wrap partition when no $max is specified.
* Also fixed some docs

Change-Id: I05a83f71efb4c6e99e40883d7fa53da59184b13c
2013-11-09 12:35:07 -08:00
Tim Starling
64d0dc06a0 Move the DeferredUpdates hierarchy to its own directory
The grouping makes at least as much sense as job/, and certainly makes
more sense than cache/. With directories named after base classes, it is
fairly easy to tell what should go where. The grouping of
DeferredUpdates, DataUpdate and CallableUpdate would surely be
uncontroversial.

The move of SearchUpdate out of search/ demonstrates the conflict between
arrangement by module versus arrangement by type, which is the most
difficult design question here. I think arrangement by type is more
consistent with e.g. the arrangement of the core root, i.e. tests/,
resources/, maintenance/, etc. where a given feature will have its files
split up into a mostly type-based hierarchy.

I also tidied up AutoLoader.php by moving includes/content to the correct
location, sorted alphabetically by subdirectory.

Verified with AutoLoaderTest.

Change-Id: Ib369411d0caca38e72978084aa57348f1b892ed0
2013-11-04 10:32:40 +11:00