diff options
author | Jesús <heckyel@hyperbola.info> | 2019-08-18 21:14:58 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2019-08-18 21:14:58 -0500 |
commit | 2eed7b082f83630301e51f57ca8394de228a8605 (patch) | |
tree | 1d19962d22d30f99317d9276e4bae7744fc93fc2 /public/admin/controller/customer | |
download | librecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.lz librecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.xz librecart-2eed7b082f83630301e51f57ca8394de228a8605.zip |
first commit
Diffstat (limited to 'public/admin/controller/customer')
-rw-r--r-- | public/admin/controller/customer/custom_field.php | 498 | ||||
-rw-r--r-- | public/admin/controller/customer/customer.php | 1490 | ||||
-rw-r--r-- | public/admin/controller/customer/customer_approval.php | 246 | ||||
-rw-r--r-- | public/admin/controller/customer/customer_group.php | 378 |
4 files changed, 2612 insertions, 0 deletions
diff --git a/public/admin/controller/customer/custom_field.php b/public/admin/controller/customer/custom_field.php new file mode 100644 index 0000000..54703ff --- /dev/null +++ b/public/admin/controller/customer/custom_field.php @@ -0,0 +1,498 @@ +<?php +class ControllerCustomerCustomField extends Controller { + private $error = array(); + + public function index() { + $this->load->language('customer/custom_field'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/custom_field'); + + $this->getList(); + } + + public function add() { + $this->load->language('customer/custom_field'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/custom_field'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_custom_field->addCustomField($this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function edit() { + $this->load->language('customer/custom_field'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/custom_field'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_custom_field->editCustomField($this->request->get['custom_field_id'], $this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function delete() { + $this->load->language('customer/custom_field'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/custom_field'); + + if (isset($this->request->post['selected']) && $this->validateDelete()) { + foreach ($this->request->post['selected'] as $custom_field_id) { + $this->model_customer_custom_field->deleteCustomField($custom_field_id); + } + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getList(); + } + + protected function getList() { + if (isset($this->request->get['sort'])) { + $sort = $this->request->get['sort']; + } else { + $sort = 'cfd.name'; + } + + if (isset($this->request->get['order'])) { + $order = $this->request->get['order']; + } else { + $order = 'ASC'; + } + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + $data['add'] = $this->url->link('customer/custom_field/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + $data['delete'] = $this->url->link('customer/custom_field/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); + + $data['custom_fields'] = array(); + + $filter_data = array( + 'sort' => $sort, + 'order' => $order, + 'start' => ($page - 1) * $this->config->get('config_limit_admin'), + 'limit' => $this->config->get('config_limit_admin') + ); + + $custom_field_total = $this->model_customer_custom_field->getTotalCustomFields(); + + $results = $this->model_customer_custom_field->getCustomFields($filter_data); + + foreach ($results as $result) { + $type = ''; + + switch ($result['type']) { + case 'select': + $type = $this->language->get('text_select'); + break; + case 'radio': + $type = $this->language->get('text_radio'); + break; + case 'checkbox': + $type = $this->language->get('text_checkbox'); + break; + case 'input': + $type = $this->language->get('text_input'); + break; + case 'text': + $type = $this->language->get('text_text'); + break; + case 'textarea': + $type = $this->language->get('text_textarea'); + break; + case 'file': + $type = $this->language->get('text_file'); + break; + case 'date': + $type = $this->language->get('text_date'); + break; + case 'datetime': + $type = $this->language->get('text_datetime'); + break; + case 'time': + $type = $this->language->get('text_time'); + break; + } + + $data['custom_fields'][] = array( + 'custom_field_id' => $result['custom_field_id'], + 'name' => $result['name'], + 'location' => $this->language->get('text_' . $result['location']), + 'type' => $type, + 'status' => $result['status'], + 'sort_order' => $result['sort_order'], + 'edit' => $this->url->link('customer/custom_field/edit', 'user_token=' . $this->session->data['user_token'] . '&custom_field_id=' . $result['custom_field_id'] . $url, true) + ); + } + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->session->data['success'])) { + $data['success'] = $this->session->data['success']; + + unset($this->session->data['success']); + } else { + $data['success'] = ''; + } + + if (isset($this->request->post['selected'])) { + $data['selected'] = (array)$this->request->post['selected']; + } else { + $data['selected'] = array(); + } + + $url = ''; + + if ($order == 'ASC') { + $url .= '&order=DESC'; + } else { + $url .= '&order=ASC'; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['sort_name'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . '&sort=cfd.name' . $url, true); + $data['sort_location'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . '&sort=cf.location' . $url, true); + $data['sort_type'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . '&sort=cf.type' . $url, true); + $data['sort_status'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . '&sort=cf.status' . $url, true); + $data['sort_sort_order'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . '&sort=cf.sort_order' . $url, true); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + $pagination = new Pagination(); + $pagination->total = $custom_field_total; + $pagination->page = $page; + $pagination->limit = $this->config->get('config_limit_admin'); + $pagination->url = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($custom_field_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($custom_field_total - $this->config->get('config_limit_admin'))) ? $custom_field_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $custom_field_total, ceil($custom_field_total / $this->config->get('config_limit_admin'))); + + $data['sort'] = $sort; + $data['order'] = $order; + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/custom_field_list', $data)); + } + + protected function getForm() { + $data['text_form'] = !isset($this->request->get['custom_field_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->error['name'])) { + $data['error_name'] = $this->error['name']; + } else { + $data['error_name'] = array(); + } + + if (isset($this->error['custom_field_value'])) { + $data['error_custom_field_value'] = $this->error['custom_field_value']; + } else { + $data['error_custom_field_value'] = array(); + } + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + if (!isset($this->request->get['custom_field_id'])) { + $data['action'] = $this->url->link('customer/custom_field/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + } else { + $data['action'] = $this->url->link('customer/custom_field/edit', 'user_token=' . $this->session->data['user_token'] . '&custom_field_id=' . $this->request->get['custom_field_id'] . $url, true); + } + + $data['cancel'] = $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'] . $url, true); + + if (isset($this->request->get['custom_field_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { + $custom_field_info = $this->model_customer_custom_field->getCustomField($this->request->get['custom_field_id']); + } + + $data['user_token'] = $this->session->data['user_token']; + + $this->load->model('localisation/language'); + + $data['languages'] = $this->model_localisation_language->getLanguages(); + + if (isset($this->request->post['custom_field_description'])) { + $data['custom_field_description'] = $this->request->post['custom_field_description']; + } elseif (isset($this->request->get['custom_field_id'])) { + $data['custom_field_description'] = $this->model_customer_custom_field->getCustomFieldDescriptions($this->request->get['custom_field_id']); + } else { + $data['custom_field_description'] = array(); + } + + if (isset($this->request->post['location'])) { + $data['location'] = $this->request->post['location']; + } elseif (!empty($custom_field_info)) { + $data['location'] = $custom_field_info['location']; + } else { + $data['location'] = ''; + } + + if (isset($this->request->post['type'])) { + $data['type'] = $this->request->post['type']; + } elseif (!empty($custom_field_info)) { + $data['type'] = $custom_field_info['type']; + } else { + $data['type'] = ''; + } + + if (isset($this->request->post['value'])) { + $data['value'] = $this->request->post['value']; + } elseif (!empty($custom_field_info)) { + $data['value'] = $custom_field_info['value']; + } else { + $data['value'] = ''; + } + + if (isset($this->request->post['validation'])) { + $data['validation'] = $this->request->post['validation']; + } elseif (!empty($custom_field_info)) { + $data['validation'] = $custom_field_info['validation']; + } else { + $data['validation'] = ''; + } + + if (isset($this->request->post['status'])) { + $data['status'] = $this->request->post['status']; + } elseif (!empty($custom_field_info)) { + $data['status'] = $custom_field_info['status']; + } else { + $data['status'] = ''; + } + + if (isset($this->request->post['sort_order'])) { + $data['sort_order'] = $this->request->post['sort_order']; + } elseif (!empty($custom_field_info)) { + $data['sort_order'] = $custom_field_info['sort_order']; + } else { + $data['sort_order'] = ''; + } + + if (isset($this->request->post['custom_field_value'])) { + $custom_field_values = $this->request->post['custom_field_value']; + } elseif (isset($this->request->get['custom_field_id'])) { + $custom_field_values = $this->model_customer_custom_field->getCustomFieldValueDescriptions($this->request->get['custom_field_id']); + } else { + $custom_field_values = array(); + } + + $data['custom_field_values'] = array(); + + foreach ($custom_field_values as $custom_field_value) { + $data['custom_field_values'][] = array( + 'custom_field_value_id' => $custom_field_value['custom_field_value_id'], + 'custom_field_value_description' => $custom_field_value['custom_field_value_description'], + 'sort_order' => $custom_field_value['sort_order'] + ); + } + + if (isset($this->request->post['custom_field_customer_group'])) { + $custom_field_customer_groups = $this->request->post['custom_field_customer_group']; + } elseif (isset($this->request->get['custom_field_id'])) { + $custom_field_customer_groups = $this->model_customer_custom_field->getCustomFieldCustomerGroups($this->request->get['custom_field_id']); + } else { + $custom_field_customer_groups = array(); + } + + $data['custom_field_customer_group'] = array(); + + foreach ($custom_field_customer_groups as $custom_field_customer_group) { + $data['custom_field_customer_group'][] = $custom_field_customer_group['customer_group_id']; + } + + $data['custom_field_required'] = array(); + + foreach ($custom_field_customer_groups as $custom_field_customer_group) { + if ($custom_field_customer_group['required']) { + $data['custom_field_required'][] = $custom_field_customer_group['customer_group_id']; + } + } + + $this->load->model('customer/customer_group'); + + $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/custom_field_form', $data)); + } + + protected function validateForm() { + if (!$this->user->hasPermission('modify', 'customer/custom_field')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + foreach ($this->request->post['custom_field_description'] as $language_id => $value) { + if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 128)) { + $this->error['name'][$language_id] = $this->language->get('error_name'); + } + } + + if (($this->request->post['type'] == 'select' || $this->request->post['type'] == 'radio' || $this->request->post['type'] == 'checkbox')) { + if (!isset($this->request->post['custom_field_value'])) { + $this->error['warning'] = $this->language->get('error_type'); + } + + if (isset($this->request->post['custom_field_value'])) { + foreach ($this->request->post['custom_field_value'] as $custom_field_value_id => $custom_field_value) { + foreach ($custom_field_value['custom_field_value_description'] as $language_id => $custom_field_value_description) { + if ((utf8_strlen($custom_field_value_description['name']) < 1) || (utf8_strlen($custom_field_value_description['name']) > 128)) { + $this->error['custom_field_value'][$custom_field_value_id][$language_id] = $this->language->get('error_custom_value'); + } + } + } + } + } + + return !$this->error; + } + + protected function validateDelete() { + if (!$this->user->hasPermission('modify', 'customer/custom_field')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + return !$this->error; + } +}
\ No newline at end of file diff --git a/public/admin/controller/customer/customer.php b/public/admin/controller/customer/customer.php new file mode 100644 index 0000000..07617ca --- /dev/null +++ b/public/admin/controller/customer/customer.php @@ -0,0 +1,1490 @@ +<?php +class ControllerCustomerCustomer extends Controller { + private $error = array(); + + public function index() { + $this->load->language('customer/customer'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer'); + + $this->getList(); + } + + public function add() { + $this->load->language('customer/customer'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_customer->addCustomer($this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function edit() { + $this->load->language('customer/customer'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_customer->editCustomer($this->request->get['customer_id'], $this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function delete() { + $this->load->language('customer/customer'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer'); + + if (isset($this->request->post['selected']) && $this->validateDelete()) { + foreach ($this->request->post['selected'] as $customer_id) { + $this->model_customer_customer->deleteCustomer($customer_id); + } + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getList(); + } + + public function unlock() { + $this->load->language('customer/customer'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer'); + + if (isset($this->request->get['email']) && $this->validateUnlock()) { + $this->model_customer_customer->deleteLoginAttempts($this->request->get['email']); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getList(); + } + + protected function getList() { + if (isset($this->request->get['filter_name'])) { + $filter_name = $this->request->get['filter_name']; + } else { + $filter_name = ''; + } + + if (isset($this->request->get['filter_email'])) { + $filter_email = $this->request->get['filter_email']; + } else { + $filter_email = ''; + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $filter_customer_group_id = $this->request->get['filter_customer_group_id']; + } else { + $filter_customer_group_id = ''; + } + + if (isset($this->request->get['filter_status'])) { + $filter_status = $this->request->get['filter_status']; + } else { + $filter_status = ''; + } + + if (isset($this->request->get['filter_ip'])) { + $filter_ip = $this->request->get['filter_ip']; + } else { + $filter_ip = ''; + } + + if (isset($this->request->get['filter_date_added'])) { + $filter_date_added = $this->request->get['filter_date_added']; + } else { + $filter_date_added = ''; + } + + if (isset($this->request->get['sort'])) { + $sort = $this->request->get['sort']; + } else { + $sort = 'name'; + } + + if (isset($this->request->get['order'])) { + $order = $this->request->get['order']; + } else { + $order = 'ASC'; + } + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + $data['add'] = $this->url->link('customer/customer/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + $data['delete'] = $this->url->link('customer/customer/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); + + $this->load->model('setting/store'); + + $stores = $this->model_setting_store->getStores(); + + $data['customers'] = array(); + + $filter_data = array( + 'filter_name' => $filter_name, + 'filter_email' => $filter_email, + 'filter_customer_group_id' => $filter_customer_group_id, + 'filter_status' => $filter_status, + 'filter_date_added' => $filter_date_added, + 'filter_ip' => $filter_ip, + 'sort' => $sort, + 'order' => $order, + 'start' => ($page - 1) * $this->config->get('config_limit_admin'), + 'limit' => $this->config->get('config_limit_admin') + ); + + $customer_total = $this->model_customer_customer->getTotalCustomers($filter_data); + + $results = $this->model_customer_customer->getCustomers($filter_data); + + foreach ($results as $result) { + $login_info = $this->model_customer_customer->getTotalLoginAttempts($result['email']); + + if ($login_info && $login_info['total'] >= $this->config->get('config_login_attempts')) { + $unlock = $this->url->link('customer/customer/unlock', 'user_token=' . $this->session->data['user_token'] . '&email=' . $result['email'] . $url, true); + } else { + $unlock = ''; + } + + $store_data = array(); + + $store_data[] = array( + 'name' => $this->config->get('config_name'), + 'href' => $this->url->link('customer/customer/login', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . '&store_id=0', true) + ); + + foreach ($stores as $store) { + $store_data[] = array( + 'name' => $store['name'], + 'href' => $this->url->link('customer/customer/login', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . '&store_id=' . $result['store_id'], true) + ); + } + + $data['customers'][] = array( + 'customer_id' => $result['customer_id'], + 'name' => $result['name'], + 'email' => $result['email'], + 'customer_group' => $result['customer_group'], + 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), + 'ip' => $result['ip'], + 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), + 'unlock' => $unlock, + 'store' => $store_data, + 'edit' => $this->url->link('customer/customer/edit', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . $url, true) + ); + } + + $data['user_token'] = $this->session->data['user_token']; + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->session->data['success'])) { + $data['success'] = $this->session->data['success']; + + unset($this->session->data['success']); + } else { + $data['success'] = ''; + } + + if (isset($this->request->post['selected'])) { + $data['selected'] = (array)$this->request->post['selected']; + } else { + $data['selected'] = array(); + } + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if ($order == 'ASC') { + $url .= '&order=DESC'; + } else { + $url .= '&order=ASC'; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['sort_name'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=name' . $url, true); + $data['sort_email'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=c.email' . $url, true); + $data['sort_customer_group'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=customer_group' . $url, true); + $data['sort_status'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=c.status' . $url, true); + $data['sort_ip'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=c.ip' . $url, true); + $data['sort_date_added'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&sort=c.date_added' . $url, true); + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + $pagination = new Pagination(); + $pagination->total = $customer_total; + $pagination->page = $page; + $pagination->limit = $this->config->get('config_limit_admin'); + $pagination->url = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($customer_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($customer_total - $this->config->get('config_limit_admin'))) ? $customer_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $customer_total, ceil($customer_total / $this->config->get('config_limit_admin'))); + + $data['filter_name'] = $filter_name; + $data['filter_email'] = $filter_email; + $data['filter_customer_group_id'] = $filter_customer_group_id; + $data['filter_status'] = $filter_status; + $data['filter_ip'] = $filter_ip; + $data['filter_date_added'] = $filter_date_added; + + $this->load->model('customer/customer_group'); + + $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); + + $data['sort'] = $sort; + $data['order'] = $order; + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/customer_list', $data)); + } + + protected function getForm() { + $data['text_form'] = !isset($this->request->get['customer_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); + + $data['user_token'] = $this->session->data['user_token']; + + if (isset($this->request->get['customer_id'])) { + $data['customer_id'] = $this->request->get['customer_id']; + } else { + $data['customer_id'] = 0; + } + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->error['firstname'])) { + $data['error_firstname'] = $this->error['firstname']; + } else { + $data['error_firstname'] = ''; + } + + if (isset($this->error['lastname'])) { + $data['error_lastname'] = $this->error['lastname']; + } else { + $data['error_lastname'] = ''; + } + + if (isset($this->error['email'])) { + $data['error_email'] = $this->error['email']; + } else { + $data['error_email'] = ''; + } + + if (isset($this->error['telephone'])) { + $data['error_telephone'] = $this->error['telephone']; + } else { + $data['error_telephone'] = ''; + } + + if (isset($this->error['cheque'])) { + $data['error_cheque'] = $this->error['cheque']; + } else { + $data['error_cheque'] = ''; + } + + if (isset($this->error['paypal'])) { + $data['error_paypal'] = $this->error['paypal']; + } else { + $data['error_paypal'] = ''; + } + + if (isset($this->error['bank_account_name'])) { + $data['error_bank_account_name'] = $this->error['bank_account_name']; + } else { + $data['error_bank_account_name'] = ''; + } + + if (isset($this->error['bank_account_number'])) { + $data['error_bank_account_number'] = $this->error['bank_account_number']; + } else { + $data['error_bank_account_number'] = ''; + } + + if (isset($this->error['password'])) { + $data['error_password'] = $this->error['password']; + } else { + $data['error_password'] = ''; + } + + if (isset($this->error['confirm'])) { + $data['error_confirm'] = $this->error['confirm']; + } else { + $data['error_confirm'] = ''; + } + + if (isset($this->error['custom_field'])) { + $data['error_custom_field'] = $this->error['custom_field']; + } else { + $data['error_custom_field'] = array(); + } + + if (isset($this->error['address'])) { + $data['error_address'] = $this->error['address']; + } else { + $data['error_address'] = array(); + } + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_status'])) { + $url .= '&filter_status=' . $this->request->get['filter_status']; + } + + if (isset($this->request->get['filter_ip'])) { + $url .= '&filter_ip=' . $this->request->get['filter_ip']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + if (!isset($this->request->get['customer_id'])) { + $data['action'] = $this->url->link('customer/customer/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + } else { + $data['action'] = $this->url->link('customer/customer/edit', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $this->request->get['customer_id'] . $url, true); + } + + $data['cancel'] = $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . $url, true); + + if (isset($this->request->get['customer_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { + $customer_info = $this->model_customer_customer->getCustomer($this->request->get['customer_id']); + } + + $this->load->model('customer/customer_group'); + + $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); + + if (isset($this->request->post['customer_group_id'])) { + $data['customer_group_id'] = $this->request->post['customer_group_id']; + } elseif (!empty($customer_info)) { + $data['customer_group_id'] = $customer_info['customer_group_id']; + } else { + $data['customer_group_id'] = $this->config->get('config_customer_group_id'); + } + + if (isset($this->request->post['firstname'])) { + $data['firstname'] = $this->request->post['firstname']; + } elseif (!empty($customer_info)) { + $data['firstname'] = $customer_info['firstname']; + } else { + $data['firstname'] = ''; + } + + if (isset($this->request->post['lastname'])) { + $data['lastname'] = $this->request->post['lastname']; + } elseif (!empty($customer_info)) { + $data['lastname'] = $customer_info['lastname']; + } else { + $data['lastname'] = ''; + } + + if (isset($this->request->post['email'])) { + $data['email'] = $this->request->post['email']; + } elseif (!empty($customer_info)) { + $data['email'] = $customer_info['email']; + } else { + $data['email'] = ''; + } + + if (isset($this->request->post['telephone'])) { + $data['telephone'] = $this->request->post['telephone']; + } elseif (!empty($customer_info)) { + $data['telephone'] = $customer_info['telephone']; + } else { + $data['telephone'] = ''; + } + + // Custom Fields + $this->load->model('customer/custom_field'); + + $data['custom_fields'] = array(); + + $filter_data = array( + 'sort' => 'cf.sort_order', + 'order' => 'ASC' + ); + + $custom_fields = $this->model_customer_custom_field->getCustomFields($filter_data); + + foreach ($custom_fields as $custom_field) { + $data['custom_fields'][] = array( + 'custom_field_id' => $custom_field['custom_field_id'], + 'custom_field_value' => $this->model_customer_custom_field->getCustomFieldValues($custom_field['custom_field_id']), + 'name' => $custom_field['name'], + 'value' => $custom_field['value'], + 'type' => $custom_field['type'], + 'location' => $custom_field['location'], + 'sort_order' => $custom_field['sort_order'] + ); + } + + if (isset($this->request->post['custom_field'])) { + $data['account_custom_field'] = $this->request->post['custom_field']; + } elseif (!empty($customer_info)) { + $data['account_custom_field'] = json_decode($customer_info['custom_field'], true); + } else { + $data['account_custom_field'] = array(); + } + + if (isset($this->request->post['newsletter'])) { + $data['newsletter'] = $this->request->post['newsletter']; + } elseif (!empty($customer_info)) { + $data['newsletter'] = $customer_info['newsletter']; + } else { + $data['newsletter'] = ''; + } + + if (isset($this->request->post['status'])) { + $data['status'] = $this->request->post['status']; + } elseif (!empty($customer_info)) { + $data['status'] = $customer_info['status']; + } else { + $data['status'] = true; + } + + if (isset($this->request->post['safe'])) { + $data['safe'] = $this->request->post['safe']; + } elseif (!empty($customer_info)) { + $data['safe'] = $customer_info['safe']; + } else { + $data['safe'] = 0; + } + + if (isset($this->request->post['password'])) { + $data['password'] = $this->request->post['password']; + } else { + $data['password'] = ''; + } + + if (isset($this->request->post['confirm'])) { + $data['confirm'] = $this->request->post['confirm']; + } else { + $data['confirm'] = ''; + } + + $this->load->model('localisation/country'); + + $data['countries'] = $this->model_localisation_country->getCountries(); + + if (isset($this->request->post['address'])) { + $data['addresses'] = $this->request->post['address']; + } elseif (isset($this->request->get['customer_id'])) { + $data['addresses'] = $this->model_customer_customer->getAddresses($this->request->get['customer_id']); + } else { + $data['addresses'] = array(); + } + + if (isset($this->request->post['address_id'])) { + $data['address_id'] = $this->request->post['address_id']; + } elseif (!empty($customer_info)) { + $data['address_id'] = $customer_info['address_id']; + } else { + $data['address_id'] = ''; + } + + // Affliate + if (isset($this->request->get['customer_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { + $affiliate_info = $this->model_customer_customer->getAffiliate($this->request->get['customer_id']); + } + + if (isset($this->request->post['affiliate'])) { + $data['affiliate'] = $this->request->post['affiliate']; + } elseif (!empty($affiliate_info)) { + $data['affiliate'] = $affiliate_info['status']; + } else { + $data['affiliate'] = ''; + } + + if (isset($this->request->post['company'])) { + $data['company'] = $this->request->post['company']; + } elseif (!empty($affiliate_info)) { + $data['company'] = $affiliate_info['company']; + } else { + $data['company'] = ''; + } + + if (isset($this->request->post['website'])) { + $data['website'] = $this->request->post['website']; + } elseif (!empty($affiliate_info)) { + $data['website'] = $affiliate_info['website']; + } else { + $data['website'] = ''; + } + + if (isset($this->request->post['tracking'])) { + $data['tracking'] = $this->request->post['tracking']; + } elseif (!empty($affiliate_info)) { + $data['tracking'] = $affiliate_info['tracking']; + } else { + $data['tracking'] = ''; + } + + if (isset($this->request->post['commission'])) { + $data['commission'] = $this->request->post['commission']; + } elseif (!empty($affiliate_info)) { + $data['commission'] = $affiliate_info['commission']; + } else { + $data['commission'] = $this->config->get('config_affiliate_commission'); + } + + if (isset($this->request->post['tax'])) { + $data['tax'] = $this->request->post['tax']; + } elseif (!empty($affiliate_info)) { + $data['tax'] = $affiliate_info['tax']; + } else { + $data['tax'] = ''; + } + + if (isset($this->request->post['payment'])) { + $data['payment'] = $this->request->post['payment']; + } elseif (!empty($affiliate_info)) { + $data['payment'] = $affiliate_info['payment']; + } else { + $data['payment'] = 'cheque'; + } + + if (isset($this->request->post['cheque'])) { + $data['cheque'] = $this->request->post['cheque']; + } elseif (!empty($affiliate_info)) { + $data['cheque'] = $affiliate_info['cheque']; + } else { + $data['cheque'] = ''; + } + + if (isset($this->request->post['paypal'])) { + $data['paypal'] = $this->request->post['paypal']; + } elseif (!empty($affiliate_info)) { + $data['paypal'] = $affiliate_info['paypal']; + } else { + $data['paypal'] = ''; + } + + if (isset($this->request->post['bank_name'])) { + $data['bank_name'] = $this->request->post['bank_name']; + } elseif (!empty($affiliate_info)) { + $data['bank_name'] = $affiliate_info['bank_name']; + } else { + $data['bank_name'] = ''; + } + + if (isset($this->request->post['bank_branch_number'])) { + $data['bank_branch_number'] = $this->request->post['bank_branch_number']; + } elseif (!empty($affiliate_info)) { + $data['bank_branch_number'] = $affiliate_info['bank_branch_number']; + } else { + $data['bank_branch_number'] = ''; + } + + if (isset($this->request->post['bank_swift_code'])) { + $data['bank_swift_code'] = $this->request->post['bank_swift_code']; + } elseif (!empty($affiliate_info)) { + $data['bank_swift_code'] = $affiliate_info['bank_swift_code']; + } else { + $data['bank_swift_code'] = ''; + } + + if (isset($this->request->post['bank_account_name'])) { + $data['bank_account_name'] = $this->request->post['bank_account_name']; + } elseif (!empty($affiliate_info)) { + $data['bank_account_name'] = $affiliate_info['bank_account_name']; + } else { + $data['bank_account_name'] = ''; + } + + if (isset($this->request->post['bank_account_number'])) { + $data['bank_account_number'] = $this->request->post['bank_account_number']; + } elseif (!empty($affiliate_info)) { + $data['bank_account_number'] = $affiliate_info['bank_account_number']; + } else { + $data['bank_account_number'] = ''; + } + + if (isset($this->request->post['custom_field'])) { + $data['affiliate_custom_field'] = $this->request->post['custom_field']; + } elseif (!empty($affiliate_info)) { + $data['affiliate_custom_field'] = json_decode($affiliate_info['custom_field'], true); + } else { + $data['affiliate_custom_field'] = array(); + } + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/customer_form', $data)); + } + + protected function validateForm() { + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + if ((utf8_strlen($this->request->post['firstname']) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32)) { + $this->error['firstname'] = $this->language->get('error_firstname'); + } + + if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) { + $this->error['lastname'] = $this->language->get('error_lastname'); + } + + if ((utf8_strlen($this->request->post['email']) > 96) || !filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL)) { + $this->error['email'] = $this->language->get('error_email'); + } + + $customer_info = $this->model_customer_customer->getCustomerByEmail($this->request->post['email']); + + if (!isset($this->request->get['customer_id'])) { + if ($customer_info) { + $this->error['warning'] = $this->language->get('error_exists'); + } + } else { + if ($customer_info && ($this->request->get['customer_id'] != $customer_info['customer_id'])) { + $this->error['warning'] = $this->language->get('error_exists'); + } + } + + if ((utf8_strlen($this->request->post['telephone']) < 3) || (utf8_strlen($this->request->post['telephone']) > 32)) { + $this->error['telephone'] = $this->language->get('error_telephone'); + } + + // Custom field validation + $this->load->model('customer/custom_field'); + + $custom_fields = $this->model_customer_custom_field->getCustomFields(array('filter_customer_group_id' => $this->request->post['customer_group_id'])); + + foreach ($custom_fields as $custom_field) { + if (($custom_field['location'] == 'account') && $custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['custom_field_id']])) { + $this->error['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } elseif (($custom_field['location'] == 'account') && ($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($this->request->post['custom_field'][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) { + $this->error['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } + } + + if ($this->request->post['password'] || (!isset($this->request->get['customer_id']))) { + if ((utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) < 4) || (utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) > 40)) { + $this->error['password'] = $this->language->get('error_password'); + } + + if ($this->request->post['password'] != $this->request->post['confirm']) { + $this->error['confirm'] = $this->language->get('error_confirm'); + } + } + + if (isset($this->request->post['address'])) { + foreach ($this->request->post['address'] as $key => $value) { + if ((utf8_strlen($value['firstname']) < 1) || (utf8_strlen($value['firstname']) > 32)) { + $this->error['address'][$key]['firstname'] = $this->language->get('error_firstname'); + } + + if ((utf8_strlen($value['lastname']) < 1) || (utf8_strlen($value['lastname']) > 32)) { + $this->error['address'][$key]['lastname'] = $this->language->get('error_lastname'); + } + + if ((utf8_strlen($value['address_1']) < 3) || (utf8_strlen($value['address_1']) > 128)) { + $this->error['address'][$key]['address_1'] = $this->language->get('error_address_1'); + } + + if ((utf8_strlen($value['city']) < 2) || (utf8_strlen($value['city']) > 128)) { + $this->error['address'][$key]['city'] = $this->language->get('error_city'); + } + + $this->load->model('localisation/country'); + + $country_info = $this->model_localisation_country->getCountry($value['country_id']); + + if ($country_info && $country_info['postcode_required'] && (utf8_strlen($value['postcode']) < 2 || utf8_strlen($value['postcode']) > 10)) { + $this->error['address'][$key]['postcode'] = $this->language->get('error_postcode'); + } + + if ($value['country_id'] == '') { + $this->error['address'][$key]['country'] = $this->language->get('error_country'); + } + + if (!isset($value['zone_id']) || $value['zone_id'] == '') { + $this->error['address'][$key]['zone'] = $this->language->get('error_zone'); + } + + foreach ($custom_fields as $custom_field) { + if (($custom_field['location'] == 'address') && $custom_field['required'] && empty($value['custom_field'][$custom_field['custom_field_id']])) { + $this->error['address'][$key]['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } elseif (($custom_field['location'] == 'address') && ($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($value['custom_field'][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) { + $this->error['address'][$key]['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } + } + } + } + + if ($this->request->post['affiliate']) { + if ($this->request->post['payment'] == 'cheque') { + if ($this->request->post['cheque'] == '') { + $this->error['cheque'] = $this->language->get('error_cheque'); + } + } elseif ($this->request->post['payment'] == 'paypal') { + if ((utf8_strlen($this->request->post['paypal']) > 96) || !filter_var($this->request->post['paypal'], FILTER_VALIDATE_EMAIL)) { + $this->error['paypal'] = $this->language->get('error_paypal'); + } + } elseif ($this->request->post['payment'] == 'bank') { + if ($this->request->post['bank_account_name'] == '') { + $this->error['bank_account_name'] = $this->language->get('error_bank_account_name'); + } + + if ($this->request->post['bank_account_number'] == '') { + $this->error['bank_account_number'] = $this->language->get('error_bank_account_number'); + } + } + + if (!$this->request->post['tracking']) { + $this->error['tracking'] = $this->language->get('error_tracking'); + } + + $affiliate_info = $this->model_customer_customer->getAffliateByTracking($this->request->post['tracking']); + + if (!isset($this->request->get['customer_id'])) { + if ($affiliate_info) { + $this->error['tracking'] = $this->language->get('error_tracking_exists'); + } + } else { + if ($affiliate_info && ($this->request->get['customer_id'] != $affiliate_info['customer_id'])) { + $this->error['tracking'] = $this->language->get('error_tracking_exists'); + } + } + + foreach ($custom_fields as $custom_field) { + if (($custom_field['location'] == 'affiliate') && $custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['custom_field_id']])) { + $this->error['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } elseif (($custom_field['location'] == 'affiliate') && ($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($this->request->post['custom_field'][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) { + $this->error['custom_field'][$custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']); + } + } + } + + if ($this->error && !isset($this->error['warning'])) { + $this->error['warning'] = $this->language->get('error_warning'); + } + + return !$this->error; + } + + protected function validateDelete() { + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + return !$this->error; + } + + protected function validateUnlock() { + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + return !$this->error; + } + + public function login() { + if (isset($this->request->get['customer_id'])) { + $customer_id = $this->request->get['customer_id']; + } else { + $customer_id = 0; + } + + $this->load->model('customer/customer'); + + $customer_info = $this->model_customer_customer->getCustomer($customer_id); + + if ($customer_info) { + // Create token to login with + $token = token(64); + + $this->model_customer_customer->editToken($customer_id, $token); + + if (isset($this->request->get['store_id'])) { + $store_id = $this->request->get['store_id']; + } else { + $store_id = 0; + } + + $this->load->model('setting/store'); + + $store_info = $this->model_setting_store->getStore($store_id); + + if ($store_info) { + $this->response->redirect($store_info['url'] . 'index.php?route=account/login&token=' . $token); + } else { + $this->response->redirect(HTTP_CATALOG . 'index.php?route=account/login&token=' . $token); + } + } else { + $this->load->language('error/not_found'); + + $this->document->setTitle($this->language->get('heading_title')); + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('error/not_found', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('error/not_found', $data)); + } + } + + public function history() { + $this->load->language('customer/customer'); + + $this->load->model('customer/customer'); + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $data['histories'] = array(); + + $results = $this->model_customer_customer->getHistories($this->request->get['customer_id'], ($page - 1) * 10, 10); + + foreach ($results as $result) { + $data['histories'][] = array( + 'comment' => $result['comment'], + 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) + ); + } + + $history_total = $this->model_customer_customer->getTotalHistories($this->request->get['customer_id']); + + $pagination = new Pagination(); + $pagination->total = $history_total; + $pagination->page = $page; + $pagination->limit = 10; + $pagination->url = $this->url->link('customer/customer/history', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $this->request->get['customer_id'] . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($history_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($history_total - 10)) ? $history_total : ((($page - 1) * 10) + 10), $history_total, ceil($history_total / 10)); + + $this->response->setOutput($this->load->view('customer/customer_history', $data)); + } + + public function addHistory() { + $this->load->language('customer/customer'); + + $json = array(); + + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $json['error'] = $this->language->get('error_permission'); + } else { + $this->load->model('customer/customer'); + + $this->model_customer_customer->addHistory($this->request->get['customer_id'], $this->request->post['comment']); + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function transaction() { + $this->load->language('customer/customer'); + + $this->load->model('customer/customer'); + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $data['transactions'] = array(); + + $results = $this->model_customer_customer->getTransactions($this->request->get['customer_id'], ($page - 1) * 10, 10); + + foreach ($results as $result) { + $data['transactions'][] = array( + 'amount' => $this->currency->format($result['amount'], $this->config->get('config_currency')), + 'description' => $result['description'], + 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) + ); + } + + $data['balance'] = $this->currency->format($this->model_customer_customer->getTransactionTotal($this->request->get['customer_id']), $this->config->get('config_currency')); + + $transaction_total = $this->model_customer_customer->getTotalTransactions($this->request->get['customer_id']); + + $pagination = new Pagination(); + $pagination->total = $transaction_total; + $pagination->page = $page; + $pagination->limit = 10; + $pagination->url = $this->url->link('customer/customer/transaction', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $this->request->get['customer_id'] . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($transaction_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($transaction_total - 10)) ? $transaction_total : ((($page - 1) * 10) + 10), $transaction_total, ceil($transaction_total / 10)); + + $this->response->setOutput($this->load->view('customer/customer_transaction', $data)); + } + + public function addTransaction() { + $this->load->language('customer/customer'); + + $json = array(); + + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $json['error'] = $this->language->get('error_permission'); + } else { + $this->load->model('customer/customer'); + + $this->model_customer_customer->addTransaction($this->request->get['customer_id'], $this->request->post['description'], $this->request->post['amount']); + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function reward() { + $this->load->language('customer/customer'); + + $this->load->model('customer/customer'); + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $data['rewards'] = array(); + + $results = $this->model_customer_customer->getRewards($this->request->get['customer_id'], ($page - 1) * 10, 10); + + foreach ($results as $result) { + $data['rewards'][] = array( + 'points' => $result['points'], + 'description' => $result['description'], + 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) + ); + } + + $data['balance'] = $this->model_customer_customer->getRewardTotal($this->request->get['customer_id']); + + $reward_total = $this->model_customer_customer->getTotalRewards($this->request->get['customer_id']); + + $pagination = new Pagination(); + $pagination->total = $reward_total; + $pagination->page = $page; + $pagination->limit = 10; + $pagination->url = $this->url->link('customer/customer/reward', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $this->request->get['customer_id'] . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($reward_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($reward_total - 10)) ? $reward_total : ((($page - 1) * 10) + 10), $reward_total, ceil($reward_total / 10)); + + $this->response->setOutput($this->load->view('customer/customer_reward', $data)); + } + + public function addReward() { + $this->load->language('customer/customer'); + + $json = array(); + + if (!$this->user->hasPermission('modify', 'customer/customer')) { + $json['error'] = $this->language->get('error_permission'); + } else { + $this->load->model('customer/customer'); + + $this->model_customer_customer->addReward($this->request->get['customer_id'], $this->request->post['description'], $this->request->post['points']); + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function ip() { + $this->load->language('customer/customer'); + + $this->load->model('customer/customer'); + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $data['ips'] = array(); + + $results = $this->model_customer_customer->getIps($this->request->get['customer_id'], ($page - 1) * 10, 10); + + foreach ($results as $result) { + $data['ips'][] = array( + 'ip' => $result['ip'], + 'total' => $this->model_customer_customer->getTotalCustomersByIp($result['ip']), + 'date_added' => date('d/m/y', strtotime($result['date_added'])), + 'filter_ip' => $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&filter_ip=' . $result['ip'], true) + ); + } + + $ip_total = $this->model_customer_customer->getTotalIps($this->request->get['customer_id']); + + $pagination = new Pagination(); + $pagination->total = $ip_total; + $pagination->page = $page; + $pagination->limit = 10; + $pagination->url = $this->url->link('customer/customer/ip', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $this->request->get['customer_id'] . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($ip_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($ip_total - 10)) ? $ip_total : ((($page - 1) * 10) + 10), $ip_total, ceil($ip_total / 10)); + + $this->response->setOutput($this->load->view('customer/customer_ip', $data)); + } + + public function autocomplete() { + $json = array(); + + if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_email'])) { + if (isset($this->request->get['filter_name'])) { + $filter_name = $this->request->get['filter_name']; + } else { + $filter_name = ''; + } + + if (isset($this->request->get['filter_email'])) { + $filter_email = $this->request->get['filter_email']; + } else { + $filter_email = ''; + } + + if (isset($this->request->get['filter_affiliate'])) { + $filter_affiliate = $this->request->get['filter_affiliate']; + } else { + $filter_affiliate = ''; + } + + $this->load->model('customer/customer'); + + $filter_data = array( + 'filter_name' => $filter_name, + 'filter_email' => $filter_email, + 'filter_affiliate' => $filter_affiliate, + 'start' => 0, + 'limit' => 5 + ); + + $results = $this->model_customer_customer->getCustomers($filter_data); + + foreach ($results as $result) { + $json[] = array( + 'customer_id' => $result['customer_id'], + 'customer_group_id' => $result['customer_group_id'], + 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), + 'customer_group' => $result['customer_group'], + 'firstname' => $result['firstname'], + 'lastname' => $result['lastname'], + 'email' => $result['email'], + 'telephone' => $result['telephone'], + 'custom_field' => json_decode($result['custom_field'], true), + 'address' => $this->model_customer_customer->getAddresses($result['customer_id']) + ); + } + } + + $sort_order = array(); + + foreach ($json as $key => $value) { + $sort_order[$key] = $value['name']; + } + + array_multisort($sort_order, SORT_ASC, $json); + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function customfield() { + $json = array(); + + $this->load->model('customer/custom_field'); + + // Customer Group + if (isset($this->request->get['customer_group_id'])) { + $customer_group_id = $this->request->get['customer_group_id']; + } else { + $customer_group_id = $this->config->get('config_customer_group_id'); + } + + $custom_fields = $this->model_customer_custom_field->getCustomFields(array('filter_customer_group_id' => $customer_group_id)); + + foreach ($custom_fields as $custom_field) { + $json[] = array( + 'custom_field_id' => $custom_field['custom_field_id'], + 'required' => empty($custom_field['required']) || $custom_field['required'] == 0 ? false : true + ); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function address() { + $json = array(); + + if (!empty($this->request->get['address_id'])) { + $this->load->model('customer/customer'); + + $json = $this->model_customer_customer->getAddress($this->request->get['address_id']); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } +}
\ No newline at end of file diff --git a/public/admin/controller/customer/customer_approval.php b/public/admin/controller/customer/customer_approval.php new file mode 100644 index 0000000..3d083db --- /dev/null +++ b/public/admin/controller/customer/customer_approval.php @@ -0,0 +1,246 @@ +<?php +class ControllerCustomerCustomerApproval extends Controller { + public function index() { + $this->load->language('customer/customer_approval'); + + $this->document->setTitle($this->language->get('heading_title')); + + if (isset($this->request->get['filter_name'])) { + $filter_name = $this->request->get['filter_name']; + } else { + $filter_name = ''; + } + + if (isset($this->request->get['filter_email'])) { + $filter_email = $this->request->get['filter_email']; + } else { + $filter_email = ''; + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $filter_customer_group_id = $this->request->get['filter_customer_group_id']; + } else { + $filter_customer_group_id = ''; + } + + if (isset($this->request->get['filter_type'])) { + $filter_type = $this->request->get['filter_type']; + } else { + $filter_type = ''; + } + + if (isset($this->request->get['filter_date_added'])) { + $filter_date_added = $this->request->get['filter_date_added']; + } else { + $filter_date_added = ''; + } + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_type'])) { + $url .= '&filter_type=' . $this->request->get['filter_type']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/customer_approval', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['filter_name'] = $filter_name; + $data['filter_email'] = $filter_email; + $data['filter_customer_group_id'] = $filter_customer_group_id; + $data['filter_type'] = $filter_type; + $data['filter_date_added'] = $filter_date_added; + + $data['user_token'] = $this->session->data['user_token']; + + $this->load->model('customer/customer_group'); + + $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/customer_approval', $data)); + } + + public function customer_approval() { + $this->load->language('customer/customer_approval'); + + if (isset($this->request->get['filter_name'])) { + $filter_name = $this->request->get['filter_name']; + } else { + $filter_name = ''; + } + + if (isset($this->request->get['filter_email'])) { + $filter_email = $this->request->get['filter_email']; + } else { + $filter_email = ''; + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $filter_customer_group_id = $this->request->get['filter_customer_group_id']; + } else { + $filter_customer_group_id = ''; + } + + if (isset($this->request->get['filter_type'])) { + $filter_type = $this->request->get['filter_type']; + } else { + $filter_type = ''; + } + + if (isset($this->request->get['filter_date_added'])) { + $filter_date_added = $this->request->get['filter_date_added']; + } else { + $filter_date_added = ''; + } + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $data['customer_approvals'] = array(); + + $filter_data = array( + 'filter_name' => $filter_name, + 'filter_email' => $filter_email, + 'filter_customer_group_id' => $filter_customer_group_id, + 'filter_type' => $filter_type, + 'filter_date_added' => $filter_date_added, + 'start' => ($page - 1) * $this->config->get('config_limit_admin'), + 'limit' => $this->config->get('config_limit_admin') + ); + + $this->load->model('customer/customer_approval'); + + $customer_approval_total = $this->model_customer_customer_approval->getTotalCustomerApprovals($filter_data); + + $results = $this->model_customer_customer_approval->getCustomerApprovals($filter_data); + + foreach ($results as $result) { + $data['customer_approvals'][] = array( + 'customer_id' => $result['customer_id'], + 'name' => $result['name'], + 'email' => $result['email'], + 'customer_group' => $result['customer_group'], + 'type' => $this->language->get('text_' . $result['type']), + 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), + 'approve' => $this->url->link('customer/customer_approval/approve', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . '&type=' . $result['type'], true), + 'deny' => $this->url->link('customer/customer_approval/deny', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . '&type=' . $result['type'], true), + 'edit' => $this->url->link('customer/customer/edit', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'], true) + ); + } + + $url = ''; + + if (isset($this->request->get['filter_name'])) { + $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_email'])) { + $url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8')); + } + + if (isset($this->request->get['filter_customer_group_id'])) { + $url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id']; + } + + if (isset($this->request->get['filter_type'])) { + $url .= '&filter_type=' . $this->request->get['filter_type']; + } + + if (isset($this->request->get['filter_date_added'])) { + $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; + } + + $pagination = new Pagination(); + $pagination->total = $customer_approval_total; + $pagination->page = $page; + $pagination->limit = $this->config->get('config_limit_admin'); + $pagination->url = $this->url->link('customer/customer_approval/customer_approval', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($customer_approval_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($customer_approval_total - $this->config->get('config_limit_admin'))) ? $customer_approval_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $customer_approval_total, ceil($customer_approval_total / $this->config->get('config_limit_admin'))); + + $this->response->setOutput($this->load->view('customer/customer_approval_list', $data)); + } + + public function approve() { + $this->load->language('customer/customer_approval'); + + $json = array(); + + if (!$this->user->hasPermission('modify', 'customer/customer_approval')) { + $json['error'] = $this->language->get('error_permission'); + } else { + $this->load->model('customer/customer_approval'); + + if ($this->request->get['type'] == 'customer') { + $this->model_customer_customer_approval->approveCustomer($this->request->get['customer_id']); + } elseif ($this->request->get['type'] == 'affiliate') { + $this->model_customer_customer_approval->approveAffiliate($this->request->get['customer_id']); + } + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + + public function deny() { + $this->load->language('customer/customer_approval'); + + $json = array(); + + if (!$this->user->hasPermission('modify', 'customer/customer_approval')) { + $json['error'] = $this->language->get('error_permission'); + } else { + $this->load->model('customer/customer_approval'); + + if ($this->request->get['type'] == 'customer') { + $this->model_customer_customer_approval->denyCustomer($this->request->get['customer_id']); + } elseif ($this->request->get['type'] == 'affiliate') { + $this->model_customer_customer_approval->denyAffiliate($this->request->get['customer_id']); + } + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } +}
\ No newline at end of file diff --git a/public/admin/controller/customer/customer_group.php b/public/admin/controller/customer/customer_group.php new file mode 100644 index 0000000..c446ead --- /dev/null +++ b/public/admin/controller/customer/customer_group.php @@ -0,0 +1,378 @@ +<?php +class ControllerCustomerCustomerGroup extends Controller { + private $error = array(); + + public function index() { + $this->load->language('customer/customer_group'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer_group'); + + $this->getList(); + } + + public function add() { + $this->load->language('customer/customer_group'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer_group'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_customer_group->addCustomerGroup($this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function edit() { + $this->load->language('customer/customer_group'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer_group'); + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { + $this->model_customer_customer_group->editCustomerGroup($this->request->get['customer_group_id'], $this->request->post); + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getForm(); + } + + public function delete() { + $this->load->language('customer/customer_group'); + + $this->document->setTitle($this->language->get('heading_title')); + + $this->load->model('customer/customer_group'); + + if (isset($this->request->post['selected']) && $this->validateDelete()) { + foreach ($this->request->post['selected'] as $customer_group_id) { + $this->model_customer_customer_group->deleteCustomerGroup($customer_group_id); + } + + $this->session->data['success'] = $this->language->get('text_success'); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $this->response->redirect($this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true)); + } + + $this->getList(); + } + + protected function getList() { + if (isset($this->request->get['sort'])) { + $sort = $this->request->get['sort']; + } else { + $sort = 'cgd.name'; + } + + if (isset($this->request->get['order'])) { + $order = $this->request->get['order']; + } else { + $order = 'ASC'; + } + + if (isset($this->request->get['page'])) { + $page = $this->request->get['page']; + } else { + $page = 1; + } + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + $data['add'] = $this->url->link('customer/customer_group/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + $data['delete'] = $this->url->link('customer/customer_group/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); + + $data['customer_groups'] = array(); + + $filter_data = array( + 'sort' => $sort, + 'order' => $order, + 'start' => ($page - 1) * $this->config->get('config_limit_admin'), + 'limit' => $this->config->get('config_limit_admin') + ); + + $customer_group_total = $this->model_customer_customer_group->getTotalCustomerGroups(); + + $results = $this->model_customer_customer_group->getCustomerGroups($filter_data); + + foreach ($results as $result) { + $data['customer_groups'][] = array( + 'customer_group_id' => $result['customer_group_id'], + 'name' => $result['name'] . (($result['customer_group_id'] == $this->config->get('config_customer_group_id')) ? $this->language->get('text_default') : null), + 'sort_order' => $result['sort_order'], + 'edit' => $this->url->link('customer/customer_group/edit', 'user_token=' . $this->session->data['user_token'] . '&customer_group_id=' . $result['customer_group_id'] . $url, true) + ); + } + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->session->data['success'])) { + $data['success'] = $this->session->data['success']; + + unset($this->session->data['success']); + } else { + $data['success'] = ''; + } + + if (isset($this->request->post['selected'])) { + $data['selected'] = (array)$this->request->post['selected']; + } else { + $data['selected'] = array(); + } + + $url = ''; + + if ($order == 'ASC') { + $url .= '&order=DESC'; + } else { + $url .= '&order=ASC'; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['sort_name'] = $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . '&sort=cgd.name' . $url, true); + $data['sort_sort_order'] = $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . '&sort=cg.sort_order' . $url, true); + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + $pagination = new Pagination(); + $pagination->total = $customer_group_total; + $pagination->page = $page; + $pagination->limit = $this->config->get('config_limit_admin'); + $pagination->url = $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); + + $data['pagination'] = $pagination->render(); + + $data['results'] = sprintf($this->language->get('text_pagination'), ($customer_group_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($customer_group_total - $this->config->get('config_limit_admin'))) ? $customer_group_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $customer_group_total, ceil($customer_group_total / $this->config->get('config_limit_admin'))); + + $data['sort'] = $sort; + $data['order'] = $order; + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/customer_group_list', $data)); + } + + protected function getForm() { + $data['text_form'] = !isset($this->request->get['customer_group_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); + + if (isset($this->error['warning'])) { + $data['error_warning'] = $this->error['warning']; + } else { + $data['error_warning'] = ''; + } + + if (isset($this->error['name'])) { + $data['error_name'] = $this->error['name']; + } else { + $data['error_name'] = array(); + } + + $url = ''; + + if (isset($this->request->get['sort'])) { + $url .= '&sort=' . $this->request->get['sort']; + } + + if (isset($this->request->get['order'])) { + $url .= '&order=' . $this->request->get['order']; + } + + if (isset($this->request->get['page'])) { + $url .= '&page=' . $this->request->get['page']; + } + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ); + + $data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true) + ); + + if (!isset($this->request->get['customer_group_id'])) { + $data['action'] = $this->url->link('customer/customer_group/add', 'user_token=' . $this->session->data['user_token'] . $url, true); + } else { + $data['action'] = $this->url->link('customer/customer_group/edit', 'user_token=' . $this->session->data['user_token'] . '&customer_group_id=' . $this->request->get['customer_group_id'] . $url, true); + } + + $data['cancel'] = $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'] . $url, true); + + if (isset($this->request->get['customer_group_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { + $customer_group_info = $this->model_customer_customer_group->getCustomerGroup($this->request->get['customer_group_id']); + } + + $this->load->model('localisation/language'); + + $data['languages'] = $this->model_localisation_language->getLanguages(); + + if (isset($this->request->post['customer_group_description'])) { + $data['customer_group_description'] = $this->request->post['customer_group_description']; + } elseif (isset($this->request->get['customer_group_id'])) { + $data['customer_group_description'] = $this->model_customer_customer_group->getCustomerGroupDescriptions($this->request->get['customer_group_id']); + } else { + $data['customer_group_description'] = array(); + } + + if (isset($this->request->post['approval'])) { + $data['approval'] = $this->request->post['approval']; + } elseif (!empty($customer_group_info)) { + $data['approval'] = $customer_group_info['approval']; + } else { + $data['approval'] = ''; + } + + if (isset($this->request->post['sort_order'])) { + $data['sort_order'] = $this->request->post['sort_order']; + } elseif (!empty($customer_group_info)) { + $data['sort_order'] = $customer_group_info['sort_order']; + } else { + $data['sort_order'] = ''; + } + + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + + $this->response->setOutput($this->load->view('customer/customer_group_form', $data)); + } + + protected function validateForm() { + if (!$this->user->hasPermission('modify', 'customer/customer_group')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + foreach ($this->request->post['customer_group_description'] as $language_id => $value) { + if ((utf8_strlen($value['name']) < 3) || (utf8_strlen($value['name']) > 32)) { + $this->error['name'][$language_id] = $this->language->get('error_name'); + } + } + + return !$this->error; + } + + protected function validateDelete() { + if (!$this->user->hasPermission('modify', 'customer/customer_group')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + $this->load->model('setting/store'); + $this->load->model('customer/customer'); + + foreach ($this->request->post['selected'] as $customer_group_id) { + if ($this->config->get('config_customer_group_id') == $customer_group_id) { + $this->error['warning'] = $this->language->get('error_default'); + } + + $store_total = $this->model_setting_store->getTotalStoresByCustomerGroupId($customer_group_id); + + if ($store_total) { + $this->error['warning'] = sprintf($this->language->get('error_store'), $store_total); + } + + $customer_total = $this->model_customer_customer->getTotalCustomersByCustomerGroupId($customer_group_id); + + if ($customer_total) { + $this->error['warning'] = sprintf($this->language->get('error_customer'), $customer_total); + } + } + + return !$this->error; + } +}
\ No newline at end of file |