ok
Direktori : /home2/selectio/www/bharath/application/controllers/ |
Current File : /home2/selectio/www/bharath/application/controllers/Ajax_controller.php |
<?php defined('BASEPATH') or exit('No direct script access allowed'); class Ajax_controller extends Home_Core_Controller { public function __construct() { parent::__construct(); if (!$this->input->is_ajax_request()) { exit(); } $this->review_limit = 6; $this->comment_limit = 6; } /** * Remove Cart Discount Coupon */ public function remove_cart_discount_coupon() { $this->cart_model->remove_coupon(); } /* *------------------------------------------------------------------------------------------ * SEARCH LOCATION *------------------------------------------------------------------------------------------ */ //search location public function search_location() { if ($this->general_settings->location_search_header != 1) { exit(); } $input_value = $this->input->post('input_value', true); $input_value = remove_special_characters($input_value); $data = array( 'result' => 0, 'response' => '' ); $input_value = str_replace(',', '', $input_value); if (!empty($input_value)) { $response = '<ul>'; $countries = $this->location_model->search_countries($input_value); if (!empty($countries)) { $data['result'] = 1; foreach ($countries as $country) { $response .= '<li><a href="javascript:void(0)" data-country="' . $country->id . '"><i class="icon-map-marker"></i>' . $country->name . '</a></li>'; } } $states = $this->location_model->search_states($input_value); if (!empty($states)) { $data['result'] = 1; foreach ($states as $state) { $response .= '<li><a href="javascript:void(0)" data-country="' . $state->country_id . '" data-state="' . $state->id . '"><i class="icon-map-marker"></i>' . $state->name . ', ' . $state->country_name . '</a></li>'; } } $cities = $this->location_model->search_cities($input_value); if (!empty($cities)) { $data['result'] = 1; foreach ($cities as $city) { $response .= '<li><a href="javascript:void(0)" data-country="' . $city->country_id . '" data-state="' . $city->state_id . '" data-city="' . $city->id . '"><i class="icon-map-marker"></i>' . $city->name . ', ' . $city->state_name . ', ' . $city->country_name . '</a></li>'; } } $response .= '</ul>'; $data['response'] = $response; } echo json_encode($data); } //get states public function get_states() { $country_id = $this->input->post('country_id', true); $states = $this->location_model->get_states_by_country($country_id); $status = 0; $content = '<option value="">' . trans('state') . '</option>'; if (!empty($states)) { $status = 1; foreach ($states as $item) { $content .= '<option value="' . $item->id . '">' . html_escape($item->name) . '</option>'; } } $data = array( 'result' => $status, 'content' => $content ); echo json_encode($data); } //get cities public function get_cities() { $state_id = $this->input->post('state_id', true); $cities = $this->location_model->get_cities_by_state($state_id); $status = 0; $content = '<option value="">' . trans("city") . '</option>'; if (!empty($cities)) { $status = 1; foreach ($cities as $item) { $content .= '<option value="' . $item->id . '">' . html_escape($item->name) . '</option>'; } } $data = array( 'result' => $status, 'content' => $content ); echo json_encode($data); } /* *------------------------------------------------------------------------------------------ * AJAX SEARCH *------------------------------------------------------------------------------------------ */ //ajax search public function ajax_search() { $lang_base_url = $this->input->post('lang_base_url', true); $input_value = $this->input->post('input_value', true); $category = clean_number($this->input->post('category', true)); if (empty($category)) { $category = "all"; } $input_value = clean_str($input_value); $data = array( 'result' => 0, 'response' => '' ); if (!empty($input_value)) { $data['result'] = 1; $response = '<div class="search-results-product"><ul>'; $products = $this->product_model->search_products($input_value, $category); if (!empty($products)) { foreach ($products as $product) { $price = ""; if ($product->listing_type != 'bidding') { if ($product->is_free_product == 1) { $price = trans("free"); } else { if (!empty($product->price)) { if ($product->listing_type == 'ordinary_listing') { $price = price_formatted(calculate_product_price($product->price, $product->discount_rate), $product->currency, false); } else { $price = price_formatted(calculate_product_price($product->price, $product->discount_rate), $product->currency, true); } } } } $response .= '<li>'; $response .= '<a href="' . $lang_base_url . $product->slug . '"><div class="left"><div class="search-image"><img src="' . get_product_item_image($product) . '" alt=""></div></div>'; $response .= '<div class="search-product"><p class="m-0">' . get_product_title($product) . '</p><strong class="price">' . $price . '</strong></div></a></li>'; } } else { $response .= '<li><a href="javascript:void(0)">' . $input_value . '</a></li>'; } $response .= '</ul></div>'; $data['response'] = $response; } echo json_encode($data); } //search categories public function search_categories() { $category_name = $this->input->post('category_name', true); $categories = $this->category_model->search_categories_by_name($category_name); $content = '<ul>'; if (!empty($categories)) { foreach ($categories as $item) { $content .= '<li>' . html_escape($item->name) . ' - <strong>' . trans("id") . ': ' . $item->id . '</strong></li>'; } $content .= '</ul>'; } else { $content = '<p class="m-t-15 text-center text-muted">' . trans("no_records_found") . '</p>'; } $data = array( 'result' => 1, 'content' => $content ); echo json_encode($data); } //get subcategories public function get_subcategories() { $parent_id = $this->input->post('parent_id', true); $lang_id = $this->input->post('lang_id', true); $html_content = ''; if (!empty($parent_id)) { $subcategories = $this->category_model->get_subcategories_by_parent_id($parent_id, $lang_id); foreach ($subcategories as $item) { $html_content .= "<option value='" . $item->id . "'>" . $item->name . "</option>"; } } $data = array( 'result' => 1, 'html_content' => $html_content, ); echo json_encode($data); } /* *------------------------------------------------------------------------------------------ * VARIATION FUNCTIONS *------------------------------------------------------------------------------------------ */ //select variation option public function select_product_variation_option() { $variation_id = $this->input->post('variation_id', true); $selected_option_id = $this->input->post('selected_option_id', true); $variation = $this->variation_model->get_variation($variation_id); $option = $this->variation_model->get_variation_option($selected_option_id); $data = array( 'status' => 0, 'html_content_slider' => "", 'html_content_price' => "", 'html_content_stock' => "", 'stock_status' => 1, ); if (!empty($variation) && !empty($option)) { $product = $this->product_model->get_product_by_id($variation->product_id); //slider content response if ($variation->show_images_on_slider) { $product_images = $this->variation_model->get_variation_option_images($selected_option_id); if (empty($product_images)) { $product_images = $this->file_model->get_product_images($variation->product_id); } $vars = array( "product" => $product, "product_images" => $product_images ); $data["html_content_slider"] = $this->load->view('product/details/_preview', $vars, true); } //price content response if ($variation->use_different_price == 1) { $price = $product->price; $discount_rate = $product->discount_rate; if (isset($option->price)) { $price = $option->price; } if (isset($option->discount_rate)) { $discount_rate = $option->discount_rate; } if (empty($price)) { $price = $product->price; $discount_rate = $product->discount_rate; } $vars = array( "product" => $product, "price" => $price, "discount_rate" => $discount_rate ); $data["html_content_price"] = $this->load->view('product/details/_price', $vars, true); } //stock content response $stock = $product->stock; if ($option->is_default != 1) { $stock = $option->stock; } if ($stock == 0) { $data["html_content_stock"] = '<span class="text-danger">' . trans("out_of_stock") . '</span>'; $data["stock_status"] = 0; } else { $data["html_content_stock"] = '<span class="text-success">' . trans("in_stock") . '</span>'; } $data["status"] = 1; } echo json_encode($data); } //get sub variation options public function get_sub_variation_options() { $variation_id = $this->input->post('variation_id', true); $selected_option_id = $this->input->post('selected_option_id', true); $subvariation = $this->variation_model->get_product_sub_variation($variation_id); $content = null; $data = array( 'status' => 0, 'subvariation_id' => "", 'html_content' => "" ); if (!empty($subvariation)) { $options = $this->variation_model->get_variation_sub_options($selected_option_id); if (!empty($options)) { $content .= '<option value="">' . trans("select") . '</option>'; foreach ($options as $option) { $option_name = get_variation_option_name($option->option_names, $this->selected_lang->id); $content .= '<option value="' . $option->id . '">' . html_escape($option_name) . '</option>'; } } $data["status"] = 1; $data["subvariation_id"] = $subvariation->id; $data["html_content"] = $content; } echo json_encode($data); } /* *------------------------------------------------------------------------------------------ * WISHLIST FUNCTIONS *------------------------------------------------------------------------------------------ */ //add or remove wishlist public function add_remove_wishlist() { $product_id = $this->input->post('product_id', true); $this->product_model->add_remove_wishlist($product_id); } /* *------------------------------------------------------------------------------------------ * PRODUCT COMMENTS FUNCTIONS *------------------------------------------------------------------------------------------ */ //add comment public function add_comment() { post_method(); if ($this->general_settings->product_comments != 1) { exit(); } $limit = $this->input->post('limit', true); $product_id = $this->input->post('product_id', true); if ($this->auth_check) { $this->comment_model->add_comment(); } else { if ($this->recaptcha_verify_request()) { $this->comment_model->add_comment(); } } if (has_permission('comments')) { $this->generate_comment_html_content($product_id, $limit); exit(); } if ($this->general_settings->comment_approval_system == 1) { $data = array( 'type' => 'message', 'html_content' => "<p class='comment-success-message'><i class='icon-check'></i> " . trans("msg_comment_sent_successfully") . "</p>" ); echo json_encode($data); } else { $this->generate_comment_html_content($product_id, $limit); } } //load more comment public function load_more_comment() { post_method(); $product_id = $this->input->post('product_id', true); $limit = $this->input->post('limit', true); $new_limit = $limit + $this->comment_limit; $this->generate_comment_html_content($product_id, $new_limit); } //delete comment public function delete_comment() { post_method(); $id = $this->input->post('id', true); $product_id = $this->input->post('product_id', true); $limit = $this->input->post('limit', true); $comment = $this->comment_model->get_comment($id); if ($this->auth_check && !empty($comment)) { if (has_permission('comments') || $this->auth_user->id == $comment->user_id) { $this->comment_model->delete_comment($id); } } $this->generate_comment_html_content($product_id, $limit); } //load subcomment box public function load_subcomment_box() { $comment_id = $this->input->post('comment_id', true); $limit = $this->input->post('limit', true); $vars = array( "parent_comment" => $this->comment_model->get_comment($comment_id), "comment_limit" => $limit ); $html_content = $this->load->view('product/details/_add_subcomment', $vars, true); $data = array( 'type' => 'form', 'html_content' => $html_content, ); echo json_encode($data); } //generate comment html content private function generate_comment_html_content($product_id, $limit) { $vars = array( "product" => $this->product_model->get_product_by_id($product_id), "comment_count" => $this->comment_model->get_product_comment_count($product_id), "comments" => $this->comment_model->get_comments($product_id, $limit), "comment_limit" => $limit ); $html_content = $this->load->view('product/details/_comments', $vars, true); $data = array( 'type' => 'comments', 'html_content' => $html_content, ); echo json_encode($data); } /* *------------------------------------------------------------------------------------------ * BLOG COMMENTS FUNCTIONS *------------------------------------------------------------------------------------------ */ /** * Add Blog Comment */ public function add_blog_comment() { if ($this->general_settings->blog_comments != 1) { exit(); } $post_id = $this->input->post('post_id', true); $limit = $this->input->post('limit', true); if ($this->auth_check) { $this->comment_model->add_blog_comment(); } else { if ($this->recaptcha_verify_request()) { $this->comment_model->add_blog_comment(); } } if ($this->general_settings->comment_approval_system == 1) { $data = array( 'type' => 'message', 'html_content' => "<p class='comment-success-message'><i class='icon-check'></i> " . trans("msg_comment_sent_successfully") . "</p>" ); echo json_encode($data); } else { $this->generate_comment_blog_html_content($post_id, $limit); } } /** * Delete Blog Comment */ public function delete_blog_comment() { $comment_id = $this->input->post('comment_id', true); $post_id = $this->input->post('post_id', true); $limit = $this->input->post('limit', true); $comment = $this->comment_model->get_blog_comment($comment_id); if ($this->auth_check && !empty($comment)) { if (has_permission('comments') || $this->auth_user->id == $comment->user_id) { $this->comment_model->delete_blog_comment($comment_id); } } $this->generate_comment_blog_html_content($post_id, $limit); } /** * Load More Comments */ public function load_more_blog_comments() { $post_id = $this->input->post('post_id', true); $limit = $this->input->post('limit', true); $new_limit = $limit + $this->comment_limit; $this->generate_comment_blog_html_content($post_id, $new_limit); } //generate blog comment html content private function generate_comment_blog_html_content($post_id, $limit) { $vars = array( "comments" => $this->comment_model->get_blog_comments($post_id, $limit), "comment_post_id" => $post_id, "comments_count" => $this->comment_model->get_blog_comment_count($post_id), "comment_limit" => $limit ); $html_content = $this->load->view('blog/_blog_comments', $vars, true); $data = array( 'type' => 'comments', 'html_content' => $html_content, ); echo json_encode($data); } /* *------------------------------------------------------------------------------------------------- * ABUSE REPORTS *------------------------------------------------------------------------------------------------- */ //report abuse public function report_abuse_post() { if (!$this->auth_check) { exit(); } $data = array( 'message' => "<p class='text-danger'>" . trans("msg_error") . "</p>" ); if ($this->review_model->report_abuse()) { $data['message'] = "<p class='text-success'>" . trans("abuse_report_msg") . "</p>"; } echo json_encode($data); } /* *------------------------------------------------------------------------------------------------- * LOCATION REPORTS *------------------------------------------------------------------------------------------------- */ //get countries by continent public function get_countries_by_continent() { $key = $this->input->post('key', true); $countries = $this->location_model->get_countries_by_continent($key); if (!empty($countries)) { foreach ($countries as $country) { echo "<option value='" . $country->id . "'>" . html_escape($country->name) . "</option>"; } } } //get states by country public function get_states_by_country() { $country_id = $this->input->post('country_id', true); $states = $this->location_model->get_states_by_country($country_id); if (!empty($states)) { foreach ($states as $state) { echo "<option value='" . $state->id . "'>" . html_escape($state->name) . "</option>"; } } } //get product shipping cost public function get_product_shipping_cost() { $state_id = $this->input->post('state_id', true); $product_id = $this->input->post('product_id', true); $this->shipping_model->get_product_shipping_cost($state_id, $product_id); } /* *------------------------------------------------------------------------------------------ * NEWSLETTER *------------------------------------------------------------------------------------------ */ /** * Add to Newsletter */ public function add_to_newsletter() { post_method(); $vld = $this->input->post('url', true); if (!empty($vld)) { exit(); } $data = array( 'result' => 0, 'response' => "", 'is_success' => "", ); $email = clean_str($this->input->post('email', true)); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $data['response'] = '<p class="text-danger m-t-5">' . trans("msg_invalid_email") . '</p>'; } else { if ($email) { if (empty($this->newsletter_model->get_subscriber($email))) { if ($this->newsletter_model->add_subscriber($email)) { $data['response'] = '<p class="text-success m-t-5">' . trans("msg_newsletter_success") . '</p>'; $data['is_success'] = 1; } } else { $data['response'] = '<p class="text-danger m-t-5">' . trans("msg_newsletter_error") . '</p>'; } } } $data['result'] = 1; echo json_encode($data); } /* *------------------------------------------------------------------------------------------ * EMAIL FUNCTIONS *------------------------------------------------------------------------------------------ */ //send email public function send_email() { $email_type = $this->input->post('email_type', true); if ($email_type == 'contact') { $this->send_email_contact_message(); } elseif ($email_type == 'new_order') { $this->send_email_new_order(); } elseif ($email_type == 'new_product') { $this->send_email_new_product(); } elseif ($email_type == 'order_shipped') { $this->send_email_order_shipped(); } elseif ($email_type == 'new_message') { $this->send_email_new_message(); } elseif ($email_type == 'email_general') { $this->send_email_general(); } } //send email contact message public function send_email_contact_message() { if ($this->general_settings->send_email_contact_messages == 1) { $this->load->model("email_model"); $data = array( 'subject' => trans("contact_message"), 'to' => $this->general_settings->mail_options_account, 'template_path' => "email/email_contact_message", 'message_name' => $this->input->post('message_name', true), 'message_email' => $this->input->post('message_email', true), 'message_text' => $this->input->post('message_text', true) ); $this->email_model->send_email($data); } } //send email order summary to user public function send_email_new_order() { if ($this->general_settings->send_email_buyer_purchase == 1) { $this->load->model("email_model"); $order_id = $this->input->post('order_id', true); $order_id = clean_number($order_id); $order = get_order($order_id); $order_products = $this->order_model->get_order_products($order_id); $order_shipping = get_order_shipping($order_id); if (!empty($order)) { //send to buyer $to = ""; if (!empty($order_shipping)) { $to = $order_shipping->shipping_email; } if ($order->buyer_type == "registered") { $user = get_user($order->buyer_id); if (!empty($user)) { $to = $user->email; } } $data = array( 'subject' => trans("email_text_thank_for_order"), 'order' => $order, 'order_products' => $order_products, 'to' => $to, 'template_path' => "email/email_new_order" ); $this->email_model->send_email($data); //send to seller if (!empty($order_products)) { $seller_ids = array(); foreach ($order_products as $order_product) { $seller = get_user($order_product->seller_id); if (!empty($seller)) { if (!in_array($seller->id, $seller_ids)) { array_push($seller_ids, $seller->id); $seller_order_products = $this->order_model->get_seller_order_products($order_id, $seller->id); $data = array( 'subject' => trans("you_have_new_order"), 'order' => $order, 'order_products' => $seller_order_products, 'to' => $seller->email, 'template_path' => "email/email_new_order_seller" ); $this->email_model->send_email($data); } } } } } } } //send email new product public function send_email_new_product() { if ($this->general_settings->send_email_new_product == 1) { $this->load->model("email_model"); $product_id = $this->input->post('product_id', true); $product = $this->product_model->get_product_by_id($product_id); if (!empty($product)) { $data = array( 'subject' => trans("email_text_new_product"), 'product_url' => generate_product_url($product), 'to' => $this->general_settings->mail_options_account, 'template_path' => "email/email_new_product" ); $this->email_model->send_email($data); } } } //send email new message public function send_email_new_message() { $this->load->model("email_model"); $sender_id = $this->input->post('sender_id', true); $receiver_id = $this->input->post('receiver_id', true); $receiver = get_user($receiver_id); if (!empty($receiver) && !empty($sender_id)) { $data = array( 'subject' => trans("you_have_new_message"), 'to' => $receiver->email, 'template_path' => "email/email_new_message", 'message_sender' => "", 'message_subject' => $this->input->post('message_subject', true), 'message_text' => $this->input->post('message_text', true) ); $sender = get_user($sender_id); if (!empty($sender)) { $data['message_sender'] = $sender->username; } $this->email_model->send_email($data); } } //send email order shipped public function send_email_order_shipped() { if ($this->general_settings->send_email_order_shipped == 1) { $this->load->model("email_model"); $order_product_id = $this->input->post('order_product_id', true); $order_product = $this->order_model->get_order_product($order_product_id); if (!empty($order_product)) { $order = get_order($order_product->order_id); $order_shipping = $this->order_model->get_order_shipping($order_product->order_id); if (!empty($order)) { $to = ""; if (!empty($order_shipping)) { $to = $order_shipping->shipping_email; } if (!empty($to)) { $data = array( 'subject' => trans("your_order_shipped"), 'to' => $to, 'template_path' => "email/email_order_shipped", 'order' => $order, 'order_product' => $order_product ); $this->email_model->send_email($data); } } } } } //send email general public function send_email_general() { $this->load->model("email_model"); $data = array( 'template_path' => "email/email_general", 'to' => $this->input->post('to', true), 'subject' => $this->input->post('subject', true), 'email_content' => $this->input->post('email_content', true), 'email_link' => $this->input->post('email_link', true), 'email_button_text' => $this->input->post('email_button_text', true) ); $this->email_model->send_email($data); } }