https://t.me/RX1948
Server : Apache/2.4.18 (Ubuntu)
System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64
User : oppastar ( 1041)
PHP Version : 7.0.33-0ubuntu0.16.04.15
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Directory :  /var/www/laciasmara.com/public_html/shop/application/controllers/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/laciasmara.com/public_html/shop/application/controllers/admin/Product_attributes.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Product_attributes extends Admin_Controller
{

	//this property is used for validating existing size title on call back edit size
	protected $attribute_current_id;
	protected $attribute_detail_current_id;

	function __construct()
	{

		parent::__construct();
		$this->load->model('product_attributes_m');
	}

	//this is to list all brands
	function index()
	{

		//Add pagination
		$this->load->helper('pagination_helper');
		add_pagination(base_url() . 'admin/product_attributes/index', $this->product_attributes_m->record_count(), 6, 4);

		//get all attributes
		$this->data['attributes'] = $this->product_attributes_m->get_all_attributes(6, $this->uri->segment(4));

		//load view
		$this->data['subview'] = 'admin/product_attributes/index';
		$this->load->view('admin/templates/header', $this->data_header);
		$this->load->view('admin/_layout_main', $this->data);
		$this->load->view('admin/templates/footer');
	}

	//to edit size in admin
	function edit($id = NULL)
	{

		if ($id == NULL) {
			//create new attribute
			$this->data['attribute'] = $this->product_attributes_m->get_new();

			//get ordering number 
			$this->db->select_max('priority')->from('product_attributes');
			$current_priority = $this->db->get()->row()->priority;
			if ($current_priority == NULL) {
				$this->data['attribute']->priority = 1;
			} else {
				$this->data['attribute']->priority = $current_priority + 1;
			}
		} else {
			//check if id exist. If not exist, redirect to add new
			$count = $this->product_attributes_m->count_exist($id);
			if ($count == 0) {
				redirect(base_url('admin/product_attributes/edit'));
			}

			$this->data['attribute'] = $this->product_attributes_m->get($id);

			$this->attribute_current_id = (int) $id;
		}


		//validation check
		$this->load->library('form_validation');
		$this->form_validation->set_error_delimiters('<div class="error">', '</div>'); //add class to form validation error, to be styled
		$config = $this->product_attributes_m->rules;
		$this->form_validation->set_rules($config);

		if ($this->form_validation->run($this) == TRUE) {

			$data = $this->table_data_processing();

			if ($this->attribute_current_id == NULL) {
				$this->product_attributes_m->add_attribute($data);
				$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Atribut berhasil dibuat</p>');
				redirect('admin/product_attributes');
			} else {
				$this->product_attributes_m->edit_attribute($id, $data);
				$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Atribut berhasil diedit</p>');
				redirect('admin/product_attributes/edit/' .  $id);
			}
		}

		$this->data['subview'] = 'admin/product_attributes/edit';
		$this->load->view('admin/templates/header', $this->data_header);
		$this->load->view('admin/_layout_main', $this->data);
		$this->load->view('admin/templates/footer');
	}

	//callback function validation add new size
	function _cek_existing_attribute($str)
	{

		$num_rows = $this->product_attributes_m->cek_existing_attribute($str, $this->attribute_current_id);
		if ($num_rows != 0) {
			$this->form_validation->set_message('_cek_existing_attribute', 'Nama Atribut Indonesia sudah terdaftar !');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	//callback function validation add new size
	function _cek_existing_attribute_en($str)
	{

		if (empty($str)) {
			$this->form_validation->set_message('_cek_existing_attribute_en', 'Nama Atribut Inggris tidak boleh kosong');
			return FALSE;
		}

		$num_rows = $this->product_attributes_m->cek_existing_attribute_en($str, $this->attribute_current_id);
		if ($num_rows != 0) {
			$this->form_validation->set_message('_cek_existing_attribute_en', 'Nama Atribut Inggris sudah terdaftar !');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	private function table_data_processing()
	{

		$data = array(
			'product_attribute' => $this->security->xss_clean($this->input->post('attribute')),
			'product_attribute_en' => $this->security->xss_clean($this->input->post('attribute_en')),
			'is_color' => $this->security->xss_clean($this->input->post('is_color')),
			'priority' => $this->security->xss_clean($this->input->post('priority'))
		);
		return $data;
	}

	//to delete a size
	function delete($id)
	{

		if ($id == NULL) redirect(base_url('admin/product_attributes'));
		//check if id exist. 
		$count = $this->product_attributes_m->count_exist($id);
		if ($count == 0) {
			redirect(base_url('admin/product_attributes'));
		}

		//logging
		$user_id = $this->session->userdata('admin')['id'];

		$this->db->select('product_attribute');
		$this->db->from('product_attributes');
		$this->db->where('id', $id);
		$query = $this->db->get();
		$data = $query->row();

		if ($data) {
			$activity = 'User menghapus jenis varian (' . $data->product_attribute . ')';
		} else {
			$activity = 'User menghapus jenis varian (' . $id . ')';
		}

		log_activity($user_id, $activity);

		$this->product_attributes_m->delete($id);

		$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Atribut berhasil dihapus</p>');
		redirect('admin/product_attributes');
	}

	/*-----ATTRIBUTES DETAIL----------*/

	function view_detail($attribute_id = NULL)
	{

		if ($attribute_id == NULL) redirect(base_url('admin/product_attributes'));
		//check if id exist. 
		$count = $this->product_attributes_m->count_exist($attribute_id);
		if ($count == 0) {
			redirect(base_url('admin/product_attributes'));
		}

		//Add pagination
		$this->load->helper('pagination_helper');
		add_pagination(base_url() . 'admin/product_attributes/view_detail', $this->product_attributes_m->record_count_detail($attribute_id), 6, 4);

		$this->data['details'] = $this->product_attributes_m->get_all_attribute_details($attribute_id);

		//pass to view, attribute name and id
		$this->data['attribute_id'] = $attribute_id;
		$this->db->select('product_attribute')->from('product_attributes')->where('id', $attribute_id);
		$this->data['attribute_name'] = $this->db->get()->row()->product_attribute;

		//load view
		$this->data['subview'] = 'admin/product_attributes/detail_index';
		$this->load->view('admin/templates/header', $this->data_header);
		$this->load->view('admin/_layout_main', $this->data);
		$this->load->view('admin/templates/footer');
	}

	function edit_detail($attribute_id = NULL, $detail_id = NULL)
	{

		if ($attribute_id == NULL && $detail_id == NULL) redirect(base_url('admin/product_attributes'));

		if ($attribute_id != NULL && $detail_id == NULL) {

			//add new detail
			$count = $this->product_attributes_m->count_exist($attribute_id);
			if ($count == 0) {
				redirect(base_url('admin/product_attributes'));
			}

			$this->data['detail'] = $this->product_attributes_m->get_new_detail();

			$this->data['detail']->product_attribute_id = $attribute_id;

			//get ordering number 
			$this->db->select_max('priority')->from('product_attributes_detail');
			$current_priority = $this->db->get()->row()->priority;
			if ($current_priority == NULL) {
				$this->data['detail']->priority = 1;
			} else {
				$this->data['detail']->priority = $current_priority + 1;
			}
		} elseif ($attribute_id != NULL && $detail_id != NULL) {

			//edit current detail
			$count_attribute = $this->product_attributes_m->count_exist($attribute_id);
			if ($count_attribute == 0) {
				redirect(base_url('admin/product_attributes'));
			}

			$count_detail = $this->product_attributes_m->count_exist_detail($attribute_id, $detail_id);

			if ($count_detail == 0) {
				redirect(base_url('admin/product_attributes/view_detail/' . $attribute_id));
			}

			//get attributes
			$this->db->select('*');
			$this->db->from('product_attributes_detail');
			$this->db->where('id', $detail_id);
			$this->data['detail'] = $this->db->get()->row();

			$this->attribute_detail_current_id = $detail_id;
		}

		//validation check
		$config = $this->product_attributes_m->detail_rules;
		$this->form_validation->set_rules($config);
		$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

		if ($this->form_validation->run($this) == TRUE) {

			if ($_FILES['image1']['size'] !== 0) {

				$config['upload_path'] = './uploads/varian/';
				$config['allowed_types'] = 'jpg|png';
				$config['max_size']	= '200';
				$config['max_width']  = '200';
				$config['max_height'] = '200';

				$this->load->library('upload', $config);

				if (!$this->upload->do_upload('image1')) {
					//echo $this->upload->display_errors(); die();
					$this->session->set_flashdata('error', '<br>
						<p style="background:orange; color:white; padding:5px; font-weight:bold;">Image Upload Error. Wrong format or size.</p>');
					if ($this->attribute_detail_current_id == NULL) {
						redirect('admin/product_attributes/edit_detail/' . $attribute_id);
					} else {
						redirect('product_attributes/edit_detail/' . $attribute_id . '/' . $detail_id);
					}
				} else {
					$image1 = $this->upload->data();
					$image1_filename = $image1['file_name'];
				}
			}


			$data = array(
				'attribute_detail' => $this->security->xss_clean($this->input->post('attribute_detail')),
				'attribute_detail_en' => $this->security->xss_clean($this->input->post('attribute_detail_en')),
				'product_attribute_id' => $attribute_id,
				'priority' => $this->security->xss_clean($this->input->post('priority'))
			);

			$query_attribute = $this->db->get_where('product_attributes', array('id' => $this->data['detail']->product_attribute_id));

			$is_color = 'no';
			if ($query_attribute->num_rows() > 0) {
				$is_color = $query_attribute->row()->is_color;
			}

			if ($is_color == 'yes') {
				$data['color_hex'] = $this->security->xss_clean($this->input->post('color_hex'));
			}

			if (isset($image1_filename)) {
				$data['image'] = $image1_filename;
			}

			if ($this->attribute_detail_current_id == NULL) {

				$this->product_attributes_m->add_attribute_detail($data);

				$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Atribut Detil berhasil dibuat</p>');

				redirect('admin/product_attributes/view_detail/' . $attribute_id);
			} else {

				$this->product_attributes_m->edit_attribute_detail($detail_id, $data);

				$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Atribut Detil berhasil diubah</p>');

				redirect('admin/product_attributes/view_detail/' . $attribute_id);
			}
		}

		$this->data['attribute_id'] = $attribute_id;

		$this->db->select('product_attribute')->from('product_attributes')->where('id', $attribute_id);
		$this->data['product_attribute'] = $this->db->get()->row()->product_attribute;

		$this->data['subview'] = 'admin/product_attributes/detail_edit';
		$this->load->view('admin/templates/header', $this->data_header);
		$this->load->view('admin/_layout_main', $this->data);
		$this->load->view('admin/templates/footer');
	}

	public function _cek_existing_detail_title($str)
	{

		$num_rows = $this->product_attributes_m->cek_existing_detail_title($str, $this->attribute_detail_current_id);

		if ($num_rows != 0) {
			$this->form_validation->set_message('_cek_existing_detail_title', 'Detil Atribut Indonesia sudah terdaftar !');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	public function _cek_existing_detail_title_en($str)
	{

		if (empty($str)) {
			$this->form_validation->set_message('_cek_existing_detail_title_en', 'Detail Atribut Inggris tidak boleh kosong');
			return FALSE;
		}

		$num_rows = $this->product_attributes_m->cek_existing_detail_title_en($str, $this->attribute_detail_current_id);

		if ($num_rows != 0) {
			$this->form_validation->set_message('_cek_existing_detail_title_en', 'Detil Atribut Inggris sudah terdaftar !');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	public function delete_detail($detail_id)
	{

		//get attribute id
		$this->db->select('product_attribute_id')->from('product_attributes_detail')->where('id', $detail_id);
		$attribute_id = $this->db->get()->row()->product_attribute_id;

		//logging
		$user_id = $this->session->userdata('admin')['id'];

		$this->db->select('attribute_detail');
		$this->db->from('product_attributes_detail');
		$this->db->where('id', $detail_id);
		$query = $this->db->get();
		$data = $query->row();

		if ($data) {
			$activity = 'User menghapus varian (' . $data->attribute_detail . ')';
		} else {
			$activity = 'User menghapus varian (' . $detail_id . ')';
		}

		log_activity($user_id, $activity);
		//delete detail
		$this->db->where('id', $detail_id);
		$this->db->delete('product_attributes_detail');

		$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Detil Atribut berhasil dihapus</p>');
		redirect('admin/product_attributes/view_detail/' . $attribute_id);
	}
}

https://t.me/RX1948 - 2025