Exemple #1
0
 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;
     }
 }
Exemple #2
0
 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'];
             }
         }
     }
 }