dépôts
/
lhc
/
web
/
wiklou.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Sync up with Parsoid parserTests.
[lhc/web/wiklou.git]
/
includes
/
MessageBlobStore.php
diff --git
a/includes/MessageBlobStore.php
b/includes/MessageBlobStore.php
index
5725898
..
e3b4dbe
100644
(file)
--- a/
includes/MessageBlobStore.php
+++ b/
includes/MessageBlobStore.php
@@
-32,6
+32,21
@@
* constituent messages or the resource itself is changed.
*/
class MessageBlobStore {
* constituent messages or the resource itself is changed.
*/
class MessageBlobStore {
+ /**
+ * Get the singleton instance
+ *
+ * @since 1.24
+ * @return MessageBlobStore
+ */
+ public static function getInstance() {
+ static $instance = null;
+ if ( $instance === null ) {
+ $instance = new self;
+ }
+
+ return $instance;
+ }
+
/**
* Get the message blobs for a set of modules
*
/**
* Get the message blobs for a set of modules
*
@@
-40,19
+55,19
@@
class MessageBlobStore {
* @param string $lang Language code
* @return array An array mapping module names to message blobs
*/
* @param string $lang Language code
* @return array An array mapping module names to message blobs
*/
- public
static
function get( ResourceLoader $resourceLoader, $modules, $lang ) {
+ public function get( ResourceLoader $resourceLoader, $modules, $lang ) {
wfProfileIn( __METHOD__ );
if ( !count( $modules ) ) {
wfProfileOut( __METHOD__ );
return array();
}
// Try getting from the DB first
wfProfileIn( __METHOD__ );
if ( !count( $modules ) ) {
wfProfileOut( __METHOD__ );
return array();
}
// Try getting from the DB first
- $blobs =
self::
getFromDB( $resourceLoader, array_keys( $modules ), $lang );
+ $blobs =
$this->
getFromDB( $resourceLoader, array_keys( $modules ), $lang );
// Generate blobs for any missing modules and store them in the DB
$missing = array_diff( array_keys( $modules ), array_keys( $blobs ) );
foreach ( $missing as $name ) {
// Generate blobs for any missing modules and store them in the DB
$missing = array_diff( array_keys( $modules ), array_keys( $blobs ) );
foreach ( $missing as $name ) {
- $blob =
self::
insertMessageBlob( $name, $modules[$name], $lang );
+ $blob =
$this->
insertMessageBlob( $name, $modules[$name], $lang );
if ( $blob ) {
$blobs[$name] = $blob;
}
if ( $blob ) {
$blobs[$name] = $blob;
}
@@
-72,8
+87,8
@@
class MessageBlobStore {
* @param string $lang Language code
* @return mixed Message blob or false if the module has no messages
*/
* @param string $lang Language code
* @return mixed Message blob or false if the module has no messages
*/
- public
static
function insertMessageBlob( $name, ResourceLoaderModule $module, $lang ) {
- $blob =
self::
generateMessageBlob( $module, $lang );
+ public function insertMessageBlob( $name, ResourceLoaderModule $module, $lang ) {
+ $blob =
$this->
generateMessageBlob( $module, $lang );
if ( !$blob ) {
return false;
if ( !$blob ) {
return false;
@@
-130,7
+145,7
@@
class MessageBlobStore {
* @return string Regenerated message blob, or null if there was no blob for
* the given module/language pair.
*/
* @return string Regenerated message blob, or null if there was no blob for
* the given module/language pair.
*/
- public
static
function updateModule( $name, ResourceLoaderModule $module, $lang ) {
+ public function updateModule( $name, ResourceLoaderModule $module, $lang ) {
$dbw = wfGetDB( DB_MASTER );
$row = $dbw->selectRow( 'msg_resource', 'mr_blob',
array( 'mr_resource' => $name, 'mr_lang' => $lang ),
$dbw = wfGetDB( DB_MASTER );
$row = $dbw->selectRow( 'msg_resource', 'mr_blob',
array( 'mr_resource' => $name, 'mr_lang' => $lang ),
@@
-142,7
+157,7
@@
class MessageBlobStore {
// Save the old and new blobs for later
$oldBlob = $row->mr_blob;
// Save the old and new blobs for later
$oldBlob = $row->mr_blob;
- $newBlob =
self::
generateMessageBlob( $module, $lang );
+ $newBlob =
$this->
generateMessageBlob( $module, $lang );
try {
$newRow = array(
try {
$newRow = array(
@@
-197,7
+212,7
@@
class MessageBlobStore {
*
* @param string $key Message key
*/
*
* @param string $key Message key
*/
- public
static
function updateMessage( $key ) {
+ public function updateMessage( $key ) {
try {
$dbw = wfGetDB( DB_MASTER );
try {
$dbw = wfGetDB( DB_MASTER );
@@
-206,7
+221,7
@@
class MessageBlobStore {
// in one iteration.
$updates = null;
do {
// in one iteration.
$updates = null;
do {
- $updates =
self::
getUpdatesForMessage( $key, $updates );
+ $updates =
$this->
getUpdatesForMessage( $key, $updates );
foreach ( $updates as $k => $update ) {
// Update the row on the condition that it
foreach ( $updates as $k => $update ) {
// Update the row on the condition that it
@@
-240,7
+255,7
@@
class MessageBlobStore {
}
}
}
}
- public
static
function clear() {
+ public function clear() {
// TODO: Give this some more thought
try {
// Not using TRUNCATE, because that needs extra permissions,
// TODO: Give this some more thought
try {
// Not using TRUNCATE, because that needs extra permissions,
@@
-260,7
+275,7
@@
class MessageBlobStore {
* @param array $prevUpdates Updates queue to refresh or null to build a fresh update queue
* @return array Updates queue
*/
* @param array $prevUpdates Updates queue to refresh or null to build a fresh update queue
* @return array Updates queue
*/
- private
static
function getUpdatesForMessage( $key, $prevUpdates = null ) {
+ private function getUpdatesForMessage( $key, $prevUpdates = null ) {
$dbw = wfGetDB( DB_MASTER );
if ( is_null( $prevUpdates ) ) {
$dbw = wfGetDB( DB_MASTER );
if ( is_null( $prevUpdates ) ) {
@@
-297,7
+312,7
@@
class MessageBlobStore {
'resource' => $row->mr_resource,
'lang' => $row->mr_lang,
'timestamp' => $row->mr_timestamp,
'resource' => $row->mr_resource,
'lang' => $row->mr_lang,
'timestamp' => $row->mr_timestamp,
- 'newBlob' =>
self::
reencodeBlob( $row->mr_blob, $key, $row->mr_lang )
+ 'newBlob' =>
$this->
reencodeBlob( $row->mr_blob, $key, $row->mr_lang )
);
}
);
}
@@
-312,7
+327,7
@@
class MessageBlobStore {
* @param string $lang Language code
* @return string Message blob with $key replaced with its new value
*/
* @param string $lang Language code
* @return string Message blob with $key replaced with its new value
*/
- private
static
function reencodeBlob( $blob, $key, $lang ) {
+ private function reencodeBlob( $blob, $key, $lang ) {
$decoded = FormatJson::decode( $blob, true );
$decoded[$key] = wfMessage( $key )->inLanguage( $lang )->plain();
$decoded = FormatJson::decode( $blob, true );
$decoded[$key] = wfMessage( $key )->inLanguage( $lang )->plain();
@@
-329,9
+344,8
@@
class MessageBlobStore {
* @throws MWException
* @return array Array mapping module names to blobs
*/
* @throws MWException
* @return array Array mapping module names to blobs
*/
- private static function getFromDB( ResourceLoader $resourceLoader, $modules, $lang ) {
- global $wgCacheEpoch;
-
+ private function getFromDB( ResourceLoader $resourceLoader, $modules, $lang ) {
+ $config = $resourceLoader->getConfig();
$retval = array();
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'msg_resource',
$retval = array();
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'msg_resource',
@@
-348,13
+362,13
@@
class MessageBlobStore {
}
// Update the module's blobs if the set of messages changed or if the blob is
}
// Update the module's blobs if the set of messages changed or if the blob is
- // older than
$wgCacheEpoch
+ // older than
the CacheEpoch setting
$keys = array_keys( FormatJson::decode( $row->mr_blob, true ) );
$values = array_values( array_unique( $module->getMessages() ) );
if ( $keys !== $values
$keys = array_keys( FormatJson::decode( $row->mr_blob, true ) );
$values = array_values( array_unique( $module->getMessages() ) );
if ( $keys !== $values
- || wfTimestamp( TS_MW, $row->mr_timestamp ) <= $
wgCacheEpoch
+ || wfTimestamp( TS_MW, $row->mr_timestamp ) <= $
config->get( 'CacheEpoch' )
) {
) {
- $retval[$row->mr_resource] =
self::
updateModule( $row->mr_resource, $module, $lang );
+ $retval[$row->mr_resource] =
$this->
updateModule( $row->mr_resource, $module, $lang );
} else {
$retval[$row->mr_resource] = $row->mr_blob;
}
} else {
$retval[$row->mr_resource] = $row->mr_blob;
}
@@
-370,7
+384,7
@@
class MessageBlobStore {
* @param string $lang Language code
* @return string JSON object
*/
* @param string $lang Language code
* @return string JSON object
*/
- private
static
function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
+ private function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
$messages = array();
foreach ( $module->getMessages() as $key ) {
$messages = array();
foreach ( $module->getMessages() as $key ) {