| Current Path : /home/users/unlimited/www/eshop.codeskitter.site/application/controllers/admin/ |
| Current File : /home/users/unlimited/www/eshop.codeskitter.site/application/controllers/admin/Category.php |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Category extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->library(['ion_auth', 'form_validation', 'upload']);
$this->load->helper(['url', 'language', 'file']);
$this->load->model(['category_model']);
if (!has_permissions('read', 'categories')) {
$this->session->set_flashdata('authorize_flag', PERMISSION_ERROR_MSG);
redirect('admin/home', 'refresh');
}
}
public function index()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
$this->data['main_page'] = TABLES . 'manage-category';
$settings = get_settings('system_settings', true);
$this->data['title'] = 'Category Management | ' . $settings['app_name'];
$this->data['meta_description'] = 'Category Management | ' . $settings['app_name'];
$id = $this->input->get('id', true);
if (isset($id) && !empty($id)) {
$this->data['base_category_url'] = base_url() . 'admin/category/category_list?id=' . $id;
} else {
$this->data['base_category_url'] = base_url() . 'admin/category/category_list';
}
$this->data['category_result'] = $this->category_model->get_categories();
$this->load->view('admin/template', $this->data);
} else {
redirect('admin/login', 'refresh');
}
}
public function get_categories()
{
$ignore_status = isset($_GET['ignore_status']) && $_GET['ignore_status'] == 1 ? 1 : '';
$seller_id = (isset($_GET['seller_id']) && !empty($_GET['seller_id'])) ? $_GET['seller_id'] : 0;
$response['data'] = $this->data['category_result'] = $this->category_model->get_categories(NULL, '', '', 'row_order', 'ASC', 'true', '', $ignore_status, $seller_id);
echo json_encode($response);
return;
}
public function get_seller_categories()
{
$this->form_validation->set_data($this->input->get());
$this->form_validation->set_rules('seller_id', 'Seller ID', 'trim|numeric|required|xss_clean');
if (!$this->form_validation->run()) {
$this->response['error'] = true;
$this->response['message'] = strip_tags(validation_errors());
$this->response['data'] = array();
print_r(json_encode($this->response));
return;
} else {
$seller_id = $this->input->get('seller_id', true);
$ignore_status = isset($_GET['ignore_status']) && $_GET['ignore_status'] == 1 ? 1 : '';
$response['data'] = $this->category_model->get_seller_categories($seller_id);
echo json_encode($response);
return;
}
}
public function create_category()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
$this->data['main_page'] = FORMS . 'category';
$settings = get_settings('system_settings', true);
$this->data['title'] = (isset($_GET['edit_id']) && !empty($_GET['edit_id'])) ? 'Edit Category | ' . $settings['app_name'] : 'Add Category | ' . $settings['app_name'];
$this->data['meta_description'] = 'Add Category , Create Category | ' . $settings['app_name'];
if (isset($_GET['edit_id']) && !empty($_GET['edit_id'])) {
$this->data['fetched_data'] = fetch_details('categories', ['id' => $_GET['edit_id']]);
}
$this->data['categories'] = $this->category_model->get_categories();
$this->load->view('admin/template', $this->data);
} else {
redirect('admin/login', 'refresh');
}
}
public function category_order()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
$this->data['main_page'] = TABLES . 'category-order';
$settings = get_settings('system_settings', true);
$this->data['title'] = 'Category Order | ' . $settings['app_name'];
$this->data['meta_description'] = 'Category Order | ' . $settings['app_name'];
$this->data['categories'] = $this->category_model->get_categories();
$this->load->view('admin/template', $this->data);
} else {
redirect('admin/login', 'refresh');
}
}
function delete_category()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
if (print_msg(!has_permissions('delete', 'categories'), PERMISSION_ERROR_MSG, 'categories')) {
return false;
}
if (defined('SEMI_DEMO_MODE') && SEMI_DEMO_MODE == 0) {
$this->response['error'] = true;
$this->response['message'] = SEMI_DEMO_MODE_MSG;
echo json_encode($this->response);
return false;
exit();
}
$category_id = $this->input->get('id', true);
$products = fetch_details('products', ['category_id' => $category_id]);
$offers = fetch_details('offers', ['type_id' => $category_id, 'type' => 'categories']);
$sliders = fetch_details('sliders', ['type_id' => $category_id, 'type' => 'categories']);
//check category assign to product
if (isset($products) && !empty($products)) {
$this->response['error'] = true;
$this->response['message'] = 'You cannot delete category , please assign another category to product';
print_r(json_encode($this->response));
return;
exit();
}
//check category assign to offer
if (isset($offers) && !empty($offers)) {
$this->response['error'] = true;
$this->response['message'] = 'You cannot delete category , please assign another category n offer';
print_r(json_encode($this->response));
return;
exit();
}
//check category assign to slider
if (isset($sliders) && !empty($sliders)) {
$this->response['error'] = true;
$this->response['message'] = 'You cannot delete category , please assign another category in slider';
print_r(json_encode($this->response));
return;
exit();
}
if (delete_details(['id' => $_GET['id']], 'categories') == TRUE) {
$this->response['error'] = false;
$this->response['message'] = 'Deleted Succesfully';
print_r(json_encode($this->response));
} else {
$this->response['error'] = true;
$this->response['message'] = 'Something Went Wrong';
print_r(json_encode($this->response));
}
} else {
redirect('admin/login', 'refresh');
}
}
public function category_list()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
return $this->category_model->get_category_list();
} else {
redirect('admin/login', 'refresh');
}
}
public function add_category()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
if (isset($_POST['edit_category'])) {
if (print_msg(!has_permissions('update', 'categories'), PERMISSION_ERROR_MSG, 'categories')) {
return false;
}
} else {
if (print_msg(!has_permissions('create', 'categories'), PERMISSION_ERROR_MSG, 'categories')) {
return false;
}
}
$this->form_validation->set_rules('category_input_name', 'Category Name', 'trim|required|xss_clean');
$this->form_validation->set_rules('banner', 'Banner', 'trim|xss_clean');
if (isset($_POST['edit_category'])) {
$this->form_validation->set_rules('category_input_image', 'Image', 'trim|xss_clean');
} else {
$this->form_validation->set_rules('category_input_image', 'Image', 'trim|required|xss_clean', array('required' => 'Category image is required'));
}
//seo validation
$this->form_validation->set_rules('seo_page_title', ' SEO Page Title', 'trim|xss_clean');
$this->form_validation->set_rules('seo_meta_keywords', 'SEO Meta Keywords', 'trim|xss_clean');
$this->form_validation->set_rules('seo_meta_description', 'SEO Meta Description', 'trim|xss_clean');
$this->form_validation->set_rules('seo_og_image', 'SEO Open Graph Image', 'trim|xss_clean');
if (!$this->form_validation->run()) {
$this->response['error'] = true;
$this->response['csrfName'] = $this->security->get_csrf_token_name();
$this->response['csrfHash'] = $this->security->get_csrf_hash();
$this->response['message'] = validation_errors();
print_r(json_encode($this->response));
} else {
$edit_category = $this->input->post('edit_category', true);
$category_input_name = $this->input->post('category_input_name', true);
if (isset($edit_category)) {
if (is_exist(['name' => $category_input_name], 'categories', $edit_category)) {
$response["error"] = true;
$response['csrfName'] = $this->security->get_csrf_token_name();
$response['csrfHash'] = $this->security->get_csrf_hash();
$response["message"] = "Category Already exist you should use a different name";
$response["data"] = array();
echo json_encode($response);
return false;
}
if (is_exist(['name' => $category_input_name, 'parent_id' => $_POST['category_parent']], 'categories', $edit_category)) {
$response["error"] = true;
$response['csrfName'] = $this->security->get_csrf_token_name();
$response['csrfHash'] = $this->security->get_csrf_hash();
$response["message"] = "This Category Already exist as a child category.";
$response["data"] = array();
echo json_encode($response);
return false;
}
}
if (isset($_POST['seo_meta_keywords']) && $_POST['seo_meta_keywords'] != '') {
$_POST['seo_meta_keywords'] = json_decode($_POST['seo_meta_keywords'], 1);
$seo_meta_keywords = array_column($_POST['seo_meta_keywords'], 'value');
$_POST['seo_meta_keywords'] = implode(",", $seo_meta_keywords);
}
$fields = [
'edit_category',
'category_input_name',
'category_parent',
'category_input_image',
'banner',
'seo_page_title',
'seo_meta_keywords',
'seo_meta_description',
'seo_og_image'
];
foreach ($fields as $field) {
$category[$field] = $this->input->post($field, true) ?? "";
}
$this->category_model->add_category($category);
$this->response['error'] = false;
$this->response['csrfName'] = $this->security->get_csrf_token_name();
$this->response['csrfHash'] = $this->security->get_csrf_hash();
$message = (isset($edit_category)) ? 'Category Updated Successfully' : 'Category Added Successfully';
$this->response['message'] = $message;
print_r(json_encode($this->response));
}
} else {
redirect('admin/login', 'refresh');
}
}
public function update_category_order()
{
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin()) {
if (print_msg(!has_permissions('update', 'category_order'), PERMISSION_ERROR_MSG, 'category_order', false)) {
return false;
}
$i = 0;
$temp = array();
foreach ($_GET['category_id'] as $row) {
$temp[$row] = $i;
$data = [
'row_order' => $i
];
$data = escape_array($data);
$this->db->where(['id' => $row])->update('categories', $data);
$i++;
}
$response['error'] = false;
$response['message'] = 'Category Order Saved !';
print_r(json_encode($response));
} else {
redirect('admin/login', 'refresh');
}
}
public function top_category()
{
$this->category_model->top_category();
}
}