------------------------
DataBase query functions
------------------------
function rc_getAvailableVehicles($pickup_timestamp, $return_timestamp, $vehicle_classes=array()) {
global
$wpdb;
$rc_currency = RC_Registry::get('rc_currency');
$where_classes = "";
if ($vehicle_classes) {
foreach($vehicle_classes as $vehicle_class) {
$where_classes[] = " v.class = '". $wpdb->escape($vehicle_class) ."'";
}
$where_classes = "AND (".implode(' OR ', $where_classes).") ";
}
$sql = "SELECT *
FROM ".$wpdb->rc_vehicles." v
WHERE v.quantity > (SELECT COUNT(*) FROM ".$wpdb->rc_bookings." b WHERE b.vehicle_id = v.vehicle_id AND ((UNIX_TIMESTAMP(b.pickup_date) >= '". (int)$pickup_timestamp ."' AND UNIX_TIMESTAMP(b.pickup_date) < '". (int)$return_timestamp ."') || (UNIX_TIMESTAMP(b.pickup_date) < '". (int)$pickup_timestamp ."' AND UNIX_TIMESTAMP(b.return_date) >= '". (int)$pickup_timestamp ."')) AND (b.status != 'new' AND b.status != 'canceled') AND b.trash = '0') ".$where_classes."AND v.status = '1' AND v.archive = '0'
ORDER BY v.rent ASC";
$results = $wpdb->get_results($sql,ARRAY_A);
$vehicles = array();
$rental_days = ceil(($return_timestamp-$pickup_timestamp)/86400);
if ($results) {
foreach ($results as $result) {
if ($result['image'] && file_exists(RC_UPLOADS_DIR . "vehicle_" . $result['image'])) {
$image = RC_UPLOADS_URL . 'vehicle_' . $result['image'];
$image_thumb = RC_UPLOADS_URL . 'cache/' . rc_image_resize(RC_UPLOADS_DIR . "vehicle_" . $result['image'], 220, 160);
} else {
$image = '';
$image_thumb = '';
}
$result['description'] = do_shortcode($result['description']);
$description = html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8');
$vehicle_meta = rc_getVehicleMeta($result['vehicle_id']);
$vehicles[$result['vehicle_id']] = array(
'vehicle_id' => $result['vehicle_id'],
'title' => $result['manufacturer']." ".$result['series'],
'manufacturer' => $result['manufacturer'],
'series' => $result['series'],
'year' => $result['year'],
'class' => $result['class'],
'image' => $image,
'image_thumb' => $image_thumb,
'description' => $description,
'seats' => $vehicle_meta['seats'],
'doors' => $vehicle_meta['doors'],
'conditioning' => $vehicle_meta['conditioning'],
'transmission' => $vehicle_meta['transmission'],
'total_price' => $rc_currency->format($rental_days*$result['rent']),
'daily_price' => $rc_currency->format($result['rent'])
);
}
}
return $vehicles;
}
function rc_getVehicleMeta($vehicle_id) {
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM ".$wpdb->rc_vehicle_meta." WHERE vehicle_id = '". (int)$vehicle_id ."'",ARRAY_A);
$vehicle_meta = array();
if ($results) {
foreach ($results as $result) {
$vehicle_meta[$result['key']] = $result['value'];
}
}
return $vehicle_meta;
}
function rc_getVehicleManufacturers() {
global
$wpdb;
$sql = "SELECT DISTINCT manufacturer as name FROM ".$wpdb->rc_vehicles." ORDER BY manufacturer ASC";
$results = $wpdb->get_results($sql,ARRAY_A);
return $results;
}
function rc_getVehicleSerieses($manufacturer) {
global
$wpdb;
$sql = "SELECT DISTINCT series as name FROM ".$wpdb->rc_vehicles." WHERE manufacturer = '". $wpdb->escape($data['manufacturer']) ."' ORDER BY series ASC";
$results = $wpdb->get_results($sql,ARRAY_A);
return $results;
}
function rc_getVehicleYears() {
global
$wpdb;
$sql = "SELECT DISTINCT year as year FROM ".$wpdb->rc_vehicles." ORDER BY year ASC";
$results = $wpdb->get_results($sql,ARRAY_A);
return $results;
}
function rc_getVehicleClasses() {
global
$wpdb;
$sql = "SELECT DISTINCT class as class FROM ".$wpdb->rc_vehicles." ORDER BY class ASC";
$results = $wpdb->get_results($sql,ARRAY_A);
return $results;
}
function rc_getTotalVehicles($data = array()) {
global
$wpdb;
if ($data) {
$sql = "SELECT COUNT(*) AS total FROM ".$wpdb->rc_vehicles." ";
$where_data = array(
'all' => "`archive` ='0'",
'on' => "`status` ='1' AND `archive` ='0'",
'off' => "`status` ='0' AND `archive` ='0'",
'archive' => "`archive` = '1'"
);
if (isset($data['where']) && isset($where_data[$data['where']])) {
$sql .= " WHERE " . $where_data[$data['where']];
} else {
$sql .= " WHERE " . $where_data['all'];
}
if ($data['keywords']) {
$keywords = explode(" ",$data['keywords']);
if ($keywords) {
$like_array = array();
foreach ($keywords as $keyword) {
$like_array[] = "name LIKE '%" . $wpdb->escape($keyword) . "%' OR description LIKE '%" . $wpdb->escape($keyword) . "%' OR country LIKE '%" . $wpdb->escape($keyword) . "%' OR city LIKE '%" . $wpdb->escape($keyword) . "%' OR address LIKE '%" . $wpdb->escape($keyword) . "%'";
}
$like = implode(" OR ", $like_array);
$sql .= " AND ($like)";
}
}
if ($data['class']) {
$sql .= " AND `class` = '". $wpdb->escape($data['class']) ."'";
}
if ($data['country']) {
$sql .= " AND country = '". $wpdb->escape($data['country']) ."'";
}
if ($data['city']) {
$sql .= " AND city = '". $wpdb->escape($data['city']) ."'";
}
} else {
$sql = "SELECT COUNT(*) AS total FROM ".$wpdb->rc_vehicles;
}
$total = $wpdb->get_var($sql);
return $total;
}
function rc_getTime() {
$time = array();
for($hr = 0; $hr < 24; $hr++) {
for($min = 0; $min < 60; $min += 30) {
$time[] = sprintf(
'%02u:%02u',
($hr > 12 ? $hr - 12 : $hr),
$min
);
}
}
return $time;
}
function rc_getLocations() {
$locations = get_option('rc_locations');
return $locations;
}
function rc_checkLocation($location) {
$locations = rc_getLocations();
if (in_array($location,$locations)) {
return true;
} else {
return false;
}
}
?>[/code]