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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/kamariallee.com/public_html/application/controllers/Productcustom.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Productcustom extends Public_Controller 
{
		public function __construct() 
		{
				parent::__construct();
		}

		public function get($alias = NULL)  
		{ 
				if ($alias == NULL) { show_404(); }

				//ajax call from product page, get detail by color
				if($alias == 'ajax_get_productdetailbycolor')
				{
						//test if ajax call to prevent direct access
						if(!$this->input->is_ajax_request()) 
						{
								exit('No direct script access allowed');  
						}

						$color_text = $this->input->post('color_text');
						$product_id = (int) $this->input->post('product_id');

						//get first item of product detail, change prices
						$data_productdetail['product_detail'] = $this->db->select('price, discounted_price, sku, attributes, stock, image')->from('product_details')->where('product_id', $product_id)->like('attributes', $color_text)->get()->row_array();

						$product_prices_html = $this->load->view('ajax_product_prices', $data_productdetail, TRUE);  

						//$initial_colorcode & $initial_colorname changes
						$initial_colorname = ucwords(trim($color_text));
						$initial_colorcode = $this->db->select('color_code')->from('product_attributes')->where('product_attributes', $initial_colorname)->get()->row()->color_code; 

						//get all Sizes from database
						$data_productsizes['all_sizes'] = array();

						$sizes = $this->db->select('product_attributes')->from('product_attributes')->where('id_product_size', 3)->get()->result_array();

						foreach($sizes as $size)
						{
								$attribute = (int) $size['product_attributes'];

								if($attribute != 0)
								{
										array_push($data_productsizes['all_sizes'], $attribute);
								}
						}

						sort($data_productsizes['all_sizes']);

						//get available sizes for chosen initial color
						$available_attributes = $this->db->select('attributes, stock')->from('product_details')->where('product_id', $product_id)->like('attributes', $initial_colorname)->get()->result_array();

						$data_productsizes['available_sizes'] = array();	
						
						foreach($available_attributes as $attribute) 
						{
								$attr_array = explode(',', $attribute['attributes']);
								array_push($data_productsizes['available_sizes'], $attr_array[0]);
						}

						$chosen_attributes = $data_productdetail['product_detail']['attributes'];
						$attributes_arr = explode(',', $chosen_attributes);
						$data_productsizes['initial_size'] = $attributes_arr[0];	

						$product_sizes_html = $this->load->view('ajax_product_sizes', $data_productsizes, TRUE); 

						//get chosen image
						switch ($data_productdetail['product_detail']['image']) {
								case 'image1':
										$image_file = $this->db->select('image1')->from('products')->where('id_products', $product_id)->get()->row()->image1;
										break;
								case 'image2':
										$image_file = $this->db->select('image2')->from('products')->where('id_products', $product_id)->get()->row()->image2;
										break;
								case 'image3':
										$image_file = $this->db->select('image3')->from('products')->where('id_products', $product_id)->get()->row()->image3;
										break;
								case 'image4':
										$image_file = $this->db->select('image4')->from('products')->where('id_products', $product_id)->get()->row()->image4;
										break;
								case 'image5':
										$image_file = $this->db->select('image5')->from('products')->where('id_products', $product_id)->get()->row()->image5;
										break; 
						}

						return $this->output
						->set_content_type('application/json')
						->set_status_header(200) 
						->set_output(json_encode([
								'initial_colorname' 	=> $initial_colorname,
								'initial_colorcode' 	=> $initial_colorcode,
								'initial_size' 				=> $data_productsizes['initial_size'],
								'product_prices_html'	=> $product_prices_html,
								'product_sizes_html'	=> $product_sizes_html,
								'chosen_image'				=> base_url() . 'uploads/product/large/' . $image_file
						]));
				}

				//ajax call from product page, get detail by size
				if($alias == 'ajax_get_productdetailbysize')
				{
						//test if ajax call to prevent direct access
						if(!$this->input->is_ajax_request()) 
						{
								exit('No direct script access allowed');  
						}

						$size = $this->input->post('size');
						$color_text = strtolower($this->input->post('color_text'));
						$product_id = (int) $this->input->post('product_id');
						$attributes = $size . ',' . $color_text;

						//get product detail, change prices
						$data_productdetail['product_detail'] = $this->db->select('price, discounted_price, sku, attributes, stock')->from('product_details')->where('product_id', $product_id)->where('attributes', $attributes)->get()->row_array();

						$product_prices_html = $this->load->view('ajax_product_prices', $data_productdetail, TRUE);  

						//$initial_colorcode & $initial_colorname changes
						$initial_colorname = ucwords(trim($color_text));
						$initial_colorcode = $this->db->select('color_code')->from('product_attributes')->where('product_attributes', $initial_colorname)->get()->row()->color_code; 

						//get all Sizes from database
						$data_productsizes['all_sizes'] = array();

						$sizes = $this->db->select('product_attributes')->from('product_attributes')->where('id_product_size', 3)->get()->result_array();

						foreach($sizes as $item)
						{
								$attribute = (int) $item['product_attributes'];

								if($attribute != 0)
								{
										array_push($data_productsizes['all_sizes'], $attribute);
								}
						}

						sort($data_productsizes['all_sizes']);

						//get available sizes for chosen initial color
						$available_attributes = $this->db->select('attributes, stock')->from('product_details')->where('product_id', $product_id)->like('attributes', $initial_colorname)->get()->result_array();

						$data_productsizes['available_sizes'] = array();	
						
						foreach($available_attributes as $attribute)
						{
								$attr_array = explode(',', $attribute['attributes']);
								array_push($data_productsizes['available_sizes'], $attr_array[0]);
						}

						$data_productsizes['initial_size'] = $size;	

						$product_sizes_html = $this->load->view('ajax_product_sizes', $data_productsizes, TRUE);   

						return $this->output
						->set_content_type('application/json')
						->set_status_header(200)
						->set_output(json_encode([
								'initial_colorname' 	=> $initial_colorname,
								'initial_colorcode' 	=> $initial_colorcode,
								'initial_size' 	=> $size,
								'product_prices_html'	=> $product_prices_html,
								'product_sizes_html'	=> $product_sizes_html
						]));
				}

				//get specific product data 
				$this->db->select('*')->from('products')->where('alias', $alias); 
				$data['product'] = $this->db->get()->row_array();  

				if (!$data['product']) { show_404(); } 

				//get SEO 
				$this->data_header['browser_title'] = 'Product - ' . ucwords($data['product']['title']); 
				$this->data_header['meta_description'] = $data['product']['meta_description'];
				$this->data_header['meta_keywords'] = $data['product']['meta_keywords'];

				//get initial product details
				$data['product_details'] = $this->db->select('price, discounted_price, sku, attributes, stock')->from('product_details')->where('product_id', $data['product']['id_products'])->order_by('id_product_details', 'ASC')->get()->result_array(); 

				//get all available colors for this product
				$data['available_colors'] = array();

				foreach($data['product_details'] as $detail)
				{
						$attr = explode(',', $detail['attributes']);
						
						//get color code
						$color_code = $this->db->select('color_code')->from('product_attributes')->where('product_attributes', $attr[1])->get()->row()->color_code;

						$color_data = array(
								'color_text'		=> $attr[1],
								'color_code'	=> $color_code
						);

						$color_exist = FALSE;
						//check if color_text exist inside $data['available_colors']
						foreach($data['available_colors'] as $color)
						{
								if($color['color_text'] == $color_data['color_text']) 
								{
									$color_exist = TRUE;  
									break;
								}
						}

						if(!$color_exist)
						{
								array_push($data['available_colors'], $color_data);		
						}	
				}

				//get all Sizes from database
				$data['all_sizes'] = array();

				$sizes = $this->db->select('product_attributes')->from('product_attributes')->where('id_product_size', 3)->get()->result_array();

				foreach($sizes as $size)
				{
						$attribute = (int) $size['product_attributes'];

						if($attribute != 0)
						{
								array_push($data['all_sizes'], $attribute);
						}
				}

				sort($data['all_sizes']);

				if(count($data['product_details']) > 0)
				{
						//get first item of product detail
						$data['product_detail'] = $data['product_details'][0];
				}
				else
				{
					$data['product_detail'] = NULL;
				}

				if(isset($data['product_detail']['attributes']))
				{
						$initial_attr = explode(',', $data['product_detail']['attributes']);
						
						//get first color name & code
						$data['initial_colorname'] = ucwords(trim($initial_attr[1]));
						$data['initial_colorcode'] = $this->db->select('color_code')->from('product_attributes')->where('product_attributes', trim($initial_attr[1]))->get()->row()->color_code;
						$data['initial_size'] = $initial_attr[0];

						//get available sizes for chosen initial color
						$available_attributes = $this->db->select('attributes, stock')->from('product_details')->where('product_id', $data['product']['id_products'])->like('attributes', $initial_attr[1])->get()->result_array();

						$data['available_sizes'] = array();	
						
						foreach($available_attributes as $attribute)
						{
								$attr_array = explode(',', $attribute['attributes']);
								array_push($data['available_sizes'], $attr_array[0]);
						}
				}
				else
				{
						$initial_attr = NULL;
							
						//get first color name & code
						$data['initial_colorname'] = 'Not available';
						$data['initial_colorcode'] = '#fff';
						$data['available_sizes'] = array();	
				}

				//Get options of attribute Heels Type
				$data['heels_types'] = $this->db->select('id_attribute, product_attributes, additional_price, image')->from('attribute_product')->join('product_attributes', 'product_attributes.id_product_attributes = attribute_product.id_attribute')->where('id_product', $data['product']['id_products'])->where('type', 'heels type')->get()->result_array();

				//Get options of attribute Heels height
				$data['heels_height'] = $this->db->select('id_attribute, product_attributes, additional_price, image')->from('attribute_product')->join('product_attributes', 'product_attributes.id_product_attributes = attribute_product.id_attribute')->where('id_product', $data['product']['id_products'])->where('type', 'heels height')->get()->result_array();

				//Get options of attribute platform style 
				$data['platform_style'] = $this->db->select('id_attribute, product_attributes, additional_price, image')->from('attribute_product')->join('product_attributes', 'product_attributes.id_product_attributes = attribute_product.id_attribute')->where('id_product', $data['product']['id_products'])->where('type', 'platform style')->get()->result_array();

				//Get options of attribute platform height
				$data['platform_height'] = $this->db->select('id_attribute, product_attributes, additional_price, image')->from('attribute_product')->join('product_attributes', 'product_attributes.id_product_attributes = attribute_product.id_attribute')->where('id_product', $data['product']['id_products'])->where('type', 'platform height')->get()->result_array();

				//get initial name additional prices
				$data['initialname_price'] = 0;
				$initialname_price = $this->db->select('additional_price')->from('product_attributes')->where('id_product_size', 8)->where('additional_price !=', 0)->get()->row_array();

				if($initialname_price) 
				{
						$data['initialname_price'] = $initialname_price['additional_price'];
				}

				//get initial name pictures
				$data['initialname_images'] = $this->db->select('image, image2, image3')->from('product_attributes')->where('id_product_size', 8)->where('additional_price > ', 0)->get()->row_array();

				//get product on same category (you may like)
				$this->db->select_max('id_category')->from('category_product')->where('id_product', $data['product']['id_products']);
				$category_id = $this->db->get()->row()->id_category; 

				//select $products by given $category_id
				$this->db->select('id_product')->from('category_product')->where('id_category', $category_id)->order_by('id_product', 'RANDOM')->limit(3);
				$id_products = $this->db->get()->result_array();

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

				$count = 0;
				foreach($id_products as $id) 
				{
						//get similar product 
						$this->db->select('alias, image1')->from('products')->where('id_products', $id['id_product'])->where('product_status', '1');
						$data['similar_products'][$count] = $this->db->get()->row_array();
						
						$count++;
				}

				//get greeting card price
				$data['greetingcard_price'] = $this->db->select('greetingcard_price')->from('configuration')->where('id_configuration', 1)->get()->row()->greetingcard_price;

				$this->load->helper('cms_helper');
				
				$this->load->view('template/header', $this->data_header);
				$this->load->view('product-custom', $data);
				$this->load->view('template/footer', $this->data_footer); 
		}	
}

https://t.me/RX1948 - 2025