Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1426845
refresh-translatable-pages.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
refresh-translatable-pages.php
View Options
<?php
/**
* Script to ensure all translation pages are up to date.
*
* @author Niklas Laxström
* @license GPL-2.0-or-later
* @file
*/
// Standard boilerplate to define $IP
use
MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups
;
use
MediaWiki\Extension\Translate\PageTranslation\TranslatablePage
;
use
MediaWiki\Extension\Translate\PageTranslation\UpdateTranslatablePageJob
;
use
MediaWiki\MediaWikiServices
;
if
(
getenv
(
'MW_INSTALL_PATH'
)
!==
false
)
{
$IP
=
getenv
(
'MW_INSTALL_PATH'
);
}
else
{
$dir
=
__DIR__
;
$IP
=
"$dir/../../.."
;
}
require_once
"$IP/maintenance/Maintenance.php"
;
/**
* Script to ensure all translation pages are up to date
* @since 2013-04
*/
class
RefreshTranslatablePages
extends
Maintenance
{
private
const
USE_NON_PRIORITIZED_JOBS
=
true
;
public
function
__construct
()
{
parent
::
__construct
();
$this
->
addDescription
(
'Ensure all translation pages are up to date.'
);
$this
->
setBatchSize
(
300
);
$this
->
addOption
(
'jobqueue'
,
'Use JobQueue (asynchronous)'
);
$this
->
requireExtension
(
'Translate'
);
}
public
function
execute
()
{
$groups
=
MessageGroups
::
singleton
()->
getGroups
();
$mwInstance
=
MediaWikiServices
::
getInstance
();
$jobQueueGroup
=
$mwInstance
->
getJobQueueGroup
();
$counter
=
0
;
$jobCounter
=
0
;
$useJobQueue
=
$this
->
hasOption
(
'jobqueue'
);
foreach
(
$groups
as
$group
)
{
if
(
!
$group
instanceof
WikiPageMessageGroup
)
{
continue
;
}
$counter
++;
if
(
(
$counter
%
$this
->
mBatchSize
)
===
0
)
{
$this
->
waitForReplication
();
}
$page
=
TranslatablePage
::
newFromTitle
(
$group
->
getTitle
()
);
$jobs
=
UpdateTranslatablePageJob
::
getRenderJobs
(
$page
,
self
::
USE_NON_PRIORITIZED_JOBS
);
if
(
$useJobQueue
)
{
$jobCounter
+=
count
(
$jobs
);
$jobQueueGroup
->
push
(
$jobs
);
}
else
{
foreach
(
$jobs
as
$job
)
{
$job
->
run
();
}
}
}
if
(
$useJobQueue
)
{
$this
->
output
(
"Queued $jobCounter refresh job(s) for $counter translatable pages.
\n
"
);
}
else
{
$this
->
output
(
"Refreshed $counter translatable pages.
\n
"
);
}
}
}
$maintClass
=
RefreshTranslatablePages
::
class
;
require_once
RUN_MAINTENANCE_IF_MAIN
;
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 13:45 (1 d, 20 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
55/1e/733f49b6558307ee67cf9cecb272
Default Alt Text
refresh-translatable-pages.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment