private function getHtml($webRequest, $isEmptyRequest)
 {
     if ($isEmptyRequest) {
         return HtmlContentBuilder::getPageSearchQuickForm();
     }
     if (!$this->subjectDV->isValid()) {
         foreach ($this->subjectDV->getErrors() as $error) {
             $error = Message::decode($error);
         }
         $html = Html::rawElement('div', array('class' => 'smw-callout smw-callout-error'), Message::get(array('smw-browse-invalid-subject', $error), Message::ESCAPED));
         return $html . HtmlContentBuilder::getPageSearchQuickForm();
     }
     $htmlContentBuilder = $this->newHtmlContentBuilder($webRequest);
     if ($webRequest->getVal('output') === 'legacy' || !$htmlContentBuilder->getOption('byApi')) {
         return $htmlContentBuilder->getHtml();
     }
     $options = array('dir' => $htmlContentBuilder->getOption('dir'), 'offset' => $htmlContentBuilder->getOption('offset'), 'printable' => $htmlContentBuilder->getOption('printable'), 'showInverse' => $htmlContentBuilder->getOption('showInverse'), 'showAll' => $htmlContentBuilder->getOption('showAll'));
     // Ajax/API is doing the data fetch
     $html = Html::rawElement('div', array('class' => 'smwb-container', 'data-subject' => $this->subjectDV->getDataItem()->getHash(), 'data-options' => json_encode($options)), Html::rawElement('div', array('class' => 'smwb-status'), Html::rawElement('noscript', array(), Html::rawElement('div', array('class' => 'smw-callout smw-callout-error'), Message::get('smw-browse-js-disabled', Message::PARSE)))) . Html::rawElement('div', array('class' => 'smwb-content is-disabled'), Html::rawElement('span', array('class' => 'smw-overlay-spinner large inline')) . $htmlContentBuilder->getEmptyHtml()));
     return $html;
 }
 /**
  * Turns encoded array of messages or text elements into a flattened array
  * with msg keys and arguments being transformed into a string representation.
  *
  * @since 2.5
  *
  * @param array $messages
  * @param integer|null $type
  * @param integer|null $language
  *
  * @return array
  */
 public static function normalizeMessages(array $messages, $type = null, $language = null)
 {
     $normalizeMessages = array();
     if ($type === null) {
         $type = Message::TEXT;
     }
     if ($language === null) {
         $language = Message::USER_LANGUAGE;
     }
     foreach ($messages as $message) {
         if (is_array($message)) {
             foreach (self::normalizeMessages($message) as $msg) {
                 if (is_string($msg)) {
                     $normalizeMessages[md5($msg)] = $msg;
                 } else {
                     $normalizeMessages[] = $msg;
                 }
             }
             continue;
         }
         $exists = false;
         if (is_string($message) && ($decodedMessage = Message::decode($message, $type, $language)) !== false) {
             $message = $decodedMessage;
             $exists = true;
         }
         if (!$exists && is_string($message) && wfMessage($message)->exists()) {
             $message = Message::get($message, $type, $language);
         }
         if (is_string($message)) {
             $normalizeMessages[md5($message)] = $message;
         } else {
             $normalizeMessages[] = $message;
         }
     }
     return array_values($normalizeMessages);
 }
 private function constructErrorText($linker = null)
 {
     if (!$this->isValid() || $this->getDataItem() === array()) {
         return '';
     }
     $string = $this->getDataItem()->getString();
     $type = $linker !== null ? Message::PARSE : Message::TEXT;
     if (($message = Message::decode($string, $type, $this->getOptionBy(self::OPT_USER_LANGUAGE))) !== false) {
         return $message;
     }
     return $string;
 }
 public function testDecode()
 {
     $this->assertEquals(false, Message::decode('Foo'));
     $this->assertEquals('Foo', Message::decode('[2,"Foo"]'));
 }