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/Cart.php
<?php
if (!defined('BASEPATH'))
{
		exit('No direct script access allowed');
}

class Cart extends Public_Controller
{
		public function __construct()
		{
			parent::__construct();
			$this->load->model('cart_model');   
			$this->load->model('product_m'); 
			$this->load->library('form_validation');
			$this->load->library('cart');
		}

		public function index()
		{
				//get SEO
				$this->db->select('website_name')->from('configuration')->where('id_configuration', 1);
				$website_name = $this->db->get()->row();
				$this->data_header['browser_title'] =  ucwords($website_name->website_name) . ' - My Cart';
				$this->data_header['meta_description'] = ucwords($website_name->website_name) . ' - My Cart';

				if (!$this->cart->contents())
				{
						$data['message'] = '<p style="background:grey; color:white;
						padding:10px; margin-bottom:100px;">Your cart is empty</p>';
				
				} else
				{
						$data['message'] = $this->session->flashdata('message');
				}

				// echo '<pre>'; 
				// var_dump($this->cart->contents()); 
				// echo '</pre>';
				// exit;

				//calculate subtotals
				$data['subtotals'] = 0;
				foreach($this->cart->contents() as $item)
				{
						$data['subtotals'] += $item['subtotal'];

						if(isset($item['options']['greetingcard_price_int']))
						{
							$data['subtotals'] += $item['options']['greetingcard_price_int'];
						}

						if(isset($item['options']['chosenHeelsTypePrice']))
						{
							$data['subtotals'] += ($item['qty'] * $item['options']['chosenHeelsTypePrice']);
						}

						if(isset($item['options']['chosenHeelsHeightPrice']))
						{
							$data['subtotals'] += ($item['qty'] * $item['options']['chosenHeelsHeightPrice']);
						}

						if(isset($item['options']['chosenPlatformStylePrice']))
						{
							$data['subtotals'] += ($item['qty'] * $item['options']['chosenPlatformStylePrice']);
						}

						if(isset($item['options']['chosenPlatformHeightPrice']))
						{
							$data['subtotals'] += ($item['qty'] * $item['options']['chosenPlatformHeightPrice']);
						}

						if(isset($item['options']['chosenInitialEngravedPrice']))
						{
							$data['subtotals'] += ($item['qty'] * $item['options']['chosenInitialEngravedPrice']);
						}
				}

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

		public function remove($rowid)  
		{
			if ($rowid=="all") {
					$this->cart->destroy();
			}
			else
			{
					$data = array(
						'rowid'   => $rowid,
						'qty'     => 0
					);

					$this->cart->update($data);
			}
			
			redirect('cart');
		}	

		public function update_cart() {

			//check if there is post request, if not, reject & redirect
			if (!isset($_POST['update_cart'])) {
				redirect('cart'); 
			}

			// Recieve post values,calcute them and update
			$cart_info = $_POST['cart'] ;

			foreach( $cart_info as $id => $cart) {

				$sku = $cart['options']['sku'];
				$attributes = $cart['options']['size'];

				//check the stock for current SKU and Size
				$this->db->select('stock')->from('product_details')->where('sku', $sku)->where('attributes', $attributes);
				$available_stock = $this->db->get()->row()->stock;

				if ($cart['qty'] > $available_stock) {
					//stocks are not enough
					$this->session->set_flashdata('no_stock', '<br>
					<p style="background:grey; color:white; padding:5px; font-weight:bold;">Sorry not enough stock for chosen quantity. Please choose smaller quantity.</p>');
					redirect('cart');
				} else {
					//stocks are enough	
					$rowid = $cart['rowid'];
					$price = $cart['price'];
					$qty = $cart['qty'];
					$amount = $price * $cart['qty'];
					
					$data = array(
						'rowid' => $rowid,
						'price' => $price,
						'amount' => $amount,
						'qty' => $qty
					);
					$this->cart->update($data);
					
				}
				
			} 

			redirect('cart');
			
		}


		//callback function validation cek stock available when add to cart
		public function cek_stock() {
			
			$id_product_details = $this->input->post('product_size'); 
			$chosen_quantity = (int) $this->input->post('qty'); 
			
			//get current stock froms product_details table
			$this->db->select('stock');
			$this->db->from('product_details');
			$this->db->where('id_product_details', $id_product_details);
			$query = $this->db->get(); 
			$current_stock = (int)  $query->row()->stock;

			//check if quantity is less or equal to current stock
			if ($chosen_quantity > $current_stock) {
				return FALSE;
			} else {
				return TRUE;  
			}	
		}

		//add cart from product page
		public function ajax_addtocart()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');  
				}

				$chosen_color = trim(strtolower($this->input->post('chosen_color')));
				$chosen_size = trim($this->input->post('chosen_size'));
				$product_id = (int) $this->input->post('product_id');
				$greetingcard_text = $this->input->post('greetingcard_text');

				//check if this combination exist 
				$attributes = $chosen_size . ',' . $chosen_color;

				$product_detail = $this->db->select('*')->from('product_details')->where('product_id', $product_id)->where('attributes', $attributes)->get()->row_array();

				if(!$product_detail)
				{
						return $this->output
								->set_content_type('application/json')
								->set_status_header(404)
								->set_output(json_encode([
										'error' 	=> 'Product not found',
						]));
				}

				//check current cart quantity
				$cart_qty = 0;
				$is_new_item = TRUE;
				$rowid = NULL;

				if(count($this->cart->contents()) > 0)
				{
						foreach($this->cart->contents() as $item)
						{
								if($item['id'] == $product_detail['product_id'] && $item['options']['sku'] == $product_detail['sku'])
								{
									$is_new_item = FALSE;
									$cart_qty = $item['qty'];
									$rowid = $item['rowid']; 
									break;
								}
						}
				}

				$requested_qty = $cart_qty + 1; 
				
				if($requested_qty > $product_detail['stock'])
				{
						return $this->output
								->set_content_type('application/json')
								->set_status_header(400)
								->set_output(json_encode([
										'error' 	=> 'Stock not enough',
						]));
				}

				//get product data
				$product = $this->db->select('title, image1, image2, image3, image4, image5')->from('products')->where('id_products', $product_detail['product_id'])->get()->row_array();

				$data_cart['id'] = $product_id;		
				$data_cart['name'] = ucwords($product['title']); 
				$data_cart['qty'] = $requested_qty;

				if($product_detail['discounted_price'] > 0)
				{
						$data_cart['price'] = $product_detail['discounted_price'];
				}
				else
				{
						$data_cart['price'] = $product_detail['price'];
				}

				$data_cart['options']['sku'] =  $product_detail['sku'];
				$data_cart['options']['color'] = ucwords($chosen_color);
				$data_cart['options']['size'] = $chosen_size;

				//get chosen image
				switch ($product_detail['image']) {
					case 'image1':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image1'];
							break;
					case 'image2':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image2'];
							break;
					case 'image3':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image3'];
							break;
					case 'image4':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image4'];
							break;
					case 'image5':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image5'];
							break;
				}
				
				if($greetingcard_text)
				{
						$data_cart['options']['greetingcard_text'] = $greetingcard_text;
						//get greeting card price
						$data_cart['options']['greetingcard_price'] = 'Rp ' . number_format($this->db->select('greetingcard_price')->from('configuration')->where('id_configuration', 1)->get()->row()->greetingcard_price, 0,",",".");
						$data_cart['options']['greetingcard_price_int'] = $this->db->select('greetingcard_price')->from('configuration')->where('id_configuration', 1)->get()->row()->greetingcard_price;
				}

				$this->cart->product_name_rules = '[:print:]'; //this is to eliminate cart product name restriction on special characters

				if($is_new_item)
				{
						$data_cart['cart_rowid'] = $this->cart->insert($data_cart); 
				}
				else
				{
						$data_cart['rowid'] = $rowid;
						$this->cart->update($data_cart);
						$data_cart['cart_rowid'] = $rowid;
					}
				
				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'data_cart' 	=> $data_cart,
				]));
		}

		//add cart from product page custom
		public function ajax_addtocart_customize()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');  
				}

				$chosen_color = trim(strtolower($this->input->post('chosen_color')));
				$chosen_size = trim($this->input->post('chosen_size'));
				$product_id = (int) $this->input->post('product_id');
				$greetingcard_text = $this->input->post('greetingcard_text');

				$chosenHeelsTypeId = $this->input->post('chosenHeelsTypeId');
				$chosenHeelsHeightId = $this->input->post('chosenHeelsHeightId');
				$chosenPlatformStyleId = $this->input->post('chosenPlatformStyleId');
				$chosenPlatformHeightId = $this->input->post('chosenPlatformHeightId');
				$isChosenInitialLetters = $this->input->post('isChosenInitialLetters');
				$chosenInitialLetters = $this->input->post('chosenInitialLetters');
				$chosenInitialLettersPrice = $this->input->post('chosenInitialLettersPrice');
				$chosenInitialLettersImage = $this->input->post('chosenInitialLettersImage');

				//check if this combination exist 
				$attributes = $chosen_size . ',' . $chosen_color;

				$product_detail = $this->db->select('*')->from('product_details')->where('product_id', $product_id)->where('attributes', $attributes)->get()->row_array();

				if(!$product_detail)
				{
						return $this->output
								->set_content_type('application/json')
								->set_status_header(404)
								->set_output(json_encode([
										'error' 	=> 'Product not found',
						]));
				}
				
				//get product data
				$product = $this->db->select('title, image1, image2, image3, image4, image5')->from('products')->where('id_products', $product_detail['product_id'])->get()->row_array();

				$data_cart['id'] = $product_id;		
				$data_cart['name'] = ucwords($product['title']); 
				$data_cart['qty'] = 1;

				$data_cart['subtotals'] = 0;

				if($product_detail['discounted_price'] > 0)
				{
						$data_cart['price'] = $product_detail['discounted_price'];
				}
				else
				{
						$data_cart['price'] = $product_detail['price'];
				}

				$data_cart['subtotals'] += $data_cart['price'];

				$data_cart['options']['sku'] =  $product_detail['sku'];
				$data_cart['options']['color'] = ucwords($chosen_color);
				$data_cart['options']['size'] = $chosen_size;

				//get chosen image
				switch ($product_detail['image']) {
					case 'image1':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image1'];
							break;
					case 'image2':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image2'];
							break;
					case 'image3':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image3'];
							break;
					case 'image4':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image4'];
							break;
					case 'image5':
							$data_cart['options']['image'] = base_url() . 'uploads/product/small/' . $product['image5'];
							break;
				}
				
				if($greetingcard_text)
				{
						$data_cart['options']['greetingcard_text'] = $greetingcard_text;
						//get greeting card price
						$data_cart['options']['greetingcard_price'] = 'Rp ' . number_format($this->db->select('greetingcard_price')->from('configuration')->where('id_configuration', 1)->get()->row()->greetingcard_price, 0,",",".");
						$data_cart['options']['greetingcard_price_int'] = $this->db->select('greetingcard_price')->from('configuration')->where('id_configuration', 1)->get()->row()->greetingcard_price;

						$data_cart['subtotals'] += $data_cart['options']['greetingcard_price_int'];
				}

				if($chosenHeelsTypeId)
				{
						$chosenHeels = $this->db->select('product_attributes, additional_price')->from('product_attributes')->where('id_product_attributes', $chosenHeelsTypeId)->get()->row_array();
						$data_cart['options']['chosenHeelsTypeId'] = $chosenHeelsTypeId;
						$data_cart['options']['chosenHeelsType'] = $chosenHeels['product_attributes'];
						$data_cart['options']['chosenHeelsTypePrice'] = $chosenHeels['additional_price'];

						$data_cart['subtotals'] += $data_cart['options']['chosenHeelsTypePrice'];
				}

				if($chosenHeelsHeightId)
				{
						$chosenHeels = $this->db->select('product_attributes, additional_price')->from('product_attributes')->where('id_product_attributes', $chosenHeelsHeightId)->get()->row_array();
						$data_cart['options']['chosenHeelsHeightId'] = $chosenHeelsHeightId;
						$data_cart['options']['chosenHeelsHeight'] = $chosenHeels['product_attributes'];
						$data_cart['options']['chosenHeelsHeightPrice'] = $chosenHeels['additional_price'];

						$data_cart['subtotals'] += $data_cart['options']['chosenHeelsHeightPrice'];
				}

				if($chosenPlatformStyleId)
				{
						$chosenPlatform = $this->db->select('product_attributes, additional_price')->from('product_attributes')
						->where('id_product_attributes', $chosenPlatformStyleId)->get()->row_array();
						$data_cart['options']['chosenPlatformStyleId'] = $chosenPlatformStyleId;
						$data_cart['options']['chosenPlatformStyle'] = $chosenPlatform['product_attributes'];
						$data_cart['options']['chosenPlatformStylePrice'] = $chosenPlatform['additional_price'];

						$data_cart['subtotals'] += $data_cart['options']['chosenPlatformStylePrice'];
				}

				if($chosenPlatformHeightId)
				{
						$chosenPlatform = $this->db->select('product_attributes, additional_price')->from('product_attributes')->where('id_product_attributes', $chosenPlatformHeightId)->get()->row_array();
						$data_cart['options']['chosenPlatformHeightId'] = $chosenPlatformHeightId;
						$data_cart['options']['chosenPlatformHeight'] = $chosenPlatform['product_attributes'];
						$data_cart['options']['chosenPlatformHeightPrice'] = $chosenPlatform['additional_price'];

						$data_cart['subtotals'] += $data_cart['options']['chosenPlatformHeightPrice'];
				}

				if($chosenInitialLetters)
				{
						$data_cart['options']['chosenInitialEngraved'] = $chosenInitialLetters;
						$data_cart['options']['chosenInitialEngravedPrice'] = $chosenInitialLettersPrice;
						$data_cart['options']['chosenInitialEngravedImage'] = $chosenInitialLettersImage;

						$data_cart['subtotals'] += $data_cart['options']['chosenInitialEngravedPrice'];
				}

				$this->cart->product_name_rules = '[:print:]'; //this is to eliminate cart product name restriction on special characters

				$data_cart['cart_rowid'] = $this->cart->insert($data_cart); 
				
				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'data_cart' 	=> $data_cart,
				]));
		}

		//remove cart from product page
		public function ajax_removefromcart()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');  
				}

				$data = array(
					'rowid'   => $this->input->post('cart_rowid'),
					'qty'     => 0
				);

				$this->cart->update($data);

				$data_cart['name'] = ''; 
				$data_cart['qty'] = 0;
				$data_cart['price'] = 0;
				$data_cart['options']['color'] = '';
				$data_cart['options']['size'] = '';
				$data_cart['options']['image'] = '';
				
				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'data_cart' 	=> $data_cart,
				]));
		}
		
		//cart add quantity from cart page 
		public function add_quantity($rowid)
		{
				$requested_qty = 0;
				$stock_enough = TRUE;

				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $rowid)
						{
								$requested_qty = $item['qty'] + 1;

								//check if customize products, which has heels type
								if(!isset($item['options']['chosenHeelsTypePrice']))
								{
										//regular product
										//check current stock
										$product_detail = $this->db->select('stock')->from('product_details')->where('product_id', $item['id'])->where('sku', $item['options']['sku'])->get()->row_array();

										if($product_detail['stock'] < $requested_qty)
										{
												$stock_enough = FALSE;
										}
										
										break;
								}
						}
				}

				if(!$stock_enough)
				{
						$this->session->set_flashdata('message', "Stock not enough");
						redirect(base_url('cart')); 
				}

				$data_cart = array(
						'rowid'   => $rowid,
						'qty'     => $requested_qty
				);

				$this->cart->update($data_cart);

				redirect(base_url('cart')); 
		}

		//cart remove quantity from cart page
		public function remove_quantity($rowid)
		{
				$requested_qty = 0;
				$stock_enough = TRUE;

				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $rowid)
						{
								$requested_qty = $item['qty'] - 1;

								//check if customize products, which has heels type
								if(!isset($item['options']['chosenHeelsTypePrice']))
								{
										//regular product
										//check current stock
										$product_detail = $this->db->select('stock')->from('product_details')->where('product_id', $item['id'])->where('sku', $item['options']['sku'])->get()->row_array();

										if($product_detail['stock'] < $requested_qty)
										{
												$stock_enough = FALSE;
										}
										break;
								}
						}
				}

				if(!$stock_enough)
				{
						$this->session->set_flashdata('message', "Stock not enough");
						redirect(base_url('cart')); 
				}

				$data_cart = array(
						'rowid'   => $rowid,
						'qty'     => $requested_qty
				);

				$this->cart->update($data_cart);

				redirect(base_url('cart')); 
		}

		//cart add quantity from product page
		public function ajax_addquantity()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');   
				}

				$requested_qty = 0;
				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $this->input->post('cart_rowid'))
						{
							$requested_qty = $item['qty'] + 1;
							break;
						}
				}

				//check current stock
				$product_detail = $this->db->select('stock')->from('product_details')->where('product_id', $item['id'])->where('sku', $item['options']['sku'])->get()->row_array();

				if($product_detail['stock'] < $requested_qty)
				{
						return $this->output
								->set_content_type('application/json')
								->set_status_header(400)
								->set_output(json_encode([
										'error' 	=> 'Stock not enough',
						]));
				}

				$data_cart = array(
						'rowid'   => $this->input->post('cart_rowid'),
						'qty'     => $requested_qty
				);

				$this->cart->update($data_cart);

				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'qty' 	=> $data_cart['qty'],
				]));
		}

		//cart add quantity from product page custom
		public function ajax_addquantity_customize()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');   
				}

				$requested_qty = 0;
				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $this->input->post('cart_rowid'))
						{
							$requested_qty = $item['qty'] + 1;
							break;
						}
				}

				$data_cart = array(
						'rowid'   => $this->input->post('cart_rowid'),
						'qty'     => $requested_qty
				);

				$this->cart->update($data_cart);

				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'qty' 	=> $data_cart['qty'],
				]));
		}

		//cart add quantity from product page
		public function ajax_removequantity()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');   
				}

				$current_qty = 0;
				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $this->input->post('cart_rowid'))
						{
							$current_qty = $item['qty'];
							break;
						}
				}

				$data_cart = array(
					'rowid'   => $this->input->post('cart_rowid'),
					'qty'     => $current_qty - 1
				);

				$this->cart->update($data_cart);

				if($current_qty == 0) 
				{
						$data_cart['name'] = ''; 
						$data_cart['qty'] = 0;
						$data_cart['price'] = 0;
						$data_cart['options']['color'] = '';
						$data_cart['options']['size'] = '';
						$data_cart['options']['image'] = '';
						
						return $this->output
						->set_content_type('application/json')
						->set_status_header(201)
						->set_output(json_encode([
								'qty' 				=> $data_cart['qty'],
								'data_cart' 	=> $data_cart,
						]));
				}
				else
				{
						return $this->output
						->set_content_type('application/json')
						->set_status_header(201)
						->set_output(json_encode([
								'qty' 	=> $data_cart['qty'],
						]));
				}
		}

		//cart add quantity from product page custom
		public function ajax_removequantity_customize()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');   
				}

				$current_qty = 0;
				foreach($this->cart->contents() as $item)
				{
						if($item['rowid'] == $this->input->post('cart_rowid'))
						{
							$current_qty = $item['qty'];
							break;
						}
				}

				$data_cart = array(
					'rowid'   => $this->input->post('cart_rowid'),
					'qty'     => $current_qty - 1
				);

				$this->cart->update($data_cart);

				if($current_qty == 0) 
				{
						$data_cart['name'] = ''; 
						$data_cart['qty'] = 0;
						$data_cart['price'] = 0;
						$data_cart['options']['color'] = '';
						$data_cart['options']['size'] = '';
						$data_cart['options']['image'] = '';
						
						return $this->output
						->set_content_type('application/json')
						->set_status_header(201)
						->set_output(json_encode([
								'qty' 				=> $data_cart['qty'],
								'data_cart' 	=> $data_cart,
						]));
				}
				else
				{
						return $this->output
						->set_content_type('application/json')
						->set_status_header(201)
						->set_output(json_encode([
								'qty' 	=> $data_cart['qty'],
						]));
				}
		}

		//cart update purchase_notes
		public function ajax_update_purchasenote()
		{
				//test if ajax call to prevent direct access
				if(!$this->input->is_ajax_request()) 
				{
						exit('No direct script access allowed');   
				}

				$purchase_notes = $this->security->xss_clean($this->input->post('purchase_notes'));
				
				$this->session->set_userdata('purchase_notes', $purchase_notes);

				return $this->output
				->set_content_type('application/json')
				->set_status_header(201)
				->set_output(json_encode([
						'purchase_notes' 	=> $this->session->userdata('purchase_notes'),
				]));
		}
}

https://t.me/RX1948 - 2025