TimePicker Adjustments (AJAX)

Closed - This job posting has been filled and work has been completed.
Web, Mobile & Software Dev Web Development Posted 3 years ago

Fixed Price

Budget: $50
Delivery by January 29, 2013

Start Date

December 29, 2012


I'm building a booking form for a moving business that uses a calendar combined with a start and end time. I built the timepicker with Formidable Pro, and it allows me to check "unique" on time fields which automatically removes them on the selected date. However it doesn't automatically remove the times from within the range between start and end times (ie: if someone chooses to rent a truck from 1am-3am I need 1am,2am,and 3am to be removed from future options but right now it only removes 1am and 3am) . I need someone to write AJAX that removes the in-between times from the options.

These are the current ajax_time_ options function that would need to be edited:

function ajax_time_options(){
    global $frmpro_settings, $frmdb, $wpdb;
    //posted vars = $time_field, $date_field, $step, $start, $end, $date, $clock
    $time_key = str_replace('field_', '', $time_field);
    $date_key = str_replace('field_', '', $date_field);
    if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', trim($date)))
        $date = FrmProAppHelper::convert_date($date, $frmpro_settings->date_format, 'Y-m-d');
    $date_entries = FrmEntryMeta::getEntryIds("fi.field_key='$date_key' and meta_value='$date'");

    $opts = array('' => '');
        $time = strtotime($start);
        $end = strtotime($end);
        $step = explode(':', $step);
        $step = (isset($step[1])) ? ($step[0] * 3600 + $step[1] * 60) : ($step[0] * 60);
        $format = ($clock) ? 'H:i' : 'h:i A';
        while($time <= $end){
            $opts[date($format, $time)] = date($format, $time);
            $time += $step;
    if($date_entries and !empty($date_entries)){
        $used_times = $wpdb->get_col("SELECT meta_value FROM $frmdb->entry_metas it LEFT JOIN $frmdb->fields fi ON (it.field_id = fi.id) WHERE fi.field_key='$time_key' and it.item_id in (". implode(',', $date_entries).")");
        if($used_times and !empty($used_times)){
            $number_allowed = apply_filters('frm_allowed_time_count', 1, $time_key, $date_key);
            $count = array();
            foreach($used_times as $used){
                    $count[$used] = 0;
                if((int)$count[$used] >= $number_allowed)
    echo json_encode($opts);

2. Payment done with Odesk, and will be paid upon the timepicker functioning to my satisfacton.

Skills: english

About the Client

(5.00) 1 review

United States
Brooklyn 12:55 AM

1 Job Posted
100% Hire Rate, 1 Open Job

$67 Total Spent
1 Hire, 0 Active

Member Since Dec 29, 2012