function renderOutput($context = array()) { if (!$this->getOption('service') || !$this->getOption('template')) { return false; } require_once 'lib/webservicelib.php'; if (!($webservice = Tiki_Webservice::getService($this->getOption('service'))) || !($template = $webservice->getTemplate($this->getOption('template')))) { return false; } $oldValue = $this->getValue(); if (is_string($oldValue)) { $oldData = json_decode($oldValue, true); } else { $oldData = []; } $cacheSeconds = $this->getOption('cacheSeconds'); $lastRefreshed = empty($oldData) ? 0 : strtotime($oldData['tiki_updated']); if (!$cacheSeconds || TikiLib::lib('tiki')->now > $lastRefreshed + $cacheSeconds) { $ws_params = array(); $definition = $this->getTrackerDefinition(); if ($this->getOption('params')) { parse_str($this->getOption('params'), $ws_params); foreach ($ws_params as $ws_param_name => &$ws_param_value) { if (preg_match('/(.*)%(.*)%(.*)/', $ws_param_value, $matches)) { $ws_param_field_name = $matches[2]; $field = $definition->getField($ws_param_field_name); if (!$field) { $field = $definition->getFieldFromName($ws_param_field_name); } if ($field) { $itemData = $this->getItemData(); if (isset($itemData[$field['fieldId']])) { $value = TikiLib::lib('trk')->get_field_value($field, $itemData); } else { $itemUser = ''; $value = TikiLib::lib('trk')->get_item_fields($definition->getConfiguration('trackerId'), $itemData['itemId'], [$field], $itemUser); $value = isset($value[0]['value']) ? $value[0]['value'] : ''; } $ws_params[$ws_param_name] = preg_replace('/%' . $ws_param_field_name . '%/', $value, $ws_param_value); } } } } $response = $webservice->performRequest($ws_params); $response->data['tiki_updated'] = gmdate('c'); if (empty($context['search_render']) || $context['search_render'] !== 'y') { $thisField = $definition->getField($this->getConfiguration('fieldId')); $thisField['value'] = json_encode($response->data); $itemId = TikiLib::lib('trk')->replace_item($definition->getConfiguration('trackerId'), $this->getItemId(), ['data' => [$thisField]]); if (!$itemId) { TikiLib::lib('errorreport')->report(tr('Error updating Webservice field %0', $this->getConfiguration('permName'))); // try and restore previous data $response->data = json_decode($this->getValue()); } } } else { $response = OIntegrate_Response::create($oldData, false); unlink($template->getTemplateFile()); $template = $webservice->getTemplate($this->getOption('template')); } $output = $template->render($response, 'html'); return $output; }
/** * @param OIntegrate_Response $response * @param $outputContext * @return mixed|string */ function render(OIntegrate_Response $response, $outputContext) { return $response->render($this->engine, $this->output, $outputContext, $this->getTemplateFile()); }
} if ($access->is_serializable_request()) { if (isset($_REQUEST['listonly']) && ($prefs['feature_jquery'] == 'y' && $prefs['feature_jquery_autocomplete'] == 'y')) { $pages = array(); foreach ($listpages['data'] as $page) { $pages[] = $page['pageName']; } $access->output_serialized($pages); } else { $pages = array(); require_once 'lib/wiki/wikilib.php'; foreach ($listpages['data'] as $page) { $pages[] = array('page_id' => $page['page_id'], 'page_name' => $page['pageName'], 'url' => $wikilib->sefurl($page['pageName']), 'version' => $page['version'], 'description' => $page['description'], 'last_modif' => date('Y-m-d H:i:s', $page['lastModif']), 'last_author' => $page['user'], 'creator' => $page['creator'], 'creation_date' => date('Y-m-d H:i:s', $page['created']), 'lang' => $page['lang']); } require_once 'lib/ointegratelib.php'; $response = OIntegrate_Response::create(array('list' => $pages), '1.0'); $response->addTemplate('smarty', 'tikiwiki', 'files/templates/listpages/smarty-tikiwiki-1.0-shortlist.txt'); $response->schemaDocumentation = 'http://dev.tiki.org/WebserviceListpages'; $response->send(); } } else { // Display the template $smarty->assign('mid', $listpages_orphans ? 'tiki-orphan_pages.tpl' : 'tiki-listpages.tpl'); $smarty->display('tiki.tpl'); } } /** * @param $filter * @return mixed */ function setLangFilter($filter)