[-] WS: Fix webservices on some entities with multishop #PSCFV-3460

This commit is contained in:
rGaillard
2012-08-09 15:15:59 +00:00
parent d1cd10ec17
commit e346e42f9e
2 changed files with 23 additions and 18 deletions
+14 -8
View File
@@ -1015,18 +1015,24 @@ abstract class ObjectModelCore
public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit)
{
$assoc = Shop::getAssoTable($this->def['table']);
if ($assoc !== false)
$class_name = WebserviceRequest::$ws_current_classname;
$vars = get_class_vars($class_name);
if ($assoc !== false && $assoc['type'] !== 'fk_shop')
{
$multi_shop_join = ' LEFT JOIN `'._DB_PREFIX_.bqSQL($this->def['table']).'_'.bqSQL($assoc['type']).'`
AS multi_shop_'.bqSQL($this->def['table']).'
ON (main.'.bqSQL($this->def['primary']).' = multi_shop_'.bqSQL($this->def['table']).'.'.bqSQL($this->def['primary']).')';
$class_name = WebserviceRequest::$ws_current_classname;
AS `multi_shop_'.bqSQL($this->def['table']).'`
ON (main.`'.bqSQL($this->def['primary']).'` = `multi_shop_'.bqSQL($this->def['table']).'`.`'.bqSQL($this->def['primary']).'`)';
foreach ($vars['shopIDs'] as $id_shop)
$or[] = ' `multi_shop_'.bqSQL($this->def['table']).'`.id_shop = '.(int)$id_shop.' ';
$sql_filter = ' AND ('.implode('OR', $or).') '.$sql_filter;
$sql_join = $multi_shop_join.' '.$sql_join;
}
else
{
$vars = get_class_vars($class_name);
foreach ($vars['shopIDs'] as $id_shop)
$or[] = ' multi_shop_'.bqSQL($this->def['table']).'.id_shop = '.(int)$id_shop.' ';
$multi_shop_filter = ' AND ('.implode('OR', $or).') ';
$sql_filter = $multi_shop_filter.' '.$sql_filter;
$sql_join = $multi_shop_join.' '.$sql_join;
$or[] = ' main.id_shop = '.(int)$id_shop.' ';
$sql_filter = ' AND ('.implode('OR', $or).') '.$sql_filter;
}
$query = '
SELECT DISTINCT main.`'.bqSQL($this->def['primary']).'` FROM `'._DB_PREFIX_.bqSQL($this->def['table']).'` AS main