diff options
Diffstat (limited to 'www/wiki/extensions/Translate/messagegroups/WorkflowStatesMessageGroup.php')
-rw-r--r-- | www/wiki/extensions/Translate/messagegroups/WorkflowStatesMessageGroup.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/messagegroups/WorkflowStatesMessageGroup.php b/www/wiki/extensions/Translate/messagegroups/WorkflowStatesMessageGroup.php new file mode 100644 index 00000000..c4a7dd74 --- /dev/null +++ b/www/wiki/extensions/Translate/messagegroups/WorkflowStatesMessageGroup.php @@ -0,0 +1,77 @@ +<?php +/** + * This file contains an unmanaged message group implementation. + * + * @file + * @author Niklas Laxström + * @author Siebrand Mazeland + * @copyright Copyright © 2008-2013, Niklas Laxström, Siebrand Mazeland + * @license GPL-2.0-or-later + */ + +/** + * @ingroup MessageGroup + */ +class WorkflowStatesMessageGroup extends WikiMessageGroup { + // id and source are not needed + public function __construct() { + } + + public function getId() { + return 'translate-workflow-states'; + } + + public function getLabel( IContextSource $context = null ) { + $msg = wfMessage( 'translate-workflowgroup-label' ); + $msg = self::addContext( $msg, $context ); + + return $msg->plain(); + } + + public function getDescription( IContextSource $context = null ) { + $msg = wfMessage( 'translate-workflowgroup-desc' ); + $msg = self::addContext( $msg, $context ); + + return $msg->plain(); + } + + public function getDefinitions() { + $groups = MessageGroups::getAllGroups(); + $keys = []; + + /** + * @var $g MessageGroup + */ + foreach ( $groups as $g ) { + $states = $g->getMessageGroupStates()->getStates(); + foreach ( array_keys( $states ) as $state ) { + $keys["Translate-workflow-state-$state"] = $state; + } + } + + $defs = TranslateUtils::getContents( array_keys( $keys ), $this->getNamespace() ); + foreach ( $keys as $key => $state ) { + if ( !isset( $defs[$key] ) ) { + // @todo Use jobqueue + $title = Title::makeTitleSafe( $this->getNamespace(), $key ); + $page = new WikiPage( $title ); + $content = ContentHandler::makeContent( $state, $title ); + + $page->doEditContent( + $content, + wfMessage( 'translate-workflow-autocreated-summary', $state )->inContentLanguage()->text(), + 0, /*flags*/ + false, /* base revision id */ + FuzzyBot::getUser() + ); + } else { + // Use the wiki translation as definition if available. + // getContents returns array( content, last author ) + list( $content, ) = $defs[$key]; + $keys[$key] = $content; + } + } + + return $keys; + } +} |