/** * Constructor for the view. * * @param $id the view id * @param $results array of SRF_Filtered_Item containing the query results * @param type $params array of parameter values given as key-value-pairs */ public function __construct($id, &$results, &$params, SRFFiltered &$queryPrinter) { global $wgParser; parent::__construct($id, $results, $params, $queryPrinter); // find the hash for the printout containing the start date if ($params['calendar view start'] !== '') { $start = trim($wgParser->recursiveTagParse($params['calendar view start'])); } else { $start = null; } // find the hash for the printout containing the start date if ($params['calendar view end'] !== '') { $end = trim($wgParser->recursiveTagParse($params['calendar view end'])); } else { $end = null; } // find the hash for the printout containing the title of the element if ($params['calendar view title'] !== '') { $title = trim($wgParser->recursiveTagParse($params['calendar view title'])); } else { $title = null; } // find the hash for the printout containing the title of the element if ($params['calendar view title template'] !== '') { $titleTemplate = trim($wgParser->recursiveTagParse($params['calendar view title template'])); } else { $titleTemplate = null; } foreach ($results as $rownum => $result) { $value = $result->getValue(); $data = array(); $wikitext = ''; $firstField = true; foreach ($value as $i => $field) { $printRequest = $field->getPrintRequest(); if ($printRequest->getLabel() === $start && $printRequest->getTypeID() === '_dat') { // found specified column for start date $field->reset(); $datavalue = $field->getNextDatavalue(); if ($datavalue !== false) { $data['start'] = $datavalue->getISO8601Date(); } } else { if ($printRequest->getLabel() === $end && $printRequest->getTypeID() === '_dat') { // found specified column for end date $field->reset(); $datavalue = $field->getNextDatavalue(); if ($datavalue !== false) { $data['end'] = $datavalue->getISO8601Date(); } } else { if ($printRequest->getLabel() === $title && $printRequest->getTypeID() === '_wpg' && $titleTemplate === null) { // found specified column for title $field->reset(); $datavalue = $field->getNextDatavalue(); if ($datavalue !== false) { $data['url'] = $datavalue->getTitle()->getLocalURL(); } } else { if ($start === null && !array_key_exists('start', $data) && $printRequest->getTypeID() === '_dat') { // no column for start date specified, take first available date value $field->reset(); $datavalue = $field->getNextDatavalue(); if ($datavalue !== false) { $data['start'] = $datavalue->getISO8601Date(); } } else { if ($firstField === true && $params['mainlabel'] !== '-' && $title === null && $titleTemplate === null && $printRequest->getTypeID() === '_wpg') { // found specified column for title $field->reset(); $datavalue = $field->getNextDatavalue(); if ($datavalue !== false) { $data['url'] = $datavalue->getTitle()->getLocalURL(); } } } } } } $firstField === false; // only add to title template if requested and if not hidden if ($titleTemplate !== null && $printRequest->getParameter('hide') === false) { $wikitext .= '|' . ($i + 1) . '='; $first_value = true; $field->reset(); while (($text = $field->getNextText(SMW_OUTPUT_WIKI, $this->getQueryPrinter()->getLinker($i == 0))) !== false) { if ($first_value) { $first_value = false; } else { $wikitext .= ', '; } $wikitext .= $text; } } } // only add to title template if requested and if not hidden if ($titleTemplate !== null) { $wikitext .= "|#={$rownum}"; $data['title'] = trim($wgParser->recursiveTagParse('{{' . $titleTemplate . $wikitext . '}}')); $wgParser->replaceLinkHolders($data['title']); } $result->setData('calendar-view', $data); } }
public function __construct($id, &$results, &$params, SRFFiltered &$queryPrinter) { parent::__construct($id, $results, $params, $queryPrinter); $this->params = $params; }