function _loadResults($table_name, $switch_table, $ids, $columns = null) { $database = JFactory::getDBO(); $query = ''; JArrayHelper::toInteger($ids); if (!in_array($switch_table, array('characteristic'))) { foreach ($columns as $column) { hikashop_securefield($column); } } switch ($table_name) { case 'product': switch ($switch_table) { case 'price': $taxedPrice = false; $priceValue = false; foreach ($columns as $k => $column) { if ($column == 'price_value_with_tax') { unset($columns[$k]); $taxedPrice = true; } if ($column == 'price_value') { $priceValue = true; } } $addColumn = ''; if (!$priceValue && $taxedPrice) { if (count($columns) != 0) { $addColumn .= ', '; } $addColumn .= 'price_value'; } $query = 'SELECT ' . implode(',', $columns) . $addColumn . ', price_product_id, price_id'; $query .= ' FROM ' . hikashop_table('price'); $query .= ' WHERE price_product_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY price_id ASC'; if ($taxedPrice) { $productClass = hikashop_get('class.product'); $currencyHelper = hikashop_get('class.currency'); $productClass->getProducts($ids); $zone_id = hikashop_getZone(); $database->setQuery($query); $rows = $database->loadObjectList(); foreach ($rows as $k => $row) { if (isset($productClass->all_products[$row->price_product_id]) && $productClass->all_products[$row->price_product_id]->product_type == 'main') { $rows[$k]->price_value_with_tax = $currencyHelper->getTaxedPrice($row->price_value, $zone_id, $productClass->all_products[$row->price_product_id]->product_tax_id); } elseif (isset($productClass->all_products[$productClass->all_products[$row->price_product_id]->product_parent_id]->product_tax_id)) { $rows[$k]->price_value_with_tax = $currencyHelper->getTaxedPrice($row->price_value, $zone_id, $productClass->all_products[$productClass->all_products[$row->price_product_id]->product_parent_id]->product_tax_id); } else { $rows[$k]->price_value_with_tax = $rows[$k]->price_value; } if (!$priceValue) { unset($rows[$k]->price_value); } } $query = ''; return $rows; } break; case 'category': $query = 'SELECT c.' . implode(',c.', $columns) . ',pc.product_id,c.category_id'; $query .= ' FROM ' . hikashop_table('category') . ' AS c'; $query .= ' INNER JOIN ' . hikashop_table('product_category') . ' AS pc ON pc.category_id = c.category_id'; $query .= ' WHERE product_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY product_category_id'; break; case 'characteristic': $query = 'SELECT DISTINCT characteristic.characteristic_id,characteristic.characteristic_parent_id, characteristic.characteristic_value, variant.variant_product_id FROM ' . hikashop_table('characteristic') . ' AS characteristic '; $query .= ' LEFT JOIN ' . hikashop_table('variant') . ' AS variant ON characteristic.characteristic_id = variant.variant_characteristic_id'; $query .= ' WHERE variant_product_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY variant.ordering'; break; case 'related': $query = 'SELECT r.product_id ,p.product_id as \'related_id\',p.product_name, r.product_related_type'; $query .= ' FROM ' . hikashop_table('product_related') . ' AS r'; $query .= ' INNER JOIN ' . hikashop_table('product') . ' AS p ON r.product_related_id = p.product_id'; $query .= ' WHERE r.product_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY p.product_id ASC'; break; case 'files': $query = 'SELECT *'; $query .= ' FROM ' . hikashop_table('file'); $query .= ' WHERE file_ref_id IN (' . implode(',', $ids) . ') AND file_type = "file"'; $query .= ' ORDER BY file_ordering, file_ref_id ASC'; break; case 'images': $query = 'SELECT *'; $query .= ' FROM ' . hikashop_table('file'); $query .= ' WHERE file_ref_id IN (' . implode(',', $ids) . ') AND file_type = "product"'; $query .= ' ORDER BY file_ordering, file_ref_id ASC'; break; } break; case 'order': switch ($switch_table) { case 'order': $query = 'SELECT o.order_id,p.payment_name,p.payment_id,s.shipping_name,s.shipping_id'; $query .= ' FROM ' . hikashop_table('order') . ' as o'; $query .= ' LEFT JOIN ' . hikashop_table('shipping') . ' as s ON o.order_shipping_id = s.shipping_id'; $query .= ' LEFT JOIN ' . hikashop_table('payment') . ' as p ON o.order_payment_id = p.payment_id'; $query .= ' WHERE order_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY order_id ASC'; break; case 'order_product': $query = 'SELECT ' . implode(',', $columns) . ', order_product_id, order_id'; $query .= ' FROM ' . hikashop_table('order_product'); $query .= ' WHERE order_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY order_product_id ASC'; break; case 'address': foreach ($columns as $k => $column) { if (preg_match('#_state_#', $column)) { $columns[$k] = 'zone1.' . str_replace('_state', '', $column) . ' AS ' . $column; } elseif (preg_match('#_country_#', $column)) { $columns[$k] = 'zone2.' . str_replace('_country', '', $column) . ' AS ' . $column; } else { $columns[$k] = 'address.' . $column; } } $query = 'SELECT DISTINCT ' . implode(',', $columns) . ', address.address_id, order1.order_id'; $query .= ' FROM ' . hikashop_table('address') . ' AS address'; $query .= ' INNER JOIN ' . hikashop_table('order') . ' AS order1 ON address.address_id = order1.order_shipping_address_id OR address.address_id = order1.order_billing_address_id'; $query .= ' LEFT JOIN ' . hikashop_table('zone') . ' AS zone1 ON address.address_state = zone1.zone_namekey'; $query .= ' LEFT JOIN ' . hikashop_table('zone') . ' AS zone2 ON address.address_country = zone2.zone_namekey'; $query .= ' WHERE order1.order_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY address_id ASC'; break; case 'user': foreach ($columns as $k => $column) { $columns[$k] = 'user.' . $column; } $query = 'SELECT DISTINCT ' . implode(',', $columns) . ', user.user_id, user.user_cms_id'; $query .= ' FROM ' . hikashop_table('user') . ' AS user'; $query .= ' INNER JOIN ' . hikashop_table('order') . ' AS _order ON user.user_id = _order.order_user_id'; $query .= ' WHERE _order.order_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY user_id ASC'; break; case 'joomla_users': foreach ($columns as $k => $column) { $columns[$k] = 'user.' . $column; } $query = 'SELECT DISTINCT ' . implode(',', $columns) . ', user.id, hk_order.order_id'; $query .= ' FROM ' . hikashop_table('users', false) . ' AS user'; $query .= ' INNER JOIN ' . hikashop_table('user') . ' AS hk_user ON user.id = hk_user.user_cms_id'; $query .= ' INNER JOIN ' . hikashop_table('order') . ' AS hk_order ON hk_user.user_id = hk_order.order_user_id'; $query .= ' WHERE hk_order.order_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY id ASC'; break; } break; case 'user': switch ($switch_table) { case 'address': $query = 'SELECT ' . implode(',', $columns) . ', address_user_id, address_default, address_id'; $query .= ' FROM ' . hikashop_table('address'); $query .= ' WHERE address_user_id IN (' . implode(',', $ids) . ') AND address_published = 1'; $query .= ' ORDER BY address_default DESC, address_id DESC'; break; case 'joomla_users': foreach ($columns as $k => $column) { $columns[$k] = 'user.' . $column; } $query = 'SELECT DISTINCT ' . implode(',', $columns) . ', user.id as \'joomla_users_id\''; $query .= ' FROM ' . hikashop_table('users', false) . ' AS user'; $query .= ' INNER JOIN ' . hikashop_table('user') . ' AS hk_user ON user.id = hk_user.user_cms_id'; $query .= ' WHERE hk_user.user_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY id ASC'; break; case 'usergroups': $query = 'SELECT DISTINCT usergroups.title, hk_user.user_id, usergroups.id as \'usergroups_id\''; $query .= ' FROM ' . hikashop_table('usergroups', false) . ' AS usergroups'; $query .= ' INNER JOIN ' . hikashop_table('user_usergroup_map', false) . ' AS user_usergroup ON usergroups.id = user_usergroup.group_id'; $query .= ' INNER JOIN ' . hikashop_table('users', false) . ' AS user ON user.id = user_usergroup.user_id'; $query .= ' INNER JOIN ' . hikashop_table('user') . ' AS hk_user ON user.id = hk_user.user_cms_id'; $query .= ' WHERE hk_user.user_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY usergroups.id ASC'; break; } break; case 'address': switch ($switch_table) { case 'user': foreach ($columns as $k => $column) { $columns[$k] = 'user.' . $column; } $query = 'SELECT DISTINCT ' . implode(',', $columns) . ', user.user_id'; $query .= ' FROM ' . hikashop_table('user') . ' AS user'; $query .= ' INNER JOIN ' . hikashop_table('address') . ' AS address ON user.user_id = address.address_user_id'; $query .= ' WHERE address.address_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY user_id ASC'; break; case 'joomla_users': foreach ($columns as $k => $column) { $columns[$k] = 'user.' . $column; } $query = 'SELECT DISTINCT ' . implode(', ', $columns) . ', user.id as \'joomla_users_id\', hk_user.user_id'; $query .= ' FROM ' . hikashop_table('users', false) . ' AS user'; $query .= ' INNER JOIN ' . hikashop_table('user') . ' AS hk_user ON user.id = hk_user.user_cms_id'; $query .= ' INNER JOIN ' . hikashop_table('address') . ' AS address ON hk_user.user_id = address.address_user_id'; $query .= ' WHERE address.address_id IN (' . implode(',', $ids) . ')'; $query .= ' ORDER BY id ASC'; break; } break; } if (!empty($query)) { $database->setQuery($query); $rows = $database->loadObjectList(); return $rows; } }
function editcell() { $database = JFactory::getDBO(); if (isset($_POST['hikashop'])) { $query = ''; $hikashop = JRequest::getVar('hikashop', ''); $this->assignRef('type', $hikashop['type']); $this->assignRef('column', $hikashop['column']); $this->assignRef('table', $hikashop['table']); $this->assignRef('data', $hikashop['data']); $this->assignRef('data_id', $hikashop['dataid']); $this->assignRef('tab_id', $hikashop['tabid']); $types = hikashop_get('type.currency'); $this->assignRef('types', $types); $volume = hikashop_get('type.volume'); $this->assignRef('volume', $volume); $status = hikashop_get('type.categorysub'); $status->type = 'status'; $this->assignRef('status', $status); if (isset($hikashop['sub_type'])) { $this->assignRef('sub_type', $hikashop['sub_type']); } if (isset($hikashop['ids'])) { if (is_array($hikashop['ids'])) { $ids = $hikashop['ids']; } else { $ids[] = $hikashop['ids']; } $this->assignRef('ids', $ids); $data = $this->data; $data_id = $this->data_id; $table = $this->table; $column = $this->column; $type = $this->type; hikashop_securefield($table); hikashop_securefield($column); JArrayHelper::toInteger($ids); $this->assignRef('ids', $ids); if (!empty($ids)) { if (!isset($this->dispatcher)) { JPluginHelper::importPlugin('hikashop'); $this->dispatcher = JDispatcher::getInstance(); } $this->dispatcher->trigger('onLoadDatatMassActionBeforeEdition', array($data, $data_id, $table, $column, $type, $ids, &$query, &$this)); if (!empty($query)) { $database->setQuery($query); $rows = $database->loadObjectList(); $this->assignRef('rows', $rows); } } if (isset($hikashop['sub_type'])) { $this->type = $hikashop['sub_type']; } } } }