From: <jon...@us...> - 2016-12-08 18:36:01
|
Revision: 60573 http://sourceforge.net/p/tikiwiki/code/60573 Author: jonnybradley Date: 2016-12-08 18:35:59 +0000 (Thu, 08 Dec 2016) Log Message: ----------- [MRG] Automatic merge, branches/16.x 60569 to 60571 Modified Paths: -------------- trunk/lib/core/Tracker/Field/WebService.php trunk/lib/ointegratelib.php Property Changed: ---------------- trunk/ Index: trunk =================================================================== --- trunk 2016-12-08 18:34:08 UTC (rev 60572) +++ trunk 2016-12-08 18:35:59 UTC (rev 60573) Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -4,7 +4,7 ## /branches/13.x:51407-53060,53145,53192,53882 /branches/14.x:54079-56796,57357,57370,57375 /branches/15.x:57416-57449,57459,57461-59163,59319,59349,59355,59358,59362,59420,59696,59710,59880,60046 -/branches/16.x:59883-60406,60408,60410,60420,60428-60569 +/branches/16.x:59883-60406,60408,60410,60420,60428-60571 /branches/3.0:16998-18916 /branches/4.x:22817-23908 /branches/5.x:26025-26523,26527-28378 \ No newline at end of property Modified: trunk/lib/core/Tracker/Field/WebService.php =================================================================== --- trunk/lib/core/Tracker/Field/WebService.php 2016-12-08 18:34:08 UTC (rev 60572) +++ trunk/lib/core/Tracker/Field/WebService.php 2016-12-08 18:35:59 UTC (rev 60573) @@ -66,16 +66,23 @@ function renderOutput($context = array()) { - if (!$this->getOption('service') || !$this->getOption('template')) { + $name = $this->getOption('service'); + $tpl = $this->getOption('template'); + + if (!$name || !$tpl) { return false; } require_once 'lib/webservicelib.php'; - if (!($webservice = Tiki_Webservice::getService($this->getOption('service'))) || - !($template = $webservice->getTemplate($this->getOption('template'))) ) { - return false; + if (!($webservice = Tiki_Webservice::getService($name))) { + Feedback::error(tr('Webservice %0 not found', $name), 'session'); + return false; } + if (! $template = $webservice->getTemplate($tpl)) { + Feedback::error(tr('Webservice template %0 not found', $tpl), 'session'); + return false; + } $oldValue = $this->getValue(); if (is_string($oldValue)) { @@ -129,9 +136,32 @@ $response = $webservice->performRequest($ws_params); - $response->data['tiki_updated'] = gmdate('c'); + // deal with various types of error coming from different types of webservice + $error = ''; + if ($response->errors) { + $error = implode(',', $response->errors); + } else if (! empty($response->data['error'])) { + if (isset($response->data['error']['message'])) { + $error = $response->data['error']['message']; // e.g. facebook graph api + } else { + $error = $response->data['error']; + } + } else if (isset($response->data['status']) && $response->data['status'] !== 'OK') { + $error = $response->data['status']; // e.g. google places api + } else if (!empty($response->data['hasErrors'])) { + if (!empty($response->data['errorCode'])) { // others + $error = tr('Unknown webservice error (code: %0)', $response->data['errorCode']); + } else { + $error = tr('Unknown webservice error'); + } + } + if ($error) { + Feedback::error($error, 'session'); - if ((empty($context['search_render']) || $context['search_render'] !== 'y') && ($response->data['status'] === 'OK' || $response->data['hasErrors'] === false)) { + } else if (empty($context['search_render']) || $context['search_render'] !== 'y') { + + $response->data['tiki_updated'] = gmdate('c'); + $thisField = $definition->getField($this->getConfiguration('fieldId')); $thisField['value'] = json_encode($response->data); @@ -153,10 +183,9 @@ if (! $itemId) { $response = OIntegrate_Response::create($oldData, false); unlink($template->getTemplateFile()); - $template = $webservice->getTemplate($this->getOption('template')); + $template = $webservice->getTemplate($tpl); } - $output = $template->render($response, 'html'); return $output; @@ -172,7 +201,7 @@ } else if (isset($value['data'])) { $value = $value['data']; } else { - $value = []; + unset($value['tiki_updated']); // index the whole response } return array( Modified: trunk/lib/ointegratelib.php =================================================================== --- trunk/lib/ointegratelib.php 2016-12-08 18:34:08 UTC (rev 60572) +++ trunk/lib/ointegratelib.php 2016-12-08 18:35:59 UTC (rev 60573) @@ -220,9 +220,8 @@ public $contentType = null; public $cacheControl = null; public $data; + public $errors = array(); - private $errors = array(); - /** * @param $data * @param $schemaVersion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |