/**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // check nonce
     $this->check_nonce();
     // @todo set filters
     $filters = array();
     // get filters from get vars
     foreach ($_GET as $get_key => $get_var) {
         if (0 === strpos($get_key, 'filter_')) {
             $filters[str_ireplace('filter_', '', $get_key)] = absint($get_var);
         }
     }
     // get vehicles
     $vehicle_manager = new Vehicle\Manager();
     $vehicles = $vehicle_manager->get_vehicles($filters);
     // check & loop
     if (count($vehicles) > 0) {
         foreach ($vehicles as $vehicle) {
             // title
             $title = get_the_title($vehicle->get_id());
             // get image
             $image = get_the_post_thumbnail($vehicle->get_id(), apply_filters('wpcm_listings_vehicle_thumbnail_size', 'wpcm_vehicle_listings_item'), array('title' => $title, 'alt' => $title, 'class' => 'wpcm-listings-item-image'));
             // load template
             wp_car_manager()->service('template_manager')->get_template_part('listings/item', '', array('url' => get_permalink($vehicle->get_id()), 'title' => $title, 'image' => $image, 'description' => $vehicle->get_short_description(), 'price' => $vehicle->get_formatted_price(), 'mileage' => $vehicle->get_formatted_mileage(), 'frdate' => $vehicle->get_formatted_frdate()));
         }
     } else {
         wp_car_manager()->service('template_manager')->get_template_part('listings/no-results', '', array());
     }
     // bye
     exit;
 }
Esempio n. 2
0
 /**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // check nonce
     $this->check_nonce();
     // check if make is set
     if (!isset($_GET['make'])) {
         return;
     }
     // make
     $make = absint($_GET['make']);
     // models array
     $models = array();
     // get raw models
     $models_raw = wp_car_manager()->service('make_model_manager')->get_models($make);
     // check & loop
     if (count($models_raw) > 0) {
         foreach ($models_raw as $model_raw) {
             // add to $models array
             $models[] = array('id' => $model_raw['id'], 'name' => $model_raw['name']);
         }
     }
     // send JSON
     wp_send_json($models);
     // bye
     exit;
 }
Esempio n. 3
0
 /**
  * AJAX 'get_models' callback
  */
 public function ajax_get_models()
 {
     // check nonce
     check_ajax_referer('wpcm-dat-ajax-nonce', 'nonce');
     // check if make is set
     if (!isset($_POST['make'])) {
         return;
     }
     // make
     $make = absint($_POST['make']);
     // models array
     $models = array();
     // get raw models
     $models_raw = wp_car_manager()->service('make_model_manager')->get_models($make);
     // check & loop
     if (count($models_raw) > 0) {
         foreach ($models_raw as $model_raw) {
             // add to $models array
             $models[] = array('id' => $model_raw['id'], 'name' => $model_raw['name']);
         }
     }
     // send JSON
     wp_send_json($models);
     // bye
     exit;
 }
Esempio n. 4
0
 /**
  * Formats mileage
  *
  * @param $mileage
  *
  * @return string
  */
 public static function mileage($mileage)
 {
     /** @var Settings $settings */
     $settings = wp_car_manager()->service('settings');
     // translated distance units
     $translated_distance_units = array('miles' => __('miles', 'wp-car-manager'), 'km' => __('km', 'wp-car-manager'));
     return number_format($mileage ? $mileage : 0, 0, $settings->get_option('decimal_separator'), $settings->get_option('thousand_separator')) . ' ' . $translated_distance_units[$settings->get_option('distance_unit')];
 }
 /**
  * @param array $atts
  *
  * @return string
  */
 public function output($atts)
 {
     // JS
     WPCarManager\Assets::enqueue_shortcode_submit_car_form();
     // start output buffer
     ob_start();
     wp_car_manager()->service('submit_car_handler')->display_next_step();
     return ob_get_clean();
 }
Esempio n. 6
0
 /**
  * Actual meta box output
  *
  * @param \WP_Post $post
  */
 public function meta_box_output($post)
 {
     // nonce
     $this->output_nonce();
     // vehicle
     $vehicle = wp_car_manager()->service('vehicle_factory')->make($post->ID);
     // load view
     wp_car_manager()->service('view_manager')->display('meta-box/mb-data', array('mb_prefix' => 'wpcm-ld', 'vehicle' => $vehicle, 'fields' => array('condition' => array('type' => 'date', 'label' => __('Expiry Date:', 'wp-car-manager'), 'key' => 'expiration', 'required' => false), 'sold' => array('type' => 'checkbox', 'label' => __('Sold?', 'wp-car-manager'), 'key' => 'sold', 'required' => false))));
 }
 /**
  * Custom column data
  *
  * @param string $column
  */
 public function column_data($column)
 {
     global $post;
     /** @var \Never5\WPCarManager\Vehicle\Vehicle $vehicle */
     $vehicle = wp_car_manager()->service('vehicle_factory')->make($post->ID);
     // val
     $val = '';
     // set correct column val
     switch ($column) {
         case 'image':
             // title
             $title = get_the_title($vehicle->get_id());
             // check if there's a thumbnail
             if (has_post_thumbnail($vehicle->get_id())) {
                 // get image
                 $val = get_the_post_thumbnail($vehicle->get_id(), apply_filters('wpcm_listings_vehicle_thumbnail_size', 'wpcm_vehicle_listings_item'), array('title' => $title, 'alt' => $title, 'class' => 'wpcm-admin-image'));
             } else {
                 $placeholder = apply_filters('wpcm_listings_vehicle_thumbnail_placeholder', wp_car_manager()->service('file')->image_url('placeholder-list.png'), $vehicle);
                 $val = sprintf('<img src="%s" alt="%s" class="wpcm-admin-image" />', $placeholder, __('Placeholder', 'wp-car-manager'));
             }
             $val = '<a href="' . admin_url(sprintf('post.php?post=%d&action=edit', $post->ID)) . '">' . $val . '</a>';
             break;
         case 'make':
             $val = $vehicle->get_make_name();
             break;
         case 'model':
             $val = $vehicle->get_model_name();
             break;
         case 'price':
             $val = $vehicle->get_formatted_price();
             break;
         case 'mileage':
             $val = $vehicle->get_formatted_mileage();
             break;
         case 'frdate':
             $val = $vehicle->get_formatted_frdate();
             break;
         case 'expires':
             $expiration = $vehicle->get_expiration();
             if (null != $expiration) {
                 $val = $expiration->format(str_ireplace('F', 'M', get_option('date_format')));
             }
             break;
         case 'actions':
             if ('pending' == $vehicle->get_status()) {
                 $val = '<a href="' . add_query_arg(array('wpcm_action' => 'approve', 'wpcm_action_val' => $post->ID, 'wpcm_nonce' => wp_create_nonce('wpcm_action_approve_' . $post->ID)), admin_url('edit.php?post_type=wpcm_vehicle')) . '" class="button wpcm-btn-approve"></a>';
             }
             break;
     }
     // if val is empty set to -
     if ('' == $val) {
         $val = '-';
     }
     // echo val
     echo $val;
 }
Esempio n. 8
0
 /**
  * Actual meta box output
  *
  * @param \WP_Post $post
  */
 public function meta_box_output($post)
 {
     // nonce
     $this->output_nonce();
     // get attachments
     $product_image_gallery = '';
     if (metadata_exists('post', $post->ID, '_car_gallery')) {
         $product_image_gallery = get_post_meta($post->ID, '_car_gallery', true);
     }
     // explode and filter
     $attachments = array_filter(explode(',', $product_image_gallery));
     // view
     wp_car_manager()->service('view_manager')->display('meta-box/gallery', array('car_gallery' => $product_image_gallery, 'attachments' => $attachments));
 }
Esempio n. 9
0
 /**
  * @param array $atts
  *
  * @return string
  */
 public function output($atts)
 {
     // get attributes, defaults filterable via 'wpcm_shortcode_cars_defaults' filter
     $atts = shortcode_atts(apply_filters('wpcm_shortcode_' . $this->get_tag() . '_defaults', array('per_page' => -1, 'orderby' => 'date', 'order' => 'DESC')), $atts);
     // start output buffer
     ob_start();
     //		global $wp_query;
     //		echo '<pre>';
     //			print_r($wp_query->query_vars);
     //		echo '</pre>';
     // load template
     wp_car_manager()->service('template_manager')->get_template_part('listings-vehicle', '', array('atts' => $atts));
     return ob_get_clean();
 }
Esempio n. 10
0
 /**
  * Check if current user is allowed to edit given listing
  *
  * @param int $listing_id
  *
  * @return bool
  */
 public function can_edit_listing($listing_id)
 {
     $can_edit = true;
     // deny access if user is not logged in or the listing id equals zero
     if (!is_user_logged_in() || 0 == $listing_id) {
         $can_edit = false;
     } else {
         /** @var Vehicle\Vehicle $listing */
         $listing = wp_car_manager()->service('vehicle_factory')->make($listing_id);
         // check if listing author is equal to currently logged in user and if user has permission to edit listing
         if ($listing->get_author() != get_current_user_id() && !current_user_can('edit_car_listing', $listing->get_id())) {
             $can_edit = false;
         }
     }
     return apply_filters('wpcm_user_can_edit_listing', $can_edit, $listing_id);
 }
Esempio n. 11
0
 /**
  * Installation actions
  */
 public static function run()
 {
     // register post type and custom taxonomies
     Vehicle\PostType::register();
     WPCarManager\Taxonomies::register_model_make();
     WPCarManager\Taxonomies::register_features();
     // setup user roles
     $role_manager = new WPCarManager\RoleManager();
     $role_manager->setup_roles();
     // setup cron
     $cron = new Vehicle\Cron();
     $cron->schedule();
     // flush rules after install
     flush_rewrite_rules();
     // set version
     update_option(Upgrade::OPTION_CURRENT_VERSION, wp_car_manager()->get_version());
 }
Esempio n. 12
0
 /**
  * @param array $atts
  *
  * @return string
  */
 public function output($atts)
 {
     // JS
     WPCarManager\Assets::enqueue_shortcode_dashboard();
     // get attributes, defaults filterable via 'wpcm_shortcode_dashboard_defaults' filter
     $atts = shortcode_atts(apply_filters('wpcm_shortcode_' . $this->get_tag() . '_defaults', array('orderby' => 'date', 'order' => 'DESC')), $atts);
     // start output buffer
     ob_start();
     if (is_user_logged_in()) {
         // load dashboard template
         wp_car_manager()->service('template_manager')->get_template_part('dashboard', '', array('atts' => $atts));
     } else {
         // load not logged in template
         wp_car_manager()->service('template_manager')->get_template_part('dashboard/not-logged-in', '', array('atts' => $atts));
     }
     return ob_get_clean();
 }
Esempio n. 13
0
 /**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // check nonce
     $this->check_nonce();
     // set sort
     $sort = isset($_GET['sort']) ? esc_attr($_GET['sort']) : 'price-desc';
     // get vehicles
     $vehicle_manager = new Vehicle\Manager();
     $vehicles = $vehicle_manager->get_vehicles(array(), $sort, -1, array('author' => get_current_user_id(), 'post_status' => apply_filters('wpcm_dashboard_post_status', array('publish', 'expired', 'pending'))));
     // check & loop
     if (count($vehicles) > 0) {
         // Today
         $today = new \DateTime();
         $today->setTime(0, 0, 0);
         foreach ($vehicles as $vehicle) {
             // title
             $title = get_the_title($vehicle->get_id());
             // check if there's a thumbnail
             if (has_post_thumbnail($vehicle->get_id())) {
                 // get image
                 $image = get_the_post_thumbnail($vehicle->get_id(), apply_filters('wpcm_dashboard_vehicle_thumbnail_size', 'wpcm_vehicle_listings_item'), array('title' => $title, 'alt' => $title, 'class' => 'wpcm-dashboard-item-image'));
             } else {
                 $placeholder = apply_filters('wpcm_dashboard_vehicle_thumbnail_placeholder', wp_car_manager()->service('file')->image_url('placeholder-list.png'), $vehicle);
                 $image = sprintf('<img src="%s" alt="%s" class="wpcm-dashboard-item-image" />', $placeholder, __('Placeholder', 'wp-car-manager'));
             }
             $expires = 'n/a';
             if (null != $vehicle->get_expiration()) {
                 if ($today > $vehicle->get_expiration()) {
                     $expires = __('Expired', 'wp-car-manager');
                 } else {
                     $expires = $vehicle->get_expiration()->format('d-m-Y');
                 }
             }
             // load template
             wp_car_manager()->service('template_manager')->get_template_part('dashboard/item', '', array('id' => $vehicle->get_id(), 'url' => $vehicle->get_url(), 'title' => $title, 'image' => $image, 'price' => $vehicle->get_formatted_price(), 'mileage' => $vehicle->get_formatted_mileage(), 'frdate' => $vehicle->get_formatted_frdate(), 'expires' => $expires, 'vehicle' => $vehicle));
         }
     } else {
         wp_car_manager()->service('template_manager')->get_template_part('dashboard/no-results', '', array());
     }
     // bye
     exit;
 }
Esempio n. 14
0
 /**
  * Get price format
  *
  * @return String
  */
 public static function get_price_format()
 {
     $currency_pos = wp_car_manager()->service('settings')->get_option('currency_pos');
     $format = '%1$s%2$s';
     switch ($currency_pos) {
         case 'left':
             $format = '%1$s%2$s';
             break;
         case 'right':
             $format = '%2$s%1$s';
             break;
         case 'left_space':
             $format = '%1$s&nbsp;%2$s';
             break;
         case 'right_space':
             $format = '%2$s&nbsp;%1$s';
             break;
     }
     return $format;
 }
Esempio n. 15
0
 /**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // vehicle must be set
     if (!isset($_POST['vehicle']) || empty($_POST['vehicle'])) {
         wp_send_json(array('success' => false));
     }
     // check nonce
     $this->check_nonce();
     // sanitize variables
     $vehicle_id = absint($_POST['vehicle']);
     // check if user is allowed to edit this vehicle
     if (!wp_car_manager()->service('user_manager')->can_edit_listing($vehicle_id)) {
         wp_send_json(array('success' => false));
     }
     // delete vehicle
     wp_trash_post($vehicle_id);
     // done
     wp_send_json(array('success' => true));
     // bye
     exit;
 }
Esempio n. 16
0
 /**
  * @param array $atts
  *
  * @return string
  */
 public function output($atts)
 {
     // JS
     WPCarManager\Assets::enqueue_shortcode_cars();
     // get attributes, defaults filterable via 'wpcm_shortcode_cars_defaults' filter
     $atts = shortcode_atts(apply_filters('wpcm_shortcode_' . $this->get_tag() . '_defaults', array('show_filters' => true, 'show_sort' => true, 'orderby' => 'date', 'order' => 'DESC', 'make' => '', 'make_id' => '', 'sort' => 'price-asc', 'condition' => '')), $atts);
     // make sure show_filters is a bool
     if ('false' === $atts['show_filters']) {
         $atts['show_filters'] = false;
     } else {
         $atts['show_filters'] = true;
     }
     // make sure show_sort is a bool
     if ('false' === $atts['show_sort']) {
         $atts['show_sort'] = false;
     } else {
         $atts['show_sort'] = true;
     }
     // check if we need to set a make_id
     if (!empty($atts['make']) && empty($atts['make_id'])) {
         $term = get_term_by('name', $atts['make'], 'wpcm_make_model');
         if ($term != false) {
             $atts['make_id'] = $term->term_id;
         }
     }
     // build data atts
     $data_atts = array('sort', 'condition', 'make_id');
     $data_str = '';
     foreach ($data_atts as $data_att) {
         if (!empty($atts[$data_att])) {
             $data_str .= ' data-' . $data_att . '="' . esc_attr($atts[$data_att]) . '"';
         }
     }
     // start output buffer
     ob_start();
     // load template
     wp_car_manager()->service('template_manager')->get_template_part('listings-vehicle', '', array('atts' => $atts, 'data_atts' => $data_str));
     return ob_get_clean();
 }
Esempio n. 17
0
 /**
  * Enqueue backend(admin) assets
  */
 public static function enqueue_backend()
 {
     global $pagenow, $post;
     // Enqueue Downloadable Files Metabox JS
     if ($pagenow == 'post.php' && isset($post) && PostType::VEHICLE === $post->post_type || $pagenow == 'post-new.php' && isset($_GET['post_type']) && PostType::VEHICLE == $_GET['post_type']) {
         // datepicker
         wp_enqueue_script('jquery-ui-datepicker');
         wp_enqueue_style('jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
         // enqueue edit vehicle script
         wp_enqueue_script('wpcm_edit_download', wp_car_manager()->service('file')->plugin_url('/assets/js/edit-vehicle' . (!SCRIPT_DEBUG ? '.min' : '') . '.js'), array('jquery', 'jquery-ui-sortable', 'jquery-ui-datepicker'), wp_car_manager()->get_version());
     }
     if ('edit.php' == $pagenow && isset($_GET['page']) && ('wpcm-settings' === $_GET['page'] || 'wpcm-extensions' === $_GET['page'])) {
         // enqueue settings and extensions script
         wp_enqueue_script('wpcm_settings', wp_car_manager()->service('file')->plugin_url('/assets/js/settings' . (!SCRIPT_DEBUG ? '.min' : '') . '.js'), array('jquery'), wp_car_manager()->get_version());
     }
     // extensions Js
     if (isset($_GET['page']) && 'wpcm-extensions' === $_GET['page']) {
         wp_enqueue_script('wpcm_extensions', wp_car_manager()->service('file')->plugin_url('/assets/js/extensions' . (!SCRIPT_DEBUG ? '.min' : '') . '.js'), array('jquery'), wp_car_manager()->get_version());
     }
     // admin CSS
     wp_enqueue_style('wpcm_admin', wp_car_manager()->service('file')->plugin_url('/assets/css/admin.css'), array(), wp_car_manager()->get_version());
 }
Esempio n. 18
0
 /**
  * Load the correct view
  */
 private function load_view()
 {
     // check if we're editing a page
     if (isset($_GET['edit'])) {
         $term = get_term(absint($_GET['edit']), 'wpcm_make_model');
         // form action URL
         $form_action_url = admin_url('edit.php?post_type=wpcm_vehicle&page=wpcm-makes');
         // check if make is set
         if (isset($_GET['make'])) {
             // add make to form action URL
             $form_action_url = add_query_arg(array('make' => absint($_GET['make'])), $form_action_url);
         }
         // load view
         wp_car_manager()->service('view_manager')->display('page/edit-make-model', array('form_action' => $form_action_url, 'title' => sprintf(__('Edit %s', 'wp-car-manager'), $term->name), 'item' => array('id' => $term->term_id, 'name' => $term->name, 'slug' => $term->slug)));
     } elseif (isset($_GET['make'])) {
         // get make
         $make = get_term(absint($_GET['make']), 'wpcm_make_model');
         // load view
         wp_car_manager()->service('view_manager')->display('page/models', array('title' => sprintf(__('%s Models', 'wp-car-manager'), $make->name), 'items' => wp_car_manager()->service('make_model_manager')->get_models($make->term_id)));
     } else {
         // load view
         wp_car_manager()->service('view_manager')->display('page/makes', array('title' => __('Makes', 'wp-car-manager'), 'items' => wp_car_manager()->service('make_model_manager')->get_makes()));
     }
 }
Esempio n. 19
0
    echo antispambot($email);
    ?>
?subject=<?php 
    the_title();
    ?>
"
		   class="wpcm-button wpcm-contact-button"><?php 
    _e('Email Us', 'wp-car-manager');
    ?>
</a>
	<?php 
}
?>

	<?php 
$phone_number = wp_car_manager()->service('settings')->get_option('contact_phone');
if ('' !== $phone_number) {
    ?>
		<a href="tel:<?php 
    echo esc_attr($phone_number);
    ?>
"
		   class="wpcm-button wpcm-contact-button"><?php 
    _e('Call Us', 'wp-car-manager');
    ?>
</a>
	<?php 
}
?>

</div>
Esempio n. 20
0
foreach ($fields as $key => $section) {
    // check if we're showing this tab
    $show = $key == $active_tab ? '' : 'hidden';
    echo '<div id="settings-' . sanitize_title($key) . '" class="settings_panel ' . $show . '">';
    echo '<table class="form-table">';
    // loop through fields
    foreach ($section[1] as $option) {
        // placeholder
        $placeholder = !empty($option['placeholder']) ? 'placeholder="' . $option['placeholder'] . '"' : '';
        // label
        echo '<tr valign="top"><th scope="row"><label for="setting-' . $option['name'] . '">' . $option['label'] . '</a></th><td>';
        if (!isset($option['type'])) {
            $option['type'] = '';
        }
        // get value
        $value = wp_car_manager()->service('settings')->get_option($option['name']);
        // switch type
        switch ($option['type']) {
            case "checkbox":
                ?>
<label><input id="setting-<?php 
                echo $option['name'];
                ?>
"
						                name="wpcm_<?php 
                echo $option['name'];
                ?>
" type="checkbox"
						                value="1" <?php 
                checked('1', $value);
                ?>
Esempio n. 21
0
				<th><label for="<?php 
        echo $field['key'];
        ?>
"><?php 
        echo $field['label'];
        ?>
</label></th>
				<td>
					<?php 
        // getter method for value
        $get_method = 'get_' . $field['key'];
        $value = $vehicle->{$get_method}();
        if ('date' === $field['type']) {
            if (null != $value && !empty($value)) {
                $value = $value->format('Y-m-d');
            }
        }
        // load template part
        wp_car_manager()->service('view_manager')->display('meta-box/input/' . $field['type'], array('mb_prefix' => $mb_prefix, 'field' => $field, 'value' => $value, 'vehicle' => $vehicle));
        ?>
				</td>
			</tr>
		<?php 
    }
    ?>
		<?php 
    do_action('wpcm_mb_listing_data_after', $vehicle);
    ?>
	</table>
<?php 
}
Esempio n. 22
0
 /**
  * Get model name
  *
  * @return string
  */
 public function get_model_name()
 {
     $model = wp_car_manager()->service('make_model_manager')->get_model($this->get_model());
     return $model['name'];
 }
Esempio n. 23
0
 /**
  * Get Vehicle fields
  *
  * @param string $type Not used at the moment, but will be used when more than 1 vehicle type is offered
  *
  * @return array
  */
 public static function get_fields($type = 'car')
 {
     return array('condition' => array('type' => 'select', 'options' => self::get_conditions(), 'label' => __('Condition', 'wp-car-manager'), 'key' => 'condition', 'required' => true), 'make' => array('type' => 'select', 'options' => wp_car_manager()->service('make_model_manager')->get_makes_map(), 'label' => __('Make', 'wp-car-manager'), 'key' => 'make', 'required' => true), 'model' => array('type' => 'select-model', 'label' => __('Model', 'wp-car-manager'), 'key' => 'model', 'required' => true), 'frdate' => array('type' => 'date', 'label' => __('First Registration Date', 'wp-car-manager'), 'key' => 'frdate', 'required' => true, 'placeholder' => 'YY-MM-DD'), 'price' => array('type' => 'text', 'label' => __('Price', 'wp-car-manager'), 'key' => 'price', 'required' => false, 'placeholder' => Helper\Format::price('29000.99', array('plain' => true, 'decimals' => 2))), 'mileage' => array('type' => 'text', 'label' => __('Mileage', 'wp-car-manager'), 'key' => 'mileage', 'required' => false, 'placeholder' => Helper\Format::mileage('100000')), 'fuel_type' => array('type' => 'text', 'label' => __('Fuel Type', 'wp-car-manager'), 'key' => 'fuel_type', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('Gas', 'wp-car-manager')), 'color' => array('type' => 'text', 'label' => __('Color', 'wp-car-manager'), 'key' => 'color', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('Grey', 'wp-car-manager')), 'body_style' => array('type' => 'text', 'label' => __('Body Style', 'wp-car-manager'), 'key' => 'body_style', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('Sedan', 'wp-car-manager')), 'transmission' => array('type' => 'select', 'options' => self::get_transmissions(), 'label' => __('Transmission', 'wp-car-manager'), 'key' => 'transmission', 'required' => false), 'doors' => array('type' => 'text', 'label' => __('Doors', 'wp-car-manager'), 'key' => 'doors', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' 5'), 'engine' => array('type' => 'text', 'label' => __('Engine', 'wp-car-manager'), 'key' => 'engine', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('2.0 TDI', 'wp-car-manager')), 'power_kw' => array('type' => 'text', 'label' => __('Power kW', 'wp-car-manager'), 'key' => 'power_kw', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('125', 'wp-car-manager')), 'power_hp' => array('type' => 'text', 'label' => __('Power hp', 'wp-car-manager'), 'key' => 'power_hp', 'required' => false, 'placeholder' => __('e.g.', 'wp-car-manager') . ' ' . __('170', 'wp-car-manager')));
 }
Esempio n. 24
0
            _e('Username', 'wp-car-manager');
            ?>
</label>

			<div class="wpcm-field wpcm-required-field">
				<?php 
            wp_car_manager()->service('template_manager')->get_template_part('submit-car-form/form-fields/text', '', array('field' => array('key' => 'create_account_username'), 'value' => empty($_POST['wpcm_submit_car']['create_account_username']) ? '' : esc_attr(sanitize_text_field(stripslashes($_POST['wpcm_submit_car']['create_account_username'])))));
            ?>
			</div>
		</fieldset>
	<?php 
        }
        ?>
	<fieldset>
		<label for="create_account_email"><?php 
        _e('Your Email', 'wp-car-manager');
        ?>
</label>

		<div class="wpcm-field wpcm-required-field">
			<?php 
        wp_car_manager()->service('template_manager')->get_template_part('submit-car-form/form-fields/text', '', array('field' => array('key' => 'create_account_email'), 'value' => empty($_POST['wpcm_submit_car']['create_account_email']) ? '' : esc_attr(sanitize_text_field(stripslashes($_POST['wpcm_submit_car']['create_account_email'])))));
        ?>
		</div>
	</fieldset>
<?php 
    }
    ?>

<?php 
}
 /**
  * Done view
  */
 public function view_done()
 {
     // get listing id
     $listing_id = !empty($_GET['wpcm_vehicle_id']) ? absint($_GET['wpcm_vehicle_id']) : 0;
     switch (get_post_status($listing_id)) {
         case 'pending':
             echo wpautop(sprintf(__('%s has been submitted successfully and will be visible once approved.', 'wpcm-wc-paid-listings'), '<strong>' . get_the_title($listing_id) . '</strong>'));
             break;
         case 'wpcm_pending_payment':
         case 'expired':
             echo wpautop(sprintf(__('%s has been submitted successfully and will be visible once payment has been confirmed.', 'wpcm-wc-paid-listings'), '<strong>' . get_the_title($listing_id) . '</strong>'));
             break;
         default:
             echo wpautop(sprintf(__('%s has been submitted successfully.', 'wpcm-wc-paid-listings'), '<strong>' . get_the_title($listing_id) . '</strong>'));
             break;
     }
     echo '<p class="wpcm-submitted-actions">';
     if ('publish' === get_post_status($listing_id)) {
         echo '<a class="button wpcm-button" href="' . get_permalink($listing_id) . '">' . __('View Listing', 'wpcm-wc-paid-listings') . '</a> ';
     } elseif (absint(wp_car_manager()->service('settings')->get_option('page_dashboard')) > 0) {
         echo '<a class="button wpcm-button" href="' . get_permalink(wp_car_manager()->service('settings')->get_option('page_dashboard')) . '">' . __('View Dashboard', 'wpcm-wc-paid-listings') . '</a> ';
     }
     echo '</p>';
 }
 /**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // check nonce
     $this->check_nonce();
     // set filters
     $filters = array();
     // get filters from get vars
     foreach ($_GET as $get_key => $get_var) {
         if (0 === strpos($get_key, 'filter_')) {
             $filters[str_ireplace('filter_', '', $get_key)] = $get_var;
         }
     }
     // set sort
     $sort = isset($_GET['sort']) ? esc_attr($_GET['sort']) : 'price-asc';
     // set per page
     $per_page = intval(wp_car_manager()->service('settings')->get_option('listings_ppp'));
     // correct any funky zero listings per page. I mean, who wants 0 listings per page ...
     if (0 === $per_page) {
         $per_page = -1;
     }
     // get current page
     $page = intval(!empty($_GET['page']) ? $_GET['page'] : 1);
     // check if we need to hide sold cars
     if ('1' == wp_car_manager()->service('settings')->get_option('listings_hide_sold')) {
         $filters['hide_sold'] = true;
     } else {
         $filters['hide_sold'] = false;
     }
     // extra args
     $extra_args = array();
     if ($page > 0) {
         $extra_args['paged'] = $page;
     }
     // get vehicles
     $vehicle_manager = new Vehicle\Manager();
     $vehicles = $vehicle_manager->get_vehicles($filters, $sort, $per_page, $extra_args);
     // get total vehicle count for pagination
     $total_vehicle_count = $vehicle_manager->get_total_vehicle_count_of_last_query();
     // start output buffer
     ob_start();
     // check & loop
     if (count($vehicles) > 0) {
         foreach ($vehicles as $vehicle) {
             // title
             $title = get_the_title($vehicle->get_id());
             // check if there's a thumbnail
             if (has_post_thumbnail($vehicle->get_id())) {
                 // get image
                 $image = get_the_post_thumbnail($vehicle->get_id(), apply_filters('wpcm_listings_vehicle_thumbnail_size', 'wpcm_vehicle_listings_item'), array('title' => $title, 'alt' => $title, 'class' => 'wpcm-listings-item-image'));
             } else {
                 $placeholder = apply_filters('wpcm_listings_vehicle_thumbnail_placeholder', wp_car_manager()->service('file')->image_url('placeholder-list.png'), $vehicle);
                 $image = sprintf('<img src="%s" alt="%s" class="wpcm-listings-item-image" />', $placeholder, __('Placeholder', 'wp-car-manager'));
             }
             // load template
             wp_car_manager()->service('template_manager')->get_template_part('listings/item', '', array('url' => $vehicle->get_url(), 'title' => $title, 'image' => $image, 'description' => $vehicle->get_short_description(), 'price' => $vehicle->get_formatted_price(), 'mileage' => $vehicle->get_formatted_mileage(), 'frdate' => $vehicle->get_formatted_frdate(), 'vehicle' => $vehicle));
         }
     } else {
         wp_car_manager()->service('template_manager')->get_template_part('listings/no-results', '', array());
     }
     // put listing content in variable
     $listing_content = ob_get_clean();
     // send JSON response
     wp_send_json(array('listings' => $listing_content, 'pagination' => \Never5\WPCarManager\Helper\Pagination::generate($page, \Never5\WPCarManager\Helper\Pagination::calc_total_pages($per_page, $total_vehicle_count))));
     // bye
     exit;
 }
Esempio n. 27
0
 /**
  * AJAX callback method
  *
  * @return void
  */
 public function run()
 {
     // return fields
     $return = array('success' => false, 'errors' => array(), 'vehicle' => 0);
     try {
         // check nonce
         $this->check_nonce();
         // check if vehicle ID is set
         if (!isset($_POST['vehicle_id'])) {
             throw new SaveVehicleException(__('Missing vehicle ID.', 'wp-car-manager'), 'missing-id');
         }
         // vehicle ID (can be 0 for new vehicle)
         $vehicle_id = absint($_POST['vehicle_id']);
         // check if user is logged in and allowed to do this
         $is_allowed = false;
         if (0 == $vehicle_id) {
             $is_allowed = wp_car_manager()->service('user_manager')->can_post_listing();
         } else {
             $is_allowed = wp_car_manager()->service('user_manager')->can_edit_listing($vehicle_id);
         }
         // requester not allowed to do what they try to do
         if (true != $is_allowed) {
             throw new SaveVehicleException(__('Not allowed to create/edit vehicle.', 'wp-car-manager'), 'not-allowed');
         }
         // check if data is posted
         if (!isset($_POST['data'])) {
             throw new SaveVehicleException('No data received', 'no-data');
         }
         // parse post data
         parse_str($_POST['data'], $post_arr);
         // put data in $data
         $data = $post_arr['wpcm_submit_car'];
         // if user is not logged in but allowed to post, we need to create an account
         if (!is_user_logged_in()) {
             $new_account_id = null;
             // check if account creation is allowed
             if (wp_car_manager()->service('user_manager')->is_account_creation_allowed()) {
                 // username must be posted when not automatically generated from email address
                 if (!wp_car_manager()->service('user_manager')->is_generate_username_from_email() && empty($data['create_account_username'])) {
                     throw new SaveVehicleException(__('Please enter a username.', 'wp-car-manager'), 'missing-username');
                 }
                 // if user is not logged in and automatic account creation is enabled we do require an email address
                 if (empty($data['create_account_email'])) {
                     throw new SaveVehicleException(__('Please enter your email address.', 'wp-car-manager'), 'missing-email');
                 }
                 // create account
                 $new_account_id = wp_car_manager()->service('user_manager')->create_account(array('username' => wp_car_manager()->service('user_manager')->is_generate_username_from_email() ? '' : $data['create_account_username'], 'email' => $data['create_account_email'], 'role' => wp_car_manager()->service('user_manager')->get_registration_role()));
             }
             // check if account was created
             if (is_wp_error($new_account_id)) {
                 throw new SaveVehicleException($new_account_id->get_error_message(), 'account-creation-failed');
             }
             // login new account
             if (null !== $new_account_id) {
                 wp_car_manager()->service('user_manager')->login_user($new_account_id);
             }
         }
         // get logged in user
         $user = wp_get_current_user();
         // make sure we've got a logged in user, if we don't something went horribly wrong
         if (false === $user) {
             throw new SaveVehicleException(__('User could not log in, please contact support.', 'wp-car-manager'), 'account-login-failed');
         }
         // validate data
         /**
          * Data Validation
          */
         try {
             $frdate_dt = new \DateTime($data['frdate']);
         } catch (\Exception $e) {
             throw new SaveVehicleException(__('Incorrect First Registration Date format', 'wp-car-manager'), 'frdate');
         }
         /**
          * Data Sanitation
          */
         // Sanitize integer values
         $data['mileage'] = intval(preg_replace('/,|\\./mi', '', $data['mileage']));
         $data['price'] = intval(preg_replace('/,|\\./mi', '', $data['price']));
         $data['doors'] = intval($data['doors']);
         // create Vehicle object
         /** @var Vehicle\Car $vehicle */
         $vehicle = wp_car_manager()->service('vehicle_factory')->make($vehicle_id);
         // set some intial data for new vehicles
         if (0 == $vehicle->get_id()) {
             // set vehicle status to preview if this is a new item
             $vehicle->set_status('preview');
             // set vehicle listing author
             $vehicle->set_author($user->ID);
         }
         // set Vehicle data in object
         $vehicle->set_title($data['title']);
         $vehicle->set_description($data['description']);
         $vehicle->set_condition($data['condition']);
         $vehicle->set_make($data['make']);
         $vehicle->set_model($data['model']);
         $vehicle->set_frdate($frdate_dt);
         $vehicle->set_price($data['price']);
         $vehicle->set_mileage($data['mileage']);
         $vehicle->set_fuel_type($data['fuel_type']);
         $vehicle->set_color($data['color']);
         $vehicle->set_body_style($data['body_style']);
         $vehicle->set_transmission($data['transmission']);
         $vehicle->set_engine($data['engine']);
         $vehicle->set_doors($data['doors']);
         // set features
         if (isset($data['features']) && count($data['features']) > 0) {
             $features = array();
             foreach ($data['features'] as $feature_id) {
                 $features[$feature_id] = 'n/a';
             }
             $vehicle->set_features($features);
         }
         try {
             // try to persist vehicle
             $vehicle = wp_car_manager()->service('vehicle_repository')->persist($vehicle);
             // set success to true in return
             $return['success'] = true;
             // set vehicle ID in return
             $return['vehicle'] = $vehicle->get_id();
         } catch (\Exception $e) {
             throw new SaveVehicleException($e->getMessage(), 'persist');
         }
     } catch (SaveVehicleException $e) {
         $return['success'] = false;
         $return['errors'] = array('id' => $e->getId(), 'msg' => $e->getMessage());
     }
     // send JSON
     wp_send_json($return);
     // bye
     exit;
 }
Esempio n. 28
0
<?php

if (!defined('ABSPATH')) {
    exit;
}
// Exit if accessed directly
?>
<div class="wpcm-price-wrapper" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
	<span class="wpcm-price"><?php 
echo $vehicle->get_formatted_price();
?>
</span>

	<meta itemprop="price" content="<?php 
echo $vehicle->get_price();
?>
"/>
	<meta itemprop="priceCurrency" content="<?php 
echo wp_car_manager()->service('settings')->get_option('currency');
?>
"/>
</div>
Esempio n. 29
0
 /**
  * Output page
  */
 public function page_cb()
 {
     // load view
     wp_car_manager()->service('view_manager')->display('page/settings', array('fields' => wp_car_manager()->service('settings')->get_fields()));
 }
Esempio n. 30
0
 /**
  * Get vehicles
  *
  * Filter possibilities:
  * - make (int)
  * - model (int)
  * - price_from (int)
  * - price_to (int)
  * - mileage_from (int)
  * - mileage_to (int)
  * - frdate_from (int)
  * - frdate_to (int)
  * - condition (new,used)
  * - hide_sold (bool)
  *
  * Sort possibilities:
  * - price-asc
  * - price-desc
  * - year-asc
  * - year-desc
  * - mileage-asc
  * - mileage-desc
  * - date-asc
  * - date-desc
  *
  * @param array $filters
  * @param string $sort
  * @param int $per_page
  * @param array $extra_args
  *
  * @return array
  */
 public function get_vehicles($filters, $sort, $per_page = -1, $extra_args = array())
 {
     // vehicle array
     $vehicles = array();
     // translate $sort to \WP_Query sort
     $sort_params = explode('-', $sort);
     // order by variables
     $orderby = 'meta_value';
     $order = 'desc' == array_pop($sort_params) ? 'DESC' : 'ASC';
     // get sort value and meta key
     $sort_val = array_shift($sort_params);
     $meta_key = 'wpcm_' . $sort_val;
     // determine sort value type
     switch ($sort_val) {
         case 'price':
             $meta_type = 'NUMERIC';
             break;
         case 'frdate':
             $meta_type = 'DATE';
             break;
         case 'mileage':
             $meta_type = 'NUMERIC';
             break;
         case 'date':
             $orderby = 'date';
             break;
         default:
             // force sort to ascending price if given sort isn't recognized
             $meta_type = 'NUMERIC';
             $meta_key = 'wpcm_price';
             $order = 'ASC';
     }
     // \WP_Query arg
     $args = array('post_status' => 'publish', 'post_type' => PostType::VEHICLE, 'posts_per_page' => intval($per_page), 'orderby' => $orderby, 'order' => $order);
     // check if we're sorting by meta and if so, add the meta sort data
     if ('meta_value' == $orderby) {
         $args['meta_type'] = $meta_type;
         $args['meta_key'] = $meta_key;
     }
     // base meta query
     $meta_query = array();
     // check for make
     if (is_array($filters) && count($filters) > 0) {
         foreach ($filters as $filter_key => $filter_val) {
             // var that will contain filter specific values
             $filter = array('key' => '', 'value' => '', 'compare' => '=', 'type' => 'NUMERIC');
             switch ($filter_key) {
                 // check for make and model filter
                 case 'make':
                 case 'model':
                     $filter['key'] = 'wpcm_' . $filter_key;
                     $filter['value'] = absint($filter_val);
                     break;
                 case 'price_from':
                 case 'mileage_from':
                 case 'frdate_from':
                     $filter['key'] = 'wpcm_' . str_ireplace('_from', '', $filter_key);
                     $filter['compare'] = '>=';
                     $filter['value'] = absint($filter_val);
                     break;
                 case 'price_to':
                 case 'mileage_to':
                 case 'frdate_to':
                     $filter['key'] = 'wpcm_' . str_ireplace('_to', '', $filter_key);
                     $filter['compare'] = '<=';
                     $filter['value'] = absint($filter_val);
                     break;
                 case 'condition':
                     $filter['key'] = 'wpcm_condition';
                     $filter['value'] = sanitize_title($filter_val);
                     $filter['type'] = 'CHAR';
                     break;
                 case 'hide_sold':
                     if (true === $filter_val) {
                         $filter['key'] = 'wpcm_sold';
                         $filter['value'] = '1';
                         $filter['compare'] = '!=';
                         $filter['type'] = 'CHAR';
                     }
                     break;
                 default:
                     // allow filtering of non-catched filter key
                     $filter = apply_filters('wpcm_get_vehicles_filter_' . $filter_key, $filter, $filter_key, $filter_val);
                     break;
             }
             // check if we've got a new filter
             if (!empty($filter['key'])) {
                 $meta_query[] = $filter;
             }
         }
     }
     // check if there's a meta query
     if (count($meta_query) > 0) {
         // add meta query
         $args['meta_query'] = $meta_query;
     }
     // merge extra args
     if (!empty($extra_args)) {
         $args = array_merge($args, $extra_args);
     }
     // get vehicles
     $db_vehicles = $this->vehicle_query->query($args);
     // check
     if (count($db_vehicles) > 0) {
         /** @var VehicleFactory $vehicle_factory */
         $vehicle_factory = wp_car_manager()->service('vehicle_factory');
         // loop
         foreach ($db_vehicles as $db_vehicle) {
             // add vehicle to arry
             $vehicles[] = $vehicle_factory->make($db_vehicle->ID);
         }
     }
     // reset post data
     wp_reset_postdata();
     return $vehicles;
 }