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 : |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Product 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']); //check if the stok of this size is not 0 if($attribute['stock'] > 0) { 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']); //check if the stok of this size is not 0 if($attribute['stock'] > 0) { 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']); //check if the stok of this size is not 0 if($attribute['stock'] > 0) { array_push($data['available_sizes'], $attr_array[0]); } } $data['count_product_stock'] = $data['product_detail']['stock']; } else { $initial_attr = NULL; //get first color name & code $data['initial_colorname'] = 'Not available'; $data['initial_colorcode'] = '#fff'; $data['available_sizes'] = array(); $data['count_product_stock'] = 0; } //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+products', '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', $data); $this->load->view('template/footer', $this->data_footer); } }