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/serbaantik.com/public_html/application/controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/serbaantik.com/public_html/application/controllers/Products.php
<?php defined('BASEPATH') || exit('No direct script access allowed');
/**
 * @property Pagination $pagination
 * @property DB $db
 * @property Session $session
 */
class Products extends Public_Controller
{
		public function __construct()
		{
				parent::__construct();
        		$this->load->library('pagination');
		}

		public function index()
		{
				$category = $this->db->select('alias')->from('categories')->where('status', '1')->order_by('priority', 'ASC')->get()->row_array();

				if(!$category)
				{
						redirect(base_url());
				}

				$this->category($category['alias']);
		}

		public function category($alias = null, $reset = 'false')
		{
				if($reset === 'true')
				{
					$this->session->unset_userdata('varian_attributes');
				}

				$this->data['category'] = $this->db->select('id_categories, category, alias, image_banner, can_download_catalog, min_show_qty')->from('categories')->where('status', '1')->where('alias', $alias)->get()->row_array();

				if(!$this->data['category'])
				{
						redirect(base_url());
				}

				if($this->session->userdata('sess_category_id') &&  $this->session->userdata('sess_category_id') != $this->data['category']['id_categories'])
				{
						$this->session->unset_userdata('varian_attributes');
				}

				$this->data['varians'] = $this->get_varians($this->data['category']['id_categories']); 

				$this->data_header['browser_title'] = 'Products from Serba Antik - '. ucwords($this->data['category']['category']);
        		$this->data_header['meta_description'] = 'Products from Serba Antik - '. ucwords($this->data['category']['category']); 

				//categories
				$this->data['categories'] = $this->db
				->select('category, alias, id_categories, min_show_qty')
				->from('categories')
				->where('status', '1')
				->order_by('priority', 'ASC')
				->get()
				->result_array();

				//get slideshows
				$this->db->select('title, image, text_content')->from('home_slideshow')->where('status', '1')->where('type', 'products')->where('id', $this->data['category']['id_categories'])->order_by('priority', 'ASC');
				$this->data['slideshows'] = $this->db->get()->result_array();  

				$this->load->view('template/header', $this->data_header);
				$this->load->view('products', $this->data);
				$this->load->view('template/footer', $this->data_footer);
		}

		private function get_varians($category_id)
		{
				$varians_attrs = array();

				//get varians and attributes
				$varians = $this->db
				->select('id, varian, type')
				->from('varians')
				->where('category_id', $category_id)
				->where('display', 1)
				->order_by('priority', 'ASC')
				->get()
				->result_array(); 
        
				foreach($varians as $var_key => $varian)
				{
						$varians_attrs[$var_key]['id'] = $varian['id'];
						$varians_attrs[$var_key]['varian'] = $varian['varian'];
						$varians_attrs[$var_key]['type'] = $varian['type'];  

						//get attributes for each varian
						$attributes = $this->db->select('id, attribute')->from('attributes')->where('varian_id', $varian['id'])->where('display', 1)->order_by('priority', 'ASC')->get()->result_array();

						foreach($attributes as $attr_key => $attribute)
						{
								$varians_attrs[$var_key]['attributes'][$attr_key]['id'] = $attribute['id'];
								$varians_attrs[$var_key]['attributes'][$attr_key]['attribute'] = $attribute['attribute'];
						}
				}

				return $varians_attrs;
		}

		public function detail($alias) 
    	{
        $data['product'] = $this->db->select('*')
        ->from('products')
        ->where('alias', $alias)
        ->where('product_status', 1) 
        ->get()
        ->row_array();

        if (!$data['product']) 
        {
           redirect(base_url('products'));
        }        

				//get product category
				$data['category'] = $this->db->select('id_category, category, alias, can_request_sample')
				->from('category_product')
				->join('categories', 'categories.id_categories = category_product.id_category')
				->where('id_product', $data['product']['id_products'])
				->get()->row_array();

				if (!$data['category']) 
        {
           redirect(base_url('products')); 
        }  

				//get varian & attribute
				$varian_ids = array();

				$varians = $this->db->select('varian_id')
				->from('attribute_product')
				->where('product_id', $data['product']['id_products'])
				->get()->result_array();

				foreach($varians as $varian)
				{
					if(!in_array($varian['varian_id'], $varian_ids))
					{
							array_push($varian_ids , $varian['varian_id']);
					}
				}

				$data['varians_attributes'] = array();

				foreach($varian_ids as $key => $varian_id)
				{
						//get varian name and get attribute
						$varian = $this->db->select('varian')->from('varians')->where('id', (int) $varian_id)->get()->row_array();

						if(!is_null($varian))
						{
							$data['varians_attributes'][$key]['varian_name'] = $varian['varian'];

							//get attribute id
							$atrribute = $this->db->select('attribute_id')->from('attribute_product')->where('product_id', $data['product']['id_products'])->where('varian_id', (int) $varian_id)->get()->row_array();

							if(!is_null($atrribute)) 
							{
									//get attribute name
									$attribute_name = $this->db->select('attribute')->from('attributes')->where('id', (int) $atrribute['attribute_id'])->get()->row_array();

									if(!is_null($attribute_name))
									{
											$data['varians_attributes'][$key]['attribute_name'] = $attribute_name['attribute'];
									}
							}
						}
				}

        //get 4 related products 
        $this->db->select('title, alias, image1')
        ->from('products')
				->join('category_product', 'category_product.id_product = products.id_products') 
				->where('id_category', $data['category']['id_category']) 
        ->where('product_status', '1') 
        ->where('products.id_products !=', $data['product']['id_products'])
        ->limit(4);
        $data['related_products'] = $this->db->get()->result_array();

        $this->data_header['browser_title'] = 'Product - ' . ucwords($data['product']['title']);
        $this->data_header['meta_description'] = 'Product - ' . ucwords($data['product']['title']);
        
        $this->load->view('template/header', $this->data_header);
        $this->load->view('product-detail', $data);
        $this->load->view('template/footer', $this->data_footer);
    }

		public function ajax_getproducts()
		{
				$this->load->helper('form');
	
				if (!$this->input->is_ajax_request())
				{
						exit('No direct script access allowed');
				}
	
				$category_id = (int) $this->input->post('category_id');
				$varians_attributes = $this->input->post('attributes');
				$offset = (int) $this->input->post('offset');
				$load_type = $this->input->post('load_type');

				if($this->input->post('search_term'))
				{
						$search_term = $this->security->xss_clean($this->input->post('search_term'));
				}

				$this->data['category'] = $this->db->select('id_categories, category, alias, image_banner, can_download_catalog, min_show_qty')->from('categories')->where('status', '1')->where('id_categories', $category_id)->get()->row_array();

				if(is_null($this->data['category']))
				{
						http_response_code(400);
				}

				$var_number_arr = array();

				if(is_array($varians_attributes) && count($varians_attributes) > 0)
				{
						$this->session->set_userdata('varian_attributes', $varians_attributes);
						$this->session->set_userdata('sess_category_id', $category_id);

						foreach($varians_attributes as $var_attribute)
						{
								$var_attribute_arr = explode('|', $var_attribute);
								$varian = $var_attribute_arr[0];
								$attribute = $var_attribute_arr[1];

								//get number from varian_field_numbers
								$var_number = $this->db->select('number')->from('varian_field_numbers')->where('category_id', $category_id)->where('varian', $varian)->get()->row_array();

								if($var_number['number'] > 0)
								{
										array_push($var_number_arr, array(
												'varian'	=> $varian,
												'attribute'	=> $attribute,
												'var_number'	=> $var_number['number'])
										);
								}
						}
				}
				else
				{
						$this->session->unset_userdata('varian_attributes');
				}

				$exist_var_arr = array();
				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{
								if(!in_array($var_number['varian'], $exist_var_arr))
								{
										array_push($exist_var_arr, $var_number['attribute']);	
								}
						}
				}

				//get count of products
				$this->db->select('id_products');
				$this->db->from('products');
				$this->db->join('category_product', 'category_product.id_product = products.id_products');
				$this->db->where('id_category', $this->data['category']['id_categories']);

				if(isset($search_term))
				{
						$this->db->like('products.title', $search_term);
				}

				$stocks_for_category_ids =[6, 7, 8, 9];
				if (in_array((int) $this->data['category']['id_categories'], $stocks_for_category_ids))
				{
					$this->db->where('stock >=', $this->data['category']['min_show_qty']);
				}
				$this->db->where('product_status', '1');
				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{
								$this->db->where_in('attribute' . $var_number['var_number'], $exist_var_arr);
						}
				}
				$total_products = $this->db->get()->num_rows();

				//get actual products
				$this->db->select('title, alias, image1');
				$this->db->from('products');
				$this->db->join('category_product', 'category_product.id_product = products.id_products');
				$this->db->where('id_category', $this->data['category']['id_categories']);

				if(isset($search_term))
				{
						$this->db->like('products.title', $search_term);
				}

				$stocks_for_category_ids =[6, 7, 8, 9];
				if (in_array((int) $this->data['category']['id_categories'], $stocks_for_category_ids))
				{
					$this->db->where('stock >=', $this->data['category']['min_show_qty']);
				}
				$this->db->where('product_status', '1');

				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{
								$this->db->where_in('attribute' . $var_number['var_number'], $exist_var_arr);
						}
				}
				$this->db->limit(21, $offset);
				$this->data['products'] = $this->db->get()->result_array();

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

				//get chosen attributes name, to display selected attributes box
				$this->data['attributes'] = array();
				if(is_array($varians_attributes) && count($varians_attributes) > 0)
				{
						foreach($varians_attributes as $var_attribute)
						{
								if (!in_array($var_attribute, $this->data['attributes']))
								{
										array_push($this->data['attributes'], $var_attribute);
								}
						}
				}

				$res_data = array();
				$res_data['attributes'] = $this->load->view('ajax_products_showattributes', $this->data, true);
				$res_data['products'] = $this->load->view('ajax_getproducts', $this->data, true);
        		$res_data['pagination'] = $this->pagination->create_links();
				$res_data['count'] = $this->data['products'];
				$res_data['load_type'] = $load_type;
				
        		echo json_encode($res_data);
		}

		private function ajax_getproducts_usingpagination()
		{
				$this->load->helper('form');
	
				if (!$this->input->is_ajax_request())
				{
						exit('No direct script access allowed');
				} 
	
				$category_id = (int) $this->input->post('category_id');
				$varians_attributes = $this->input->post('attributes');
				$offset = (int) $this->input->post('offset');
				$load_type = $this->input->post('load_type');

				if($this->input->post('search_term'))
				{
						$search_term = $this->security->xss_clean($this->input->post('search_term'));
				}

				$this->data['category'] = $this->db->select('id_categories, category, alias, image_banner, can_download_catalog, min_show_qty')->from('categories')->where('status', '1')->where('id_categories', $category_id)->get()->row_array();

				if(is_null($this->data['category']))
				{
						http_response_code(400);
				}

				$var_number_arr = array();

				if(is_array($varians_attributes) && count($varians_attributes) > 0)
				{
						$this->session->set_userdata('varian_attributes', $varians_attributes);
						$this->session->set_userdata('sess_category_id', $category_id);

						foreach($varians_attributes as $var_attribute)
						{
								$var_attribute_arr = explode('|', $var_attribute);
								$varian = $var_attribute_arr[0];
								$attribute = $var_attribute_arr[1];

								//get number from varian_field_numbers
								$var_number = $this->db->select('number')->from('varian_field_numbers')->where('category_id', $category_id)->where('varian', $varian)->get()->row_array();

								if($var_number['number'] > 0)
								{
										array_push($var_number_arr, array(
												'varian'	=> $varian,
												'attribute'	=> $attribute,
												'var_number'	=> $var_number['number'])
										);	
								}
						}
				}
				else 
				{
						$this->session->unset_userdata('varian_attributes');
				}

				$exist_var_arr = array();
				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{
								if(!in_array($var_number['varian'], $exist_var_arr))
								{
										array_push($exist_var_arr, $var_number['attribute']);	
								}
						}
				}

				//pagination
				$this->load->helper('pagination_helper');  
				$config = pagination_format_fe(); 
				$config['base_url'] = base_url() . 'products/category/' . $this->data['category']['alias']; 
				$config['uri_segment'] = 4;
				$config['per_page'] = 21; 
        		if($offset != 0)
				{
						$offset = ($offset - 1) * $config['per_page'];
        		}
				$config['cur_page'] = $offset;

				//get total rows of products
				$this->db->select('id_products');
				$this->db->from('products');
				$this->db->join('category_product', 'category_product.id_product = products.id_products');
				$this->db->where('id_category', $this->data['category']['id_categories']);

				if(isset($search_term))
				{
						$this->db->like('products.title', $search_term);
				}

				$stocks_for_category_ids =[6, 7, 8, 9];
				if ((int) in_array($this->data['category']['id_categories'], $stocks_for_category_ids))
				{
					$this->db->where('stock >=', $this->data['category']['min_show_qty']);
				}
				$this->db->where('product_status', '1');
				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{		
								$this->db->where_in('attribute' . $var_number['var_number'], $exist_var_arr);
						}
				} 
				$config['total_rows'] = $this->db->get()->num_rows();

				$this->pagination->initialize($config);

				//get count of products
				$this->db->select('id_products');
				$this->db->from('products');
				$this->db->join('category_product', 'category_product.id_product = products.id_products');
				$this->db->where('id_category', $this->data['category']['id_categories']);

				if(isset($search_term))
				{
						$this->db->like('products.title', $search_term);
				}

				$stocks_for_category_ids =[6, 7, 8, 9];
				if (in_array((int) $this->data['category']['id_categories'], $stocks_for_category_ids))
				{
					$this->db->where('stock >=', $this->data['category']['min_show_qty']);
				}
				$this->db->where('product_status', '1');
				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{		
								$this->db->where_in('attribute' . $var_number['var_number'], $exist_var_arr);
						}
				}
				$total_products = $this->db->get()->num_rows();

				//get actual products
				$this->db->select('title, alias, image1');
				$this->db->from('products');
				$this->db->join('category_product', 'category_product.id_product = products.id_products');
				$this->db->where('id_category', $this->data['category']['id_categories']);

				if(isset($search_term))
				{
						$this->db->like('products.title', $search_term);
				}

				$stocks_for_category_ids =[6, 7, 8, 9];
				if (in_array((int) $this->data['category']['id_categories'], $stocks_for_category_ids))
				{
					$this->db->where('stock >=', $this->data['category']['min_show_qty']);
				}
				$this->db->where('product_status', '1');

				if(count($var_number_arr) > 0)
				{
						foreach($var_number_arr as $var_number)
						{		
								$this->db->where_in('attribute' . $var_number['var_number'], $exist_var_arr);
						}
				}
				$this->db->limit(21, $offset);
				$this->data['products'] = $this->db->get()->result_array();  

				$this->data['total_products'] = $total_products;
				$this->data['curr_products'] = count($this->data['products']);

				//get chosen attributes name, to display selected attributes box
				$this->data['attributes'] = array();
				if(is_array($varians_attributes) && count($varians_attributes) > 0)
				{
						foreach($varians_attributes as $var_attribute)
						{
								if (!in_array($var_attribute, $this->data['attributes']))
								{
										array_push($this->data['attributes'], $var_attribute);
								}
						}
				}

				$res_data = array();
				$res_data['attributes'] = $this->load->view('ajax_products_showattributes', $this->data, true);
				$res_data['products'] = $this->load->view('ajax_getproducts', $this->data, true);
        		$res_data['pagination'] = $this->pagination->create_links();
				$res_data['count'] = $this->data['products'];
				$res_data['load_type'] = $load_type; 
				
        		echo json_encode($res_data);
		}
}

https://t.me/RX1948 - 2025