summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php129
1 files changed, 129 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php
new file mode 100644
index 00000000..5c25d48c
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/MessageBuilder.php
@@ -0,0 +1,129 @@
+<?php
+
+namespace SMW\MediaWiki;
+
+use IContextSource;
+use Language;
+use Message;
+use RuntimeException;
+use Title;
+
+/**
+ * Convenience class to build language dependent messages and special text
+ * components and decrease depdencency on the Language object with SMW's code
+ * base
+ *
+ * @license GNU GPL v2+
+ * @since 2.1
+ *
+ * @author mwjames
+ */
+class MessageBuilder {
+
+ /**
+ * @var Language
+ */
+ private $language = null;
+
+ /**
+ * @since 2.1
+ *
+ * @param Language|null $language
+ */
+ public function __construct( Language $language = null ) {
+ $this->language = $language;
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param Language $language
+ *
+ * @return MessageBuilder
+ */
+ public function setLanguage( Language $language ) {
+ $this->language = $language;
+ return $this;
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param IContextSource $context
+ *
+ * @return MessageBuilder
+ */
+ public function setLanguageFromContext( IContextSource $context ) {
+ $this->language = $context->getLanguage();
+ return $this;
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param mixed $number
+ * @param boolean $useForSpecialNumbers set to true for numbers like dates
+ *
+ * @return string
+ */
+ public function formatNumberToText( $number, $useForSpecialNumbers = false ) {
+ return $this->getLanguage()->formatNum( $number, $useForSpecialNumbers );
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param array $list
+ *
+ * @return string
+ */
+ public function listToCommaSeparatedText( array $list ) {
+ return $this->getLanguage()->listToText( $list );
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param Title $title,
+ * @param integer $offset,
+ * @param integer $offset,
+ * @param array $query,
+ * @param boolean|null $isAtTheEnd
+ *
+ * @return string
+ */
+ public function prevNextToText( Title $title, $limit, $offset, array $query, $isAtTheEnd ) {
+ return $this->getLanguage()->viewPrevNext( $title, $offset, $limit, $query, $isAtTheEnd );
+ }
+
+ /**
+ * @since 2.1
+ *
+ * @param string $key
+ *
+ * @return Message
+ */
+ public function getMessage( $key ) {
+
+ $params = func_get_args();
+ array_shift( $params );
+
+ if ( isset( $params[0] ) && is_array( $params[0] ) ) {
+ $params = $params[0];
+ }
+
+ $message = new Message( $key, $params );
+
+ return $message->inLanguage( $this->getLanguage() )->title( $GLOBALS['wgTitle'] );
+ }
+
+ private function getLanguage() {
+
+ if ( $this->language instanceof Language ) {
+ return $this->language;
+ }
+
+ throw new RuntimeException( 'Expected a valid language object' );
+ }
+
+}