Esempio n. 1
0
 /**
  * Static function for creating a new wikipage object from a
  * MediaWiki Title object.
  *
  * @deprecated This method will vanish before SMW 1.7. If you really need this, simply copy its code.
  *
  * @return SMWWikiPageValue
  */
 public static function makePageFromTitle(Title $title)
 {
     $dvWikiPage = new SMWWikiPageValue('_wpg');
     $diWikiPage = SMWDIWikiPage::newFromTitle($title);
     $dvWikiPage->setDataItem($diWikiPage);
     $dvWikiPage->m_title = $title;
     // optional, just for efficiency
     return $dvWikiPage;
 }
Esempio n. 2
0
 /**
  *	This method renders the result set provided by SMW according to the printer
  *
  *  @param res				SMWQueryResult, result set of the ask query provided by SMW
  *  @param outputmode		?
  *  @return				String, rendered HTML output of this printer for the ask-query
  *
  */
 protected function getResultText(SMWQueryResult $res, $outputmode)
 {
     if (!is_callable('renderGraphviz')) {
         wfWarn('The SRF Graph printer needs the GraphViz extension to be installed.');
         return '';
     }
     global $wgContLang;
     // content language object
     //
     //	GraphViz settings
     //
     global $wgGraphVizSettings;
     $this->isHTML = true;
     //
     //	Iterate all rows in result set
     //
     $row = $res->getNext();
     // get initial row (i.e. array of SMWResultArray)
     while ($row !== false) {
         /* SMWDataItem */
         $subject = $row[0]->getResultSubject();
         // get Subject of the Result
         // creates a new node if $val has type wikipage
         if ($subject->getDIType() == SMWDataItem::TYPE_WIKIPAGE) {
             $wikiPageValue = new SMWWikiPageValue('_wpg');
             $wikiPageValue->setDataItem($subject);
             $node = $this->m_process->makeNode($wikiPageValue->getShortWikiText(), $wikiPageValue->getShortWikiText());
         }
         //
         //	Iterate all colums of the row (which describe properties of the proces node)
         //
         // FIXME: this does not work with SMW >= 1.6, see
         // https://bugzilla.wikimedia.org/show_bug.cgi?id=35003
         // FIXME: got _a bit_ of redundancy here looks like... :/
         foreach ($row as $field) {
             // check column title
             $req = $field->getPrintRequest();
             switch (strtolower($req->getLabel())) {
                 case strtolower($wgContLang->getNsText(NS_CATEGORY)):
                     foreach ($field->getContent() as $value) {
                         $val = $value->getShortWikiText();
                         if ($val == $wgContLang->getNsText(NS_CATEGORY) . ':' . $this->m_processCategory) {
                             $node->setAtomic(false);
                         }
                     }
                     break;
                 case "haslabel":
                     $value = current($field->getContent());
                     // save only the first
                     if ($value !== false) {
                         $val = $value->getLongWikiText();
                         if ($this->m_process->getUseOtherLabels()) {
                             $val = str_replace("&", "and", $val);
                             $node->setLabel($val);
                         }
                     }
                     break;
                 case "hasrole":
                     foreach ($field->getContent() as $value) {
                         $val = $value->getShortWikiText();
                         $role = $this->m_process->makeRole($val, $val);
                         $node->addRole($role);
                     }
                     break;
                 case "usesresource":
                     foreach ($field->getContent() as $value) {
                         $val = $value->getShortWikiText();
                         $xres = $this->m_process->makeRessource($val, $val);
                         $node->addUsedRessource($xres);
                     }
                     break;
                 case "producesresource":
                     foreach ($field->getContent() as $value) {
                         $val = $value->getShortWikiText();
                         $xres = $this->m_process->makeRessource($val, $val);
                         $node->addProducedRessource($xres);
                     }
                     break;
                 case "hassuccessor":
                     if (count($field->getContent()) > 1) {
                         // SplitParallel
                         $edge = new SplitParallelEdge();
                         $edge->setFrom($node);
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $edge->addTo($this->m_process->makeNode($val, $val));
                         }
                     } else {
                         // Sequence
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $edge = new SequentialEdge();
                             $edge->setFrom($node);
                             $edge->setTo($this->m_process->makeNode($val, $val));
                         }
                     }
                     break;
                 case "hasorsuccessor":
                     if (count($field->getContent()) > 0) {
                         // SplitExclusiveOr
                         $edge = new SplitExclusiveOrEdge();
                         $edge->setFrom($node);
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $edge->addTo($this->m_process->makeNode($val, $val));
                         }
                     }
                     break;
                 case "hascontruesuccessor":
                     if (count($field->getContent()) > 0) {
                         // SplitConditional
                         if (!isset($cond_edge)) {
                             $cond_edge = new SplitConditionalOrEdge();
                             $cond_edge->setFrom($node);
                         }
                         // should be only one
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $cond_edge->setToTrue($this->m_process->makeNode($val, $val));
                         }
                     }
                     break;
                 case "hasconfalsesuccessor":
                     if (count($field->getContent()) > 0) {
                         // SplitConditional
                         if (!isset($cond_edge)) {
                             $cond_edge = new SplitConditionalOrEdge();
                             $cond_edge->setFrom($node);
                         }
                         // should be only one
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $cond_edge->setToFalse($this->m_process->makeNode($val, $val));
                         }
                     }
                     break;
                 case "hascondition":
                     if (count($field->getContent()) > 0) {
                         // SplitConditional
                         if (!isset($cond_edge)) {
                             $cond_edge = new SplitConditionalOrEdge();
                             $cond_edge->setFrom($node);
                         }
                         // should be only one
                         foreach ($field->getContent() as $value) {
                             $val = $value->getShortWikiText();
                             $cond_edge->setConditionText($val);
                         }
                     }
                     break;
                 case "hasstatus":
                     // should be only one
                     foreach ($field->getContent() as $value) {
                         $val = $value->getShortWikiText();
                         $node->setStatus($val);
                     }
                     break;
                 default:
                     // TODO - redundant column in result
             }
         }
         // reset row variables
         unset($node);
         unset($cond_edge);
         $row = $res->getNext();
         // switch to next row
     }
     //
     // generate graphInput
     //
     $graphInput = $this->m_process->getGraphVizCode();
     //
     // render graphViz code
     //
     $result = renderGraphviz($graphInput);
     $debug = '';
     if ($this->m_isDebugSet) {
         $debug = '<pre>' . $graphInput . '</pre>';
     }
     return $result . $debug;
 }
Esempio n. 3
0
 /**
  * Create a MediaWiki Title object for this SMWDIWikiPage. The result
  * can be null if an error occurred.
  *
  * @todo From MW 1.17 on, makeTitleSafe supports interwiki prefixes.
  * This function can be simplified when compatibility to MW 1.16 is
  * dropped.
  * @return mixed Title or null
  */
 public function getTitle()
 {
     if ($this->m_interwiki === '') {
         return Title::makeTitleSafe($this->m_namespace, $this->m_dbkey, $this->m_subobjectname);
     } else {
         // TODO inefficient; incomplete for fragments (see above commment)
         $datavalue = new SMWWikiPageValue('_wpg');
         $datavalue->setDataItem($this);
         return Title::newFromText($datavalue->getPrefixedText());
     }
 }
 private function getDvShortHtmlText($subject, $linker = null)
 {
     $dataValue = new WikiPageValue('_wpg');
     $dataValue->setDataItem($subject);
     $dataValue->setCaption($subject->getTitle()->getSubpageText());
     return $dataValue->getShortHtmlText($linker);
 }