本文整理汇总了PHP中SMWQueryResult::getPrintRequests方法的典型用法代码示例。如果您正苦于以下问题:PHP SMWQueryResult::getPrintRequests方法的具体用法?PHP SMWQueryResult::getPrintRequests怎么用?PHP SMWQueryResult::getPrintRequests使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SMWQueryResult
的用法示例。
在下文中一共展示了SMWQueryResult::getPrintRequests方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getResultFileContents
/**
* Returns the query result in DSV.
*
* @since 1.6
*
* @param SMWQueryResult $res
*
* @return string
*/
protected function getResultFileContents(SMWQueryResult $res)
{
$lines = array();
if ($this->mShowHeaders) {
$headerItems = array();
foreach ($res->getPrintRequests() as $pr) {
$headerItems[] = $pr->getLabel();
}
$lines[] = $this->getDSVLine($headerItems);
}
// Loop over the result objects (pages).
while ($row = $res->getNext()) {
$rowItems = array();
// Loop over their fields (properties).
foreach ($row as $field) {
$itemSegments = array();
// Loop over all values for the property.
while (($object = $field->getNextDataValue()) !== false) {
$itemSegments[] = Sanitizer::decodeCharReferences($object->getWikiValue());
}
// Join all values into a single string, separating them with comma's.
$rowItems[] = implode(',', $itemSegments);
}
$lines[] = $this->getDSVLine($rowItems);
}
return implode("\n", $lines);
}
示例2: getResultText
/**
* Return serialised results in specified format.
* Implemented by subclasses.
*/
protected function getResultText(SMWQueryResult $res, $outputmode)
{
$html = '';
$id = uniqid();
// build an array of article IDs contained in the result set
$objects = array();
foreach ($res->getResults() as $key => $object) {
$objects[] = array($object->getTitle()->getArticleId());
$html .= $key . ': ' . $object->getSerialization() . "<br>\n";
}
// build an array of data about the printrequests
$printrequests = array();
foreach ($res->getPrintRequests() as $key => $printrequest) {
$data = $printrequest->getData();
if ($data instanceof SMWPropertyValue) {
$name = $data->getDataItem()->getKey();
} else {
$name = null;
}
$printrequests[] = array($printrequest->getMode(), $printrequest->getLabel(), $name, $printrequest->getOutputFormat(), $printrequest->getParameters());
}
// write out results and query params into JS arrays
// Define the srf_filtered_values array
SMWOutputs::requireScript('srf_slideshow', Html::inlineScript('srf_slideshow = {};'));
SMWOutputs::requireScript('srf_slideshow' . $id, Html::inlineScript('srf_slideshow["' . $id . '"] = ' . json_encode(array($objects, $this->params['template'], $this->params['delay'] * 1000, $this->params['height'], $this->params['width'], $this->params['nav controls'], $this->params['effect'], json_encode($printrequests))) . ';'));
SMWOutputs::requireResource('ext.srf.slideshow');
if ($this->params['nav controls']) {
SMWOutputs::requireResource('jquery.ui.slider');
}
return Html::element('div', array('id' => $id, 'class' => 'srf-slideshow ' . $id . ' ' . $this->params['class']));
}
示例3: getResultText
protected function getResultText(SMWQueryResult $res, $outputmode)
{
$result = '';
if ($outputmode == SMW_OUTPUT_FILE) {
// make CSV file
$csv = fopen('php://temp', 'r+');
if ($this->mShowHeaders) {
$header_items = array();
foreach ($res->getPrintRequests() as $pr) {
$header_items[] = $pr->getLabel();
}
fputcsv($csv, $header_items, $this->m_sep);
}
while ($row = $res->getNext()) {
$row_items = array();
foreach ($row as $field) {
$growing = array();
while (($object = $field->getNextDataValue()) !== false) {
$growing[] = Sanitizer::decodeCharReferences($object->getWikiValue());
}
$row_items[] = implode(',', $growing);
}
fputcsv($csv, $row_items, $this->m_sep);
}
rewind($csv);
$result .= stream_get_contents($csv);
} else {
// just make link to feed
if ($this->getSearchLabel($outputmode)) {
$label = $this->getSearchLabel($outputmode);
} else {
$label = wfMsgForContent('smw_csv_link');
}
$link = $res->getQueryLink($label);
$link->setParameter('csv', 'format');
$link->setParameter($this->m_sep, 'sep');
if (array_key_exists('mainlabel', $this->params) && $this->params['mainlabel'] !== false) {
$link->setParameter($this->params['mainlabel'], 'mainlabel');
}
$link->setParameter($this->mShowHeaders ? 'show' : 'hide', 'headers');
if (array_key_exists('limit', $this->params)) {
$link->setParameter($this->params['limit'], 'limit');
} else {
// use a reasonable default limit
$link->setParameter(100, 'limit');
}
$result .= $link->getText($outputmode, $this->mLinker);
$this->isHTML = $outputmode == SMW_OUTPUT_HTML;
// yes, our code can be viewed as HTML if requested, no more parsing needed
}
return $result;
}
示例4: getResultText
protected function getResultText(SMWQueryResult $res, $outputmode)
{
$result = '';
$columnClasses = array();
if ($this->mShowHeaders != SMW_HEADERS_HIDE) {
// building headers
$headers = array();
foreach ($res->getPrintRequests() as $pr) {
$attribs = array();
$columnClass = str_replace(array(' ', '_'), '-', $pr->getText(SMW_OUTPUT_WIKI));
$attribs['class'] = $columnClass;
// Also add this to the array of classes, for
// use in displaying each row.
$columnClasses[] = $columnClass;
$text = $pr->getText($outputmode, $this->mShowHeaders == SMW_HEADERS_PLAIN ? null : $this->mLinker);
$headers[] = Html::rawElement('th', $attribs, $text === '' ? ' ' : $text);
}
$headers = '<tr>' . implode("\n", $headers) . '</tr>';
if ($outputmode == SMW_OUTPUT_HTML) {
$headers = '<thead>' . $headers . '</thead>';
}
$headers = "\n{$headers}\n";
$result .= $headers;
}
$tableRows = array();
$rowNum = 1;
while ($subject = $res->getNext()) {
$tableRows[] = $this->getRowForSubject($subject, $outputmode, $columnClasses, $rowNum++);
}
$tableRows = implode("\n", $tableRows);
if ($outputmode == SMW_OUTPUT_HTML) {
$tableRows = '<tbody>' . $tableRows . '</tbody>';
}
$result .= $tableRows;
// print further results footer
if ($this->linkFurtherResults($res)) {
$link = $res->getQueryLink();
if ($this->getSearchLabel($outputmode)) {
$link->setCaption($this->getSearchLabel($outputmode));
}
$result .= "\t<tr class=\"smwfooter\"><td class=\"sortbottom\" colspan=\"" . $res->getColumnCount() . '"> ' . $link->getText($outputmode, $this->mLinker) . "</td></tr>\n";
}
// Put the <table> tag around the whole thing
$tableAttrs = array('class' => $this->mHTMLClass);
if ($this->mFormat == 'broadtable') {
$tableAttrs['width'] = '100%';
}
$result = Xml::tags('table', $tableAttrs, $result);
$this->isHTML = $outputmode == SMW_OUTPUT_HTML;
// yes, our code can be viewed as HTML if requested, no more parsing needed
return $result;
}
示例5: getSerializedQueryResult
/**
* Get the serialization for a SMWQueryResult object.
*
* @since 1.7
*
* @param SMWQueryResult $result
*
* @return array
*/
public static function getSerializedQueryResult(SMWQueryResult $queryResult)
{
$results = array();
$printRequests = array();
foreach ($queryResult->getPrintRequests() as $printRequest) {
$printRequests[] = array('label' => $printRequest->getLabel(), 'typeid' => $printRequest->getTypeID(), 'mode' => $printRequest->getMode());
}
foreach ($queryResult->getResults() as $diWikiPage) {
$result = array('printouts' => array());
foreach ($queryResult->getPrintRequests() as $printRequest) {
$resultAarray = new SMWResultArray($diWikiPage, $printRequest, $queryResult->getStore());
if ($printRequest->getMode() === SMWPrintRequest::PRINT_THIS) {
$dataItems = $resultAarray->getContent();
$result += self::getSerialization(array_shift($dataItems));
} else {
$result['printouts'][$printRequest->getLabel()] = array_map(array(__CLASS__, 'getSerialization'), $resultAarray->getContent());
}
}
$results[$diWikiPage->getTitle()->getFullText()] = $result;
}
return array('printrequests' => $printRequests, 'results' => $results);
}
示例6: getResultText
public function getResultText(SMWQueryResult $results, $outputmode)
{
global $wgUser, $wgParser;
$ig = new ImageGallery();
$ig->setShowBytes(false);
$ig->setShowFilename(false);
$ig->setParser($wgParser);
$ig->setCaption($this->mIntro);
// set caption to IQ header
if ($this->params['galleryformat'] == 'carousel') {
static $carouselNr = 0;
// Set attributes for jcarousel
$dataAttribs = array('wrap' => 'both', 'vertical' => 'false', 'rtl' => 'false');
// Use perrow parameter to determine the scroll sequence.
if (empty($this->params['perrow'])) {
$dataAttribs['scroll'] = 1;
// default 1
} else {
$dataAttribs['scroll'] = $this->params['perrow'];
$dataAttribs['visible'] = $this->params['perrow'];
}
$attribs = array('id' => 'carousel' . ++$carouselNr, 'class' => 'jcarousel jcarousel-skin-smw', 'style' => 'display:none;');
foreach ($dataAttribs as $name => $value) {
$attribs['data-' . $name] = $value;
}
$ig->setAttributes($attribs);
// Load javascript module
SMWOutputs::requireResource('ext.srf.jcarousel');
}
// In case galleryformat = carousel, perrow should not be set
if ($this->params['perrow'] !== '' && $this->params['galleryformat'] !== 'carousel') {
$ig->setPerRow($this->params['perrow']);
}
if ($this->params['widths'] !== '') {
$ig->setWidths($this->params['widths']);
}
if ($this->params['heights'] !== '') {
$ig->setHeights($this->params['heights']);
}
$printReqLabels = array();
foreach ($results->getPrintRequests() as $printReq) {
$printReqLabels[] = $printReq->getLabel();
}
if ($this->params['imageproperty'] !== '' && in_array($this->params['imageproperty'], $printReqLabels)) {
$this->addImageProperties($results, $ig, $this->params['imageproperty'], $this->params['captionproperty']);
} else {
$this->addImagePages($results, $ig);
}
return array($ig->toHTML(), 'nowiki' => true, 'isHTML' => true);
}
示例7: getResultText
protected function getResultText( SMWQueryResult $res, $outputmode ) {
global $smwgIQRunningNumber;
$this->includeJS();
$isEventline = 'eventline' == $this->mFormat;
if ( !$isEventline && ( $this->m_tlstart == '' ) ) { // seek defaults
foreach ( $res->getPrintRequests() as $pr ) {
if ( ( $pr->getMode() == SMWPrintRequest::PRINT_PROP ) && ( $pr->getTypeID() == '_dat' ) ) {
$dataValue = $pr->getData();
$date_value = $dataValue->getDataItem()->getLabel();
if ( ( $this->m_tlend == '' ) && ( $this->m_tlstart != '' ) &&
( $this->m_tlstart != $date_value ) ) {
$this->m_tlend = $date_value;
} elseif ( ( $this->m_tlstart == '' ) && ( $this->m_tlend != $date_value ) ) {
$this->m_tlstart = $date_value;
}
}
}
}
// print header
$link = $res->getQueryLink( wfMsgForContent( 'srf-timeline-allresults' ) );
$result = "<div class=\"smwtimeline\" id=\"smwtimeline$smwgIQRunningNumber\" style=\"height: $this->m_tlsize\">";
$result .= '<span class="smwtlcomment">' . wfMsgForContent( 'srf-timeline-nojs' ) . ' ' . $link->getText( $outputmode, $this->mLinker ) . '</span>'; // note for people without JavaScript
foreach ( $this->m_tlbands as $band ) {
$result .= '<span class="smwtlband" style="display:none;">' . htmlspecialchars( $band ) . '</span>';
// just print any "band" given, the JavaScript will figure out what to make of it
}
// print all result rows
if ( ( $this->m_tlstart != '' ) || $isEventline ) {
$result .= $this->getEventsHTML( $res, $outputmode, $isEventline );
}
// no further results displayed ...
// print footer
$result .= '</div>';
// yes, our code can be viewed as HTML if requested, no more parsing needed
$this->isHTML = $outputmode == SMW_OUTPUT_HTML;
return $result;
}
示例8: getResultText
protected function getResultText(SMWQueryResult $res, $outputmode)
{
$result = '';
if ($outputmode == SMW_OUTPUT_FILE) {
// make CSV file
$csv = fopen('php://temp', 'r+');
$sep = str_replace('_', ' ', $this->params['sep']);
if ($this->params['showsep']) {
fputs($csv, "sep=" . $sep . "\n");
}
if ($this->mShowHeaders) {
$header_items = array();
foreach ($res->getPrintRequests() as $pr) {
$header_items[] = $pr->getLabel();
}
fputcsv($csv, $header_items, $sep);
}
while ($row = $res->getNext()) {
$row_items = array();
foreach ($row as $field) {
$growing = array();
while (($object = $field->getNextDataValue()) !== false) {
$growing[] = Sanitizer::decodeCharReferences($object->getWikiValue());
}
$row_items[] = implode(',', $growing);
}
fputcsv($csv, $row_items, $this->m_sep);
}
rewind($csv);
$result .= stream_get_contents($csv);
} else {
// just make link to feed
$result .= $this->getLink($res, $outputmode)->getText($outputmode, $this->mLinker);
$this->isHTML = $outputmode == SMW_OUTPUT_HTML;
// yes, our code can be viewed as HTML if requested, no more parsing needed
}
return $result;
}
示例9: getResultText
public function getResultText( SMWQueryResult $results, $outputmode ) {
global $wgUser, $wgParser;
$ig = new ImageGallery();
$ig->setShowBytes( false );
$ig->setShowFilename( false );
$ig->setParser( $wgParser );
$ig->setCaption( $this->mIntro ); // set caption to IQ header
if ( $this->m_params['perrow'] !== '' ) {
$ig->setPerRow( $this->m_params['perrow'] );
}
if ( $this->m_params['widths'] !== '' ) {
$ig->setWidths( $this->m_params['widths'] );
}
if ( $this->m_params['heights'] !== '' ) {
$ig->setHeights( $this->m_params['heights'] );
}
$printReqLabels = array();
foreach ( $results->getPrintRequests() as /* SMWPrintRequest */ $printReq ) {
$printReqLabels[] = $printReq->getLabel();
}
if ( $this->m_params['imageproperty'] !== '' && in_array( $this->m_params['imageproperty'], $printReqLabels ) ) {
$this->addImageProperties( $results, $ig, $this->m_params['imageproperty'], $this->m_params['captionproperty'] );
}
else {
$this->addImagePages( $results, $ig );
}
return array( $ig->toHTML(), 'nowiki' => true, 'isHTML' => true );
}
示例10: getResultText
/**
* @see SMWResultPrinter::getResultText
*
* @param $results SMWQueryResult
* @param $fullParams array
* @param $outputmode integer
*
* @return string
*/
public function getResultText(SMWQueryResult $results, $outputmode)
{
$ig = new ImageGallery();
$ig->setShowBytes(false);
$ig->setShowFilename(false);
$ig->setCaption($this->mIntro);
// set caption to IQ header
// No need for a special page to use the parser but for the "normal" page
// view we have to ensure caption text is parsed correctly through the parser
if (!$this->isSpecialPage()) {
$ig->setParser($GLOBALS['wgParser']);
}
// Initialize
static $statNr = 0;
$html = '';
$processing = '';
if ($this->params['widget'] == 'carousel') {
// Carousel widget
$ig->setAttributes($this->getCarouselWidget());
} elseif ($this->params['widget'] == 'slideshow') {
// Slideshow widget
$ig->setAttributes($this->getSlideshowWidget());
} else {
// Standard gallery attributes
$attribs = array('id' => uniqid(), 'class' => $this->getImageOverlay());
$ig->setAttributes($attribs);
}
// Only use redirects where the overlay option is not used and redirect
// thumb images towards a different target
if ($this->params['redirects'] !== '' && !$this->params['overlay']) {
SMWOutputs::requireResource('ext.srf.gallery.redirect');
}
// For the carousel widget, the perrow option should not be set
if ($this->params['perrow'] !== '' && $this->params['widget'] !== 'carousel') {
$ig->setPerRow($this->params['perrow']);
}
if ($this->params['widths'] !== '') {
$ig->setWidths($this->params['widths']);
}
if ($this->params['heights'] !== '') {
$ig->setHeights($this->params['heights']);
}
$printReqLabels = array();
$redirectType = '';
/**
* @var SMWPrintRequest $printReq
*/
foreach ($results->getPrintRequests() as $printReq) {
$printReqLabels[] = $printReq->getLabel();
// Get redirect type
if ($this->params['redirects'] === $printReq->getLabel()) {
$redirectType = $printReq->getTypeID();
}
}
if ($this->params['imageproperty'] !== '' && in_array($this->params['imageproperty'], $printReqLabels) || $this->params['redirects'] !== '' && in_array($this->params['redirects'], $printReqLabels)) {
$this->addImageProperties($results, $ig, $this->params['imageproperty'], $this->params['captionproperty'], $this->params['redirects'], $outputmode);
} else {
$this->addImagePages($results, $ig);
}
// SRF Global settings
SRFUtils::addGlobalJSVariables();
// Display a processing image as long as the DOM is no ready
if ($this->params['widget'] !== '') {
$processing = SRFUtils::htmlProcessingElement();
}
// Beautify the class selector
$class = $this->params['widget'] ? '-' . $this->params['widget'] . ' ' : '';
$class = $this->params['redirects'] !== '' && $this->params['overlay'] === false ? $class . ' srf-redirect' . ' ' : $class;
$class = $this->params['class'] ? $class . ' ' . $this->params['class'] : $class;
// Separate content from result output
if (!$ig->isEmpty()) {
$attribs = array('class' => 'srf-gallery' . $class, 'align' => 'justify', 'data-redirect-type' => $redirectType);
$html = Html::rawElement('div', $attribs, $processing . $ig->toHTML());
}
// If available, create a link that points to further results
if ($this->linkFurtherResults($results)) {
$html .= $this->getLink($results, SMW_OUTPUT_HTML)->getText(SMW_OUTPUT_HTML, $this->mLinker);
}
return array($html, 'nowiki' => true, 'isHTML' => true);
}
示例11: getSerializedQueryResult
/**
* Get the serialization for a SMWQueryResult object.
*
* @since 1.7
*
* @param SMWQueryResult $result
*
* @return array
*/
public static function getSerializedQueryResult(QueryResult $queryResult)
{
$results = array();
$printRequests = array();
foreach ($queryResult->getPrintRequests() as $printRequest) {
$printRequests[] = self::getSerializedPrintRequestFormat($printRequest);
}
/**
* @var DIWikiPage $diWikiPage
* @var PrintRequest $printRequest
*/
foreach ($queryResult->getResults() as $diWikiPage) {
if (!$diWikiPage->getTitle() instanceof Title) {
continue;
}
$result = array('printouts' => array());
foreach ($queryResult->getPrintRequests() as $printRequest) {
$resultArray = new SMWResultArray($diWikiPage, $printRequest, $queryResult->getStore());
if ($printRequest->getMode() === PrintRequest::PRINT_THIS) {
$dataItems = $resultArray->getContent();
$result += self::getSerialization(array_shift($dataItems), $printRequest);
} elseif ($resultArray->getContent() !== array()) {
$values = array();
foreach ($resultArray->getContent() as $dataItem) {
$values[] = self::getSerialization($dataItem, $printRequest);
}
$result['printouts'][$printRequest->getLabel()] = $values;
} else {
// For those objects that are empty return an empty array
// to keep the output consistent
$result['printouts'][$printRequest->getLabel()] = array();
}
}
$results[$diWikiPage->getTitle()->getFullText()] = $result;
}
return array('printrequests' => $printRequests, 'results' => $results);
}
示例12: getResultText
/**
* Return serialised results in specified format.
*/
protected function getResultText(SMWQueryResult $res, $outputmode)
{
// collect the query results in an array
$result = array();
while ($row = $res->getNext()) {
$result[uniqid()] = new SRF_Filtered_Item($row, $this);
}
$resourceModules = array();
// prepare filter data for inclusion in HTML and JS
$filterHtml = '';
$filterHandlers = array();
$filterData = array();
foreach ($res->getPrintRequests() as $printRequest) {
$filter = $printRequest->getParameter('filter');
if ($filter) {
$filtersForPrintout = array_map('trim', explode(',', $filter));
foreach ($filtersForPrintout as $filterName) {
if (array_key_exists($filterName, $this->mFilterTypes)) {
$filter = new $this->mFilterTypes[$filterName]($result, $printRequest, $this);
$resourceModules = $filter->getResourceModules();
if (is_array($resourceModules)) {
array_walk($resourceModules, 'SMWOutputs::requireResource');
} elseif (is_string($resourceModules)) {
SMWOutputs::requireResource($resourceModules);
}
$printRequestHash = md5($printRequest->getHash());
$filterHtml .= Html::rawElement('div', array('class' => "filtered-{$filterName} {$printRequestHash}"), $filter->getResultText());
$filterHandlers[$filterName] = null;
$filterData[$filterName][$printRequestHash] = $filter->getJsData();
}
}
}
}
// wrap filters in a div
$filterHtml = Html::rawElement('div', array('class' => 'filtered-filters'), $filterHtml);
// prepare view data for inclusion in HTML and JS
$viewHtml = '';
$viewSelectorsHtml = '';
$viewHandlers = array();
$viewElements = array();
// will contain the id of the html element to be used by the view
$viewData = array();
foreach ($this->mViews as $viewName) {
// cut off the selector label (if one was specified) from the actual view name
$viewnameComponents = explode('=', $viewName, 2);
$viewName = trim($viewnameComponents[0]);
if (array_key_exists($viewName, $this->mViewTypes)) {
// generate unique id
$viewid = uniqid();
$view = new $this->mViewTypes[$viewName]($viewid, $result, $this->mParams, $this);
if (count($viewnameComponents) > 1) {
// a selector label was specified in the wiki text
$viewSelectorLabel = trim($viewnameComponents[1]);
} else {
// use the default selector label
$viewSelectorLabel = $view->getSelectorLabel();
}
$resourceModules = $view->getResourceModules();
if (is_array($resourceModules)) {
array_walk($resourceModules, 'SMWOutputs::requireResource');
} elseif (is_string($resourceModules)) {
SMWOutputs::requireResource($resourceModules);
}
$viewHtml .= Html::rawElement('div', array('class' => "filtered-view filtered-{$viewName} filtered-view-id{$viewid}"), $view->getResultText());
$viewSelectorsHtml .= Html::rawElement('div', array('class' => "filtered-view-selector filtered-{$viewName} filtered-view-id{$viewid}"), $viewSelectorLabel);
$viewHandlers[$viewName] = null;
$viewElements[$viewName][] = $viewid;
$viewData[$viewName] = $view->getJsData();
}
}
// more than one view?
if (count($viewData) > 1) {
// wrap views in a div
$viewHtml = Html::rawElement('div', array('class' => 'filtered-views', 'style' => 'display:none'), Html::rawElement('div', array('class' => 'filtered-views-selectors-container'), $viewSelectorsHtml) . Html::rawElement('div', array('class' => 'filtered-views-container'), $viewHtml));
} else {
// wrap views in a div
$viewHtml = Html::rawElement('div', array('class' => 'filtered-views', 'style' => 'display:none'), Html::rawElement('div', array('class' => 'filtered-views-container'), $viewHtml));
}
// Define the srf_filtered_values array
SMWOutputs::requireScript('srf_filtered_values', Html::inlineScript('srf_filtered_values = {};'));
$resultAsArray = array();
foreach ($result as $id => $value) {
$resultAsArray[$id] = $value->getArrayRepresentation();
}
$id = uniqid();
SMWOutputs::requireScript('srf_filtered_values' . $id, Html::inlineScript('srf_filtered_values["' . $id . '"] = { "values":' . json_encode($resultAsArray) . ', "data": {' . ' "viewhandlers" : ' . json_encode($viewHandlers) . ', "viewelements" : ' . json_encode($viewElements) . ', "viewdata" : ' . json_encode($viewData) . ', "filterhandlers" : ' . json_encode($filterHandlers) . ', "filterdata" : ' . json_encode($filterData) . ', "sorthandlers" : ' . json_encode(array()) . ', "sorterdata" : ' . json_encode(array()) . '}};'));
SMWOutputs::requireResource('ext.srf.filtered');
// wrap all in a div
if ($this->mFiltersOnTop) {
$html = Html::rawElement('div', array('class' => 'filtered ' . $id), $filterHtml . $viewHtml);
} else {
$html = Html::rawElement('div', array('class' => 'filtered ' . $id), $viewHtml . $filterHtml);
}
return $html;
}
示例13: getResultText
protected function getResultText( SMWQueryResult $res, $outputmode ) {
$print_fields = array();
foreach ( $res->getPrintRequests() as $pr ) {
$field_name = $pr->getText( $outputmode, $this->mLinker );
// only print it if it's not already part of the
// outline
if ( ! in_array( $field_name, $this->mOutlineProperties ) ) {
$print_fields[] = $field_name;
}
}
// for each result row, create an array of the row itself
// and all its sorted-on fields, and add it to the initial
// 'tree'
$outline_tree = new SRFOutlineTree();
while ( $row = $res->getNext() ) {
$item = new SRFOutlineItem( $row );
foreach ( $row as $field ) {
$first = true;
$field_name = $field->getPrintRequest()->getText( SMW_OUTPUT_HTML );
if ( in_array( $field_name, $this->mOutlineProperties ) ) {
while ( ( $object = $field->getNextDataValue() ) !== false ) {
$field_val = $object->getLongWikiText( $this->mLinker );
$item->addFieldValue( $field_name, $field_val );
}
}
}
$outline_tree->addItem( $item );
}
// now, cycle through the outline properties, creating the
// tree
foreach ( $this->mOutlineProperties as $outline_prop ) {
$outline_tree->addProperty( $outline_prop );
}
$result = $this->printTree( $outline_tree );
// print further results footer
if ( $this->linkFurtherResults( $res ) ) {
$link = $res->getQueryLink();
if ( $this->getSearchLabel( $outputmode ) ) {
$link->setCaption( $this->getSearchLabel( $outputmode ) );
}
$link->setParameter( 'outline', 'format' );
if ( array_key_exists( 'outlineproperties', $this->m_params ) ) {
$link->setParameter( $this->m_params['outlineproperties'], 'outlineproperties' );
}
$result .= $link->getText( $outputmode, $this->mLinker ) . "\n";
}
return $result;
}
示例14: getObsoleteJSON
/**
* Compatibility layer for obsolete JSON format
*
* @since 1.8
* @deprecated This method will be removed in 1.10
*
* @param SMWQueryResult $res
* @param $outputmode integer
*
* @return string
*/
private function getObsoleteJSON(SMWQueryResult $res, $outputmode)
{
wfDeprecated(__METHOD__, '1.8');
$types = array('_wpg' => 'text', '_num' => 'number', '_dat' => 'date', '_geo' => 'text', '_str' => 'text');
$itemstack = array();
// contains Items for the items section
$propertystack = array();
// contains Properties for the property section
// generate property section
foreach ($res->getPrintRequests() as $pr) {
if ($pr->getMode() != SMWPrintRequest::PRINT_THIS) {
if (array_key_exists($pr->getTypeID(), $types)) {
$propertystack[] = '"' . str_replace(" ", "_", strtolower($pr->getLabel())) . '" : { "valueType": "' . $types[$pr->getTypeID()] . '" }';
} else {
$propertystack[] = '"' . str_replace(" ", "_", strtolower($pr->getLabel())) . '" : { "valueType": "text" }';
}
}
}
$properties = "\"properties\": {\n\t\t" . implode(",\n\t\t", $propertystack) . "\n\t}";
// generate items section
while (($row = $res->getNext()) !== false) {
$rowsubject = false;
// the wiki page value that this row is about
$valuestack = array();
// contains Property-Value pairs to characterize an Item
$addedLabel = false;
foreach ($row as $field) {
$pr = $field->getPrintRequest();
if ($rowsubject === false && !$addedLabel) {
$valuestack[] = '"label": "' . $field->getResultSubject()->getTitle()->getFullText() . '"';
$addedLabel = true;
}
if ($pr->getMode() != SMWPrintRequest::PRINT_THIS) {
$values = array();
$jsonObject = array();
while (($dataValue = $field->getNextDataValue()) !== false) {
switch ($dataValue->getTypeID()) {
case '_geo':
$jsonObject[] = $dataValue->getDataItem()->getCoordinateSet();
$values[] = FormatJson::encode($dataValue->getDataItem()->getCoordinateSet());
break;
case '_num':
$jsonObject[] = $dataValue->getDataItem()->getNumber();
break;
case '_dat':
$jsonObject[] = $dataValue->getYear() . '-' . str_pad($dataValue->getMonth(), 2, '0', STR_PAD_LEFT) . '-' . str_pad($dataValue->getDay(), 2, '0', STR_PAD_LEFT) . ' ' . $dataValue->getTimeString();
break;
default:
$jsonObject[] = $dataValue->getShortText($outputmode, null);
}
}
if (!is_array($jsonObject) || count($jsonObject) > 0) {
$valuestack[] = '"' . str_replace(' ', '_', strtolower($pr->getLabel())) . '": ' . FormatJson::encode($jsonObject) . '';
}
}
}
if ($rowsubject !== false) {
// stuff in the page URI and some category data
$valuestack[] = '"uri" : "' . $wgServer . $wgScriptPath . '/index.php?title=' . $rowsubject->getPrefixedText() . '"';
$page_cats = smwfGetStore()->getPropertyValues($rowsubject, new SMWDIProperty('_INST'));
// TODO: set limit to 1 here
if (count($page_cats) > 0) {
$valuestack[] = '"type" : "' . reset($page_cats)->getShortHTMLText() . '"';
}
}
// create property list of item
$itemstack[] = "\t{\n\t\t\t" . implode(",\n\t\t\t", $valuestack) . "\n\t\t}";
}
$items = "\"items\": [\n\t" . implode(",\n\t", $itemstack) . "\n\t]";
return "{\n\t" . $properties . ",\n\t" . $items . "\n}";
}
示例15: getResultText
protected function getResultText(SMWQueryResult $res, $outputmode)
{
global $smwgIQRunningNumber, $wgSitename, $wgServer, $smwgRSSEnabled, $wgRequest;
$result = '';
if ($outputmode == SMW_OUTPUT_FILE) {
// make RSS feed
if (!$smwgRSSEnabled) {
return '';
}
if ($this->m_title === '') {
$this->m_title = $wgSitename;
}
if ($this->m_description === '') {
$this->m_description = wfMsg('smw_rss_description', $wgSitename);
}
// cast printouts into "items"
$items = array();
$row = $res->getNext();
while ($row !== false) {
$creators = array();
$dates = array();
$wikipage = $row[0]->getNextDataValue();
// get the object
foreach ($row as $field) {
// for now we ignore everything but creator and date, later we may
// add more things like geolocs, categories, and even a generic
// mechanism to add whatever you want :)
$req = $field->getPrintRequest();
if (strtolower($req->getLabel()) == 'creator') {
while ($entry = $field->getNextDataValue()) {
$creators[] = $entry->getShortWikiText();
}
} elseif (strtolower($req->getLabel()) == 'date' && $req->getTypeID() == '_dat') {
while ($entry = $field->getNextDataValue()) {
$dates[] = $entry->getXMLSchemaDate();
}
}
}
if ($wikipage instanceof SMWWikiPageValue) {
// this should rarely fail, but better be carful
///TODO: It would be more elegant to have type chekcs initially
$items[] = new SMWRSSItem($wikipage->getTitle(), $creators, $dates);
}
$row = $res->getNext();
}
$result .= '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$result .= "<rdf:RDF\n";
$result .= "\txmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
$result .= "\txmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\n";
$result .= "\txmlns:admin=\"http://webns.net/mvcb/\"\n";
$result .= "\txmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
$result .= "\txmlns=\"http://purl.org/rss/1.0/\">\n";
$result .= "\t<channel rdf:about=\"" . str_replace('&', '&', $wgRequest->getFullRequestURL()) . "\">\n";
$result .= "\t\t<admin:generatorAgent rdf:resource=\"http://semantic-mediawiki.org/wiki/Special:URIResolver/Semantic_MediaWiki\"/>\n";
$result .= "\t\t<title>" . smwfXMLContentEncode($this->m_title) . "</title>\n";
$result .= "\t\t<link>{$wgServer}</link>\n";
$result .= "\t\t<description>" . smwfXMLContentEncode($this->m_description) . "</description>\n";
if (count($items) > 0) {
$result .= "\t\t<items>\n";
$result .= "\t\t\t<rdf:Seq>\n";
foreach ($items as $item) {
$result .= "\t\t\t\t<rdf:li rdf:resource=\"" . $item->uri() . "\"/>\n";
}
$result .= "\t\t\t</rdf:Seq>\n";
$result .= "\t\t</items>\n";
}
$result .= "\t</channel>\n";
foreach ($items as $item) {
$result .= $item->text();
}
$result .= '</rdf:RDF>';
} else {
// just make link to feed
if ($this->getSearchLabel($outputmode)) {
$label = $this->getSearchLabel($outputmode);
} else {
$label = wfMsgForContent('smw_rss_link');
}
$link = $res->getQueryLink($label);
$link->setParameter('rss', 'format');
if ($this->m_title !== '') {
$link->setParameter($this->m_title, 'title');
}
if ($this->m_description !== '') {
$link->setParameter($this->m_description, 'description');
}
if (array_key_exists('limit', $this->m_params)) {
$link->setParameter($this->m_params['limit'], 'limit');
} else {
// use a reasonable deafult limit (10 is suggested by RSS)
$link->setParameter(10, 'limit');
}
foreach ($res->getPrintRequests() as $printout) {
// overwrite given "sort" parameter with printout of label "date"
if ($printout->getMode() == SMWPrintRequest::PRINT_PROP && strtolower($printout->getLabel()) == "date" && $printout->getTypeID() == "_dat") {
$link->setParameter($printout->getData()->getWikiValue(), 'sort');
}
}
$result .= $link->getText($outputmode, $this->mLinker);
$this->isHTML = $outputmode == SMW_OUTPUT_HTML;
//.........这里部分代码省略.........