public function main() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('user/user'); $this->loadModel('user/user'); $this->loadModel('user/user_group'); $user_groups = array('' => $this->language->get('text_select_group')); $results = $this->model_user_user_group->getUserGroups(); foreach ($results as $r) { $user_groups[$r['user_group_id']] = $r['name']; } //Prepare filter config $filter_params = array('status', 'user_group_id'); $grid_filter_params = array('username'); //Build query string based on GET params first $filter_form = new AFilter(array('method' => 'get', 'filter_params' => $filter_params)); //Build final filter $filter_grid = new AFilter(array('method' => 'post', 'grid_filter_params' => $grid_filter_params, 'additional_filter_string' => $filter_form->getFilterString())); $total = $this->model_user_user->getTotalUsers($filter_grid->getFilterData()); $response = new stdClass(); $response->page = $filter_grid->getParam('page'); $response->total = $filter_grid->calcTotalPages($total); $response->records = $total; $results = $this->model_user_user->getUsers($filter_grid->getFilterData()); $i = 0; foreach ($results as $result) { $response->rows[$i]['id'] = $result['user_id']; $response->rows[$i]['cell'] = array($result['username'], $user_groups[$result['user_group_id']], $this->html->buildCheckbox(array('name' => 'status[' . $result['user_id'] . ']', 'value' => $result['status'], 'style' => 'btn_switch')), dateISO2Display($result['date_added'], $this->language->get('date_format_short'))); $i++; } //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); $this->load->library('json'); $this->response->setOutput(AJson::encode($response)); }
/** * @param array $data * @param int $language_id * @param null|int $attribute_parent_id * @param string $mode * @return array */ public function getAttributes($data = array(), $language_id = 0, $attribute_parent_id = null, $mode = 'default') { if (!$language_id) { $language_id = $this->session->data['content_language_id']; } //Prepare filter config $filter_params = array('attribute_parent_id', 'status'); if (!has_value($data['attribute_type_id'])) { $filter_params[] = 'attribute_type_id'; // to prevent ambigious fields in sql query } //Build query string based on GET params first $filter_form = new AFilter(array('method' => 'get', 'filter_params' => $filter_params)); //Build final filter $grid_filter_params = array('name' => 'gad.name', 'type_name' => 'gatd.type_name'); $filter_grid = new AFilter(array('method' => 'post', 'grid_filter_params' => $grid_filter_params, 'additional_filter_string' => $filter_form->getFilterString())); $filter_data = $filter_grid->getFilterData(); $data = array_merge($filter_data, $data); if ($mode == 'total_only') { $total_sql = 'count(*) as total'; } else { $total_sql = "ga.*, gad.name, gad.error_text, gatd.type_name "; } $sql = "SELECT " . $total_sql . "\n \tFROM `" . DB_PREFIX . "global_attributes` ga\n LEFT JOIN `" . DB_PREFIX . "global_attributes_descriptions` gad\n \tON ( ga.attribute_id = gad.attribute_id AND gad.language_id = '" . (int) $language_id . "' )\n\t\t\t\tLEFT JOIN `" . DB_PREFIX . "global_attributes_type_descriptions` gatd\n\t\t\t\t\tON ( gatd.attribute_type_id = ga.attribute_type_id AND gatd.language_id = '" . (int) $language_id . "' )\n\t\t\t\tWHERE 1=1 "; if (!empty($data['search'])) { $sql .= " AND " . $data['search']; } if (!empty($data['subsql_filter'])) { $sql .= " AND " . $data['subsql_filter']; } if (empty($data['search']) && !is_null($attribute_parent_id)) { $sql .= " AND ga.attribute_parent_id = '" . (int) $attribute_parent_id . "' "; } if (!empty($data['attribute_type_id'])) { $sql .= " AND ga.attribute_type_id = " . (int) $data['attribute_type_id']; } //If for total, we done bulding the query if ($mode == 'total_only') { $query = $this->db->query($sql); return $query->row['total']; } $sort_data = array('name' => 'gad.name', 'sort_order' => 'ga.sort_order', 'status' => 'ga.status', 'type_name' => 'gatd.type_name'); if (isset($data['sort']) && array_key_exists($data['sort'], $sort_data)) { $sql .= " ORDER BY " . $sort_data[$data['sort']]; } else { $sql .= " ORDER BY ga.sort_order, gad.name "; } if (isset($data['order']) && strtoupper($data['order']) == 'DESC') { $sql .= " DESC"; } else { $sql .= " ASC"; } if (has_value($data['start']) || has_value($data['limit'])) { if ($data['start'] < 0) { $data['start'] = 0; } if ($data['limit'] < 1) { $data['limit'] = 20; } $sql .= " LIMIT " . (int) $data['start'] . "," . (int) $data['limit']; } $query = $this->db->query($sql); return $query->rows; }
/** * @param array $data * @param string $mode * @return array|int */ public function getCoupons($data = array(), $mode = 'default') { if (!empty($data['content_language_id'])) { $language_id = (int) $data['content_language_id']; } else { $language_id = (int) $this->config->get('storefront_language_id'); } //Prepare filter config $filter_params = array('status' => 'c.status'); //Build query string based on GET params first $filter_form = new AFilter(array('method' => 'get', 'filter_params' => $filter_params)); //Build final filter $grid_filter_params = array('name' => 'cd.name', 'code' => 'c.code'); $filter_grid = new AFilter(array('method' => 'post', 'grid_filter_params' => $grid_filter_params, 'additional_filter_string' => $filter_form->getFilterString())); $data = array_merge($filter_grid->getFilterData(), $data); if ($mode == 'total_only') { $total_sql = 'count(*) as total'; } else { $total_sql = "c.coupon_id, cd.name, c.code, c.discount, c.date_start, c.date_end, c.status "; } $sql = "SELECT " . $total_sql . " \n\t\t\t\tFROM " . $this->db->table("coupons") . " c\n\t\t\t\tJOIN " . $this->db->table("coupon_descriptions") . " cd\n\t\t\t\t\tON (c.coupon_id = cd.coupon_id AND cd.language_id = '" . $language_id . "')"; if (!empty($data['search'])) { $sql .= " AND " . $data['search']; } if (!empty($data['subsql_filter'])) { $sql .= " AND " . $data['subsql_filter']; } //If for total, we done bulding the query if ($mode == 'total_only') { $query = $this->db->query($sql); return $query->row['total']; } $sort_data = array('name' => 'cd.name', 'code' => 'c.code', 'discount' => 'c.discount', 'date_start' => 'c.date_start', 'date_end' => 'c.date_end', 'status' => 'c.status'); if (isset($data['sort']) && array_key_exists($data['sort'], $sort_data)) { $sql .= " ORDER BY " . $sort_data[$data['sort']]; } else { $sql .= " ORDER BY cd.name"; } if (isset($data['order']) && strtoupper($data['order']) == 'DESC') { $sql .= " DESC"; } else { $sql .= " ASC"; } if (isset($data['start']) || isset($data['limit'])) { if ($data['start'] < 0) { $data['start'] = 0; } if ($data['limit'] < 1) { $data['limit'] = 20; } $sql .= " LIMIT " . (int) $data['start'] . "," . (int) $data['limit']; } $query = $this->db->query($sql); return $query->rows; }