public function info($dealer = '')
 {
     try {
         if (empty($dealer)) {
             throw new Exception();
         }
         if (is_numeric($dealer)) {
             $dealer_id = $dealer;
         } else {
             $segment = explode('-', $dealer);
             if (count($segment) == 1) {
                 throw new Exception();
             }
             $dealer_id = $segment[count($segment) - 1];
             if (!is_numeric($dealer_id)) {
                 throw new Exception();
             }
         }
         $user_model = $this->load->model('user_model');
         if (!($dealer_info = $user_model->get_user_by_id($dealer_id)) || !$dealer_info['is_dealer'] || $dealer_info['is_block']) {
             throw new Exception();
         }
         if (is_numeric($dealer) && !empty($dealer_info['alias'])) {
             wp_redirect(AT_Common::site_url('dealer/info/' . trim($dealer_info['alias'] . '-' . $dealer_info['id'], '-') . '/'), 301);
             exit;
         }
     } catch (Exception $e) {
         AT_Core::show_404();
     }
     switch ($dealer_info['layout']) {
         case 'layout_2':
             $layout = 'content';
             $right_side = 'content/right_side';
             break;
         default:
             $layout = 'content_right';
             $right_side = 'right_side';
             break;
     }
     $car_model = $this->load->model('car_model');
     $reference_model = $this->load->model('reference_model');
     $dealer_contact = array();
     $affiliate = $user_model->get_dealer_main_affiliate($dealer_info['id']);
     if ($affiliate) {
         $phones = array();
         if (trim($affiliate['phone']) != '') {
             $phones[] = trim($affiliate['phone']);
         }
         if (trim($affiliate['phone_2']) != '') {
             $phones[] = trim($affiliate['phone_2']);
         }
         $dealer_contact = array('phones' => implode('<br/>', $phones), 'email' => $affiliate['email'], 'adress' => (!empty($affiliate['region']) ? $affiliate['region'] . ', ' : '') . $affiliate['adress'], 'url' => AT_Common::site_url('dealer/info/' . trim($dealer_info['alias'] . '-' . $dealer_info['id'], '-') . '/'));
     }
     $affiliates = $user_model->get_dealer_affiliates($dealer_info['id']);
     $paginator = $this->load->library('paginator');
     $paginator = $paginator->get(3, $car_model->get_cars_count_by_user_id($dealer_info['id']), $dealer_info['per_page']);
     $this->breadcrumbs->add_item(__('Catalog', AT_TEXTDOMAIN), 'catalog');
     $this->breadcrumbs->add_item($dealer_info['name'], 'dealer/info/' . trim($dealer_info['alias'] . '-' . $dealer_info['id'], '-') . '/');
     $this->view->use_layout('header_' . $layout . '_footer')->add_block('page_title', 'general/page_title', array('page_title' => $dealer_info['name']))->add_block($right_side, 'dealer/right_side', array('dealer_info' => $dealer_info, 'dealer_contact' => $dealer_contact, 'affiliate' => $affiliate, 'affiliates' => $user_model->get_dealer_affiliates($dealer_info['id'])))->add_block('content', 'dealer/info', array('layout' => $layout, 'best_offers' => $car_model->get_best_offers($dealer_info['id']), 'cars' => $car_model->get_cars_by_user_id($dealer_info['id'], $paginator['offset'], $paginator['per_page'])))->add_block('content/pagination', 'general/pagination', $paginator);
 }
 public function __construct()
 {
     parent::__construct();
     if ($this->core->get_option('site_type', 'mode_soletrader') != 'mode_partnership' && $this->uri->segments(1) != 'unlogged') {
         AT_Core::show_404();
     }
 }
 public function registration()
 {
     if ($this->core->get_option('site_type', 'mode_soletrader') == 'mode_soletrader' || !$this->core->get_option('registration_enable', true)) {
         AT_Core::show_404();
     }
     if ($this->uri->is_ajax_request() && !empty($_POST) && !AT_Common::is_user_logged()) {
         try {
             if (!$this->validation->run('registration')) {
                 throw new Exception(serialize($this->validation->get_errors()));
             }
             $user_model = $this->load->model('user_model');
             $data = array('name' => $_POST['name'], 'email' => $_POST['email'], 'password' => $_POST['pass'], 'is_dealer' => 0);
             $user_id = $user_model->create($data);
             $data = array('logged' => true, 'user_id' => $user_id);
             $this->session->sess_create($data);
             $user_model = $this->load->model('user_model');
             $mail_model = $this->load->model('mail_model');
             $user_info = $user_model->get_user_by_id($user_id);
             $code = $user_model->get_confirm_email_code($user_info['id'], $user_info['email']);
             $data = array('username' => $user_info['name'], 'confirm_url' => AT_Common::site_url('auth/confirm_email/' . $code . '/'), 'confirm_code' => $code);
             $mail_model->send('template_mail_confirm_email', $user_info['email'], $data);
             $response = array('status' => 'OK', 'redirect_url' => AT_Common::site_url('/profile/'));
         } catch (Exception $e) {
             $response = array('status' => 'ERROR', 'message' => unserialize($e->getMessage()));
         }
         $this->view->add_json($response)->display();
         exit;
     }
     if (!AT_Common::is_user_logged()) {
         $this->view->use_layout('header_content2_footer');
         $this->view->add_block('content', 'auth/registration', array('background' => $this->_get_rand_bg()));
     } else {
         AT_Common::redirect('profile/');
     }
 }
 public function want_be_dealer()
 {
     if (!$this->uri->is_ajax_request() || empty($_POST) || !isset($_POST['comment'])) {
         AT_Core::show_404();
     }
     try {
         $comment = trim($_POST['comment']);
         if (empty($comment)) {
             throw new Exception(__('Comment is empty!', AT_TEXTDOMAIN));
         }
         $mail_model = $this->load->model('mail_model');
         $user_info = $this->registry->get('user_info');
         $data = array('username' => $user_info['name'], 'comment' => $comment);
         $adm_email = get_option('admin_email');
         if (!$mail_model->send('template_mail_notify_want_be_dealer', $adm_email, $data, $user_info['email'], $user_info['name'])) {
             throw new Exception(__('Error send email! Try later.', AT_TEXTDOMAIN));
         }
         $response = array('status' => 'OK', 'message' => __('The request was sent.', AT_TEXTDOMAIN));
     } catch (Exception $e) {
         $response = array('status' => 'ERROR', 'message' => $e->getMessage());
     }
     $this->view->add_json($response)->display();
     exit;
 }
 public function ajax_add_offer($car_id = '')
 {
     $car_id = (int) $car_id;
     if (!$this->uri->is_ajax_request() || $car_id == 0) {
         AT_Core::show_404();
     }
     $car_model = $this->load->model('car_model');
     if (!($car_info = $car_model->get_car_info($car_id))) {
         AT_Core::show_404();
     }
     try {
         if (!$this->validation->run('add_offer')) {
             throw new Exception(serialize($this->validation->get_errors()));
         }
         $mail_model = $this->load->model('mail_model');
         $user_model = $this->load->model('user_model');
         $owner_info = $user_model->get_user_by_id($car_info['options']['_owner_id']);
         $dealer_email = '';
         if ($owner_info['is_dealer']) {
             if ($car_info['options']['_affiliate_id'] > 0) {
                 $affiliate = $user_model->get_dealer_affiliate_by_id($car_info['options']['_affiliate_id']);
             }
             if (empty($affiliate)) {
                 $affiliate = $user_model->get_dealer_main_affiliate($car_info['options']['_owner_id']);
             }
             if ($affiliate) {
                 $dealer_email = $affiliate['email'];
             }
         }
         if (!$owner_info['is_dealer'] || $dealer_email == '') {
             $dealer_email = $owner_info['email'];
         }
         $cost = AT_Common::show_full_price($value = $car_info['options']['_price'], $currency = $car_info['options']['_currency_id']);
         $data = array('dealer_name' => $owner_info['name'], 'username' => $_POST['fullname'], 'user_email' => $_POST['email'], 'car_name' => trim($car_info['options']['_manufacturer_id']['name'] . ' ' . $car_info['options']['_model_id']['name'] . ' ' . $car_info['options']['_version']), 'cost' => $cost, 'offer_details' => $_POST['offer_details'], 'link_car' => get_permalink($car_id));
         if (!$mail_model->send('template_mail_add_offer', $dealer_email, $data, $_POST['email'], $_POST['fullname'])) {
             throw new Exception(serialize(array('email' => __('Error send email! Try later.', AT_TEXTDOMAIN))));
         }
         $response = array('status' => 'OK', 'message' => __('The offer was sent.', AT_TEXTDOMAIN));
     } catch (Exception $e) {
         $response = array('status' => 'ERROR', 'message' => unserialize($e->getMessage()));
     }
     $this->view->add_json($response)->display();
 }
 public function single()
 {
     $car_model = $this->load->model('car_model');
     $user_model = $this->load->model('user_model');
     if (!($car_info = $car_model->get_car_info(get_the_ID()))) {
         AT_Core::show_404();
     }
     $car_model->set_car_views(get_the_ID());
     $reference_model = $this->load->model('reference_model');
     $photo_model = $this->load->model('photo_model');
     $owner_info = $user_model->get_user_by_id($car_info['options']['_owner_id']);
     $contacts_owner = array();
     if ($owner_info['is_dealer']) {
         if ($car_info['options']['_affiliate_id'] > 0) {
             $affiliate = $user_model->get_dealer_affiliate_by_id($car_info['options']['_affiliate_id']);
         }
         if (empty($affiliate)) {
             $affiliate = $user_model->get_dealer_main_affiliate($car_info['options']['_owner_id']);
         }
         if ($affiliate) {
             $phones = array();
             if (!empty($affiliate['phone'])) {
                 $phones[] = $affiliate['phone'];
             }
             if (!empty($affiliate['phone_2'])) {
                 $phones[] = $affiliate['phone_2'];
             }
             $contacts_owner = array('phones' => implode(', ', $phones), 'email' => $affiliate['email'], 'adress' => (!empty($affiliate['region']) ? $affiliate['region'] . ', ' : '') . $affiliate['adress'], 'url' => AT_Common::site_url('dealer/info/' . trim($owner_info['alias'] . '-' . $car_info['options']['_owner_id'], '-') . '/'), 'add_offer' => true, 'is_dealer' => true, 'name' => $owner_info['name'], 'photo' => $owner_info['photo']);
         } else {
             $phones = array();
             if (!empty($owner_info['phone'])) {
                 $phones[] = $owner_info['phone'];
             }
             if (!empty($owner_info['phone_2'])) {
                 $phones[] = $owner_info['phone_2'];
             }
             $contacts_owner = array('phones' => implode(', ', $phones), 'email' => '', 'adress' => '', 'url' => AT_Common::site_url('dealer/info/' . trim($owner_info['alias'] . '-' . $car_info['options']['_owner_id'], '-') . '/'), 'add_offer' => true, 'is_dealer' => true, 'name' => $owner_info['name'], 'photo' => $owner_info['photo']);
         }
     } else {
         $phones = array();
         if (!empty($owner_info['phone'])) {
             $phones[] = $owner_info['phone'];
         }
         if (!empty($owner_info['phone_2'])) {
             $phones[] = $owner_info['phone_2'];
         }
         if (isset($owner_info['region_id'])) {
             $region = $reference_model->get_region_by_id($owner_info['region_id']);
         }
         $contacts_owner = array('phones' => implode(', ', $phones), 'email' => $owner_info['email'], 'adress' => !empty($region['name']) ? $region['name'] : '', 'url' => '', 'add_offer' => false, 'is_dealer' => false, 'name' => $owner_info['name'], 'photo' => $owner_info['photo']);
     }
     $this->breadcrumbs->add_item(__('Catalog', AT_TEXTDOMAIN), 'catalog/');
     if ($manufacturer_data = $reference_model->get_manufacturer_by_id($car_info['options']['_manufacturer_id'])) {
         $this->breadcrumbs->add_item($manufacturer_data['name'], 'catalog/' . $manufacturer_data['alias']);
         if ($model_data = $reference_model->get_model_by_id($car_info['options']['_model_id'])) {
             $this->breadcrumbs->add_item($model_data['name'], 'catalog/' . $manufacturer_data['alias'] . '/' . $model_data['alias']);
         }
     }
     $this->breadcrumbs->add_item($car_info['post_title'], '');
     $this->view->use_layout('header_content_footer')->add_block('content', 'car/view', array('car_info' => $car_info, 'contacts_owner' => $contacts_owner, 'car_photos' => $photo_model->get_photos_by_post(get_the_ID(), 'car'), 'equipments' => $reference_model->get_equipments(), 'car_views' => $car_model->get_car_views(get_the_ID()), 'is_dealer' => $owner_info['is_dealer']))->add_block('content/recent_cars', 'car/recent_cars', array('cars' => $car_model->get_similar_car(get_the_ID())));
     //->add_block('content/loan_calculator', 'additions/loan_calculator');
 }
 public function upload()
 {
     if (empty($_POST) || empty($_FILES) || !isset($_FILES["file"])) {
         AT_Core::show_404();
     }
     $_file_a = explode('.', $_FILES["file"]["name"]);
     if (count($_file_a) <= 1) {
         //AT_Core::show_404();
         $file_name = uniqid("car_") . '.jpg';
     } else {
         $file_name = uniqid("car_") . '.' . $_file_a[count($_file_a) - 1];
     }
     //$file_name = uniqid("car_") . '.' . $_file_a[count($_file_a)-1];
     $targetDir = AT_DIR_THEME . '/uploads';
     $cleanupTargetDir = false;
     // Remove old files
     $maxFileAge = 5 * 3600;
     // Temp file age in seconds
     $filePath = $targetDir . DIRECTORY_SEPARATOR . $file_name;
     // Chunking might be enabled
     $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
     $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
     try {
         // Open temp file
         if (!($out = @fopen("{$filePath}.part", $chunks ? "ab" : "wb"))) {
             throw new Exception('{"status" : "ERROR", "code": 102, "message": "Failed to open output stream."}');
         }
         if (!empty($_FILES)) {
             if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
                 throw new Exception('{"status" : "ERROR", "code": 103, "message": "Failed to move uploaded file."}');
             }
             // Read binary input stream and append it to temp file
             if (!($in = @fopen($_FILES["file"]["tmp_name"], "rb"))) {
                 throw new Exception('{"status" : "ERROR", "code": 101, "message": "Failed to open input stream."}');
             }
         } else {
             if (!($in = @fopen("php://input", "rb"))) {
                 throw new Exception('{"status" : "ERROR", "code": 101, "message": "Failed to open input stream."}');
             }
         }
         while ($buff = fread($in, 4096)) {
             fwrite($out, $buff);
         }
         @fclose($out);
         @fclose($in);
         // Check if file has been uploaded
         if (!$chunks || $chunk == $chunks - 1) {
             // Strip the temp .part suffix off
             rename("{$filePath}.part", $filePath);
         }
         // Return Success JSON-RPC response
         $response = '{"status" : "OK", "file_name" : "' . $file_name . '", "file_name_url" : "' . AT_Common::static_url('uploads/' . $file_name) . '"}';
         throw new Exception($response);
     } catch (Exception $e) {
         $this->view->add_json(json_decode($e->getMessage()))->display();
     }
 }