From 37e3b9e9e4ea963327f460667db69c6c936c12f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Gaillard?= Date: Fri, 30 Aug 2013 11:13:30 +0200 Subject: [PATCH] [-] WS: 404 error should be returned if a multishop entity does not exists #PSCFV-10229 --- classes/webservice/WebserviceRequest.php | 56 ++++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/classes/webservice/WebserviceRequest.php b/classes/webservice/WebserviceRequest.php index 39ca28043..2e82a980c 100644 --- a/classes/webservice/WebserviceRequest.php +++ b/classes/webservice/WebserviceRequest.php @@ -1260,40 +1260,40 @@ class WebserviceRequestCore if (!isset($this->urlFragments['display'])) $this->fieldsToDisplay = 'full'; - // Check if Object is accessible for this/those id_shop - $assoc = Shop::getAssoTable($this->resourceConfiguration['retrieveData']['table']); - if ($assoc !== false) - { - $check_shop_group = false; - - $sql = 'SELECT 1 - FROM `'.bqSQL(_DB_PREFIX_.$this->resourceConfiguration['retrieveData']['table']); - if ($assoc['type'] != 'fk_shop') - $sql .= '_'.$assoc['type']; - else - { - $def = ObjectModel::getDefinition($this->resourceConfiguration['retrieveData']['className']); - if (isset($def['fields']) && isset($def['fields']['id_shop_group'])) - $check_shop_group = true; - } - $sql .= '`'; - - foreach (self::$shopIDs as $id_shop) - $OR[] = ' (id_shop = '.(int)$id_shop.($check_shop_group ? ' OR (id_shop = 0 AND id_shop_group='.(int)Shop::getGroupFromShop((int)$id_shop).')' : '').') '; - - $check = ' WHERE ('.implode('OR', $OR).') AND `'.bqSQL($this->resourceConfiguration['fields']['id']['sqlId']).'` = '.(int)$this->urlSegment[1]; - if (!Db::getInstance()->getValue($sql.$check)) - $this->setError(403, 'Bad id_shop : You are not allowed to access this '.$this->resourceConfiguration['retrieveData']['className'].' ('.(int)$this->urlSegment[1].')', 131); - } - //get entity details $object = new $this->resourceConfiguration['retrieveData']['className']((int)$this->urlSegment[1]); if ($object->id) { $objects[] = $object; - return $objects; + // Check if Object is accessible for this/those id_shop + $assoc = Shop::getAssoTable($this->resourceConfiguration['retrieveData']['table']); + if ($assoc !== false) + { + $check_shop_group = false; + + $sql = 'SELECT 1 + FROM `'.bqSQL(_DB_PREFIX_.$this->resourceConfiguration['retrieveData']['table']); + if ($assoc['type'] != 'fk_shop') + $sql .= '_'.$assoc['type']; + else + { + $def = ObjectModel::getDefinition($this->resourceConfiguration['retrieveData']['className']); + if (isset($def['fields']) && isset($def['fields']['id_shop_group'])) + $check_shop_group = true; + } + $sql .= '`'; + + foreach (self::$shopIDs as $id_shop) + $OR[] = ' (id_shop = '.(int)$id_shop.($check_shop_group ? ' OR (id_shop = 0 AND id_shop_group='.(int)Shop::getGroupFromShop((int)$id_shop).')' : '').') '; + + $check = ' WHERE ('.implode('OR', $OR).') AND `'.bqSQL($this->resourceConfiguration['fields']['id']['sqlId']).'` = '.(int)$this->urlSegment[1]; + if (!Db::getInstance()->getValue($sql.$check)) + $this->setError(403, 'Bad id_shop : You are not allowed to access this '.$this->resourceConfiguration['retrieveData']['className'].' ('.(int)$this->urlSegment[1].')', 131); + else + return $objects; + } } - elseif (!count($this->errors)) + if (!count($this->errors)) { $this->objOutput->setStatus(404); $this->_outputEnabled = false;