Example #1
0
 /**
  * Create an SMWInfolink object representing a link to further query results.
  * This link can then be serialised or extended by further params first.
  * The optional $caption can be used to set the caption of the link (though this
  * can also be changed afterwards with SMWInfolink::setCaption()). If empty, the
  * message 'smw_iq_moreresults' is used as a caption.
  *
  * @deprecated since SMW 1.8
  *
  * @param string|false $caption
  *
  * @return SMWInfolink
  */
 public function getQueryLink($caption = false)
 {
     $link = $this->getLink();
     if ($caption === false) {
         // The space is right here, not in the QPs!
         $caption = ' ' . wfMessage('smw_iq_moreresults')->inContentLanguage()->text();
     }
     $link->setCaption($caption);
     $params = array(trim($this->mQuery->getQueryString()));
     foreach ($this->mQuery->getExtraPrintouts() as $printout) {
         $serialization = $printout->getSerialisation();
         // TODO: this is a hack to get rid of the mainlabel param in case it was automatically added
         // by SMWQueryProcessor::addThisPrintout. Should be done nicer when this link creation gets redone.
         if ($serialization !== '?#') {
             $params[] = $serialization;
         }
     }
     if ($this->mQuery->getMainLabel() !== false) {
         $params['mainlabel'] = $this->mQuery->getMainLabel();
     }
     $params['offset'] = $this->mQuery->getOffset() + count($this->mResults);
     if ($params['offset'] === 0) {
         unset($params['offset']);
     }
     if ($this->mQuery->getLimit() > 0) {
         $params['limit'] = $this->mQuery->getLimit();
     }
     if (count($this->mQuery->sortkeys) > 0) {
         $order = implode(',', $this->mQuery->sortkeys);
         $sort = implode(',', array_keys($this->mQuery->sortkeys));
         if ($sort !== '' || $order != 'ASC') {
             $params['order'] = $order;
             $params['sort'] = $sort;
         }
     }
     foreach ($params as $key => $param) {
         $link->setParameter($param, is_string($key) ? $key : false);
     }
     return $link;
 }
Example #2
0
 /**
  * Create an SMWInfolink object representing a link to further query results.
  * This link can then be serialised or extended by further params first.
  * The optional $caption can be used to set the caption of the link (though this
  * can also be changed afterwards with SMWInfolink::setCaption()). If empty, the
  * message 'smw_iq_moreresults' is used as a caption.
  * 
  * TODO: have this work for all params without manually overriding and adding everything
  * (this is possible since the param handling changes in 1.7) 
  * 
  * @param string|false $caption
  * 
  * @return SMWInfolink
  */
 public function getQueryLink($caption = false)
 {
     $params = array(trim($this->mQuery->getQueryString()));
     foreach ($this->mQuery->getExtraPrintouts() as $printout) {
         $serialization = $printout->getSerialisation();
         // TODO: this is a hack to get rid of the mainlabel param in case it was automatically added
         // by SMWQueryProcessor::addThisPrintout. Should be done nicer when this link creation gets redone.
         if ($serialization !== '?#') {
             $params[] = $serialization;
         }
     }
     if ($this->mQuery->getMainLabel() !== false) {
         $params['mainlabel'] = $this->mQuery->getMainLabel();
     }
     $params['offset'] = $this->mQuery->getOffset() + count($this->mResults);
     if ($params['offset'] === 0) {
         unset($params['offset']);
     }
     if ($this->mQuery->getLimit() > 0) {
         $params['limit'] = $this->mQuery->getLimit();
     }
     if (count($this->mQuery->sortkeys) > 0) {
         $order = implode(',', $this->mQuery->sortkeys);
         $sort = implode(',', array_keys($this->mQuery->sortkeys));
         if ($sort !== '' || $order != 'ASC') {
             $params['order'] = $order;
             $params['sort'] = $sort;
         }
     }
     if ($caption == false) {
         $caption = ' ' . wfMsgForContent('smw_iq_moreresults');
         // The space is right here, not in the QPs!
     }
     // Note: the initial : prevents SMW from reparsing :: in the query string.
     $result = SMWInfolink::newInternalLink($caption, ':Special:Ask', false, $params);
     return $result;
 }