function bfox_bp_plans_list_by_date($schedule_ids, $start_date, $end_date = '', $args = array()) { if (empty($end_date)) { $end_date = $start_date; } $reading_ids = array(); foreach ($schedule_ids as $schedule_id) { $schedule = BfoxReadingSchedule::schedule($schedule_id); $_reading_ids = $schedule->readings_in_range($start_date, $end_date); if (!empty($_reading_ids)) { $reading_ids[$schedule->revision_id] = $_reading_ids; } } return bfox_bp_plans_list_readings($schedule_ids, BfoxReadingPlan::get_readings(array('reading_ids' => $reading_ids)), $args); }
public static function get($args = array(), &$total_row_count = null) { global $wpdb; $schedules = array(); $where = self::where_for_args($args); if (!empty($where)) { extract($args); if ($per_page) { $found_rows = 'SQL_CALC_FOUND_ROWS'; $limit = $wpdb->prepare('LIMIT %d, %d', ($page - 1) * $per_page, $per_page); } else { $limit = $found_rows = ''; } if ($next_email_time) { $order_by = 'next_email_time ASC'; } else { $order_by = 'start_time DESC'; } $results = (array) $wpdb->get_results("SELECT {$found_rows} * FROM " . self::$table_name . " WHERE {$where} ORDER BY {$order_by} {$limit}"); if ($found_rows) { $total_row_count = $wpdb->get_var('SELECT FOUND_ROWS()'); } $latest_reading_ids = array(); $plan_ids = array(); foreach ($results as $_schedule) { $schedule = new BfoxReadingSchedule($_schedule); $plan_ids[] = $schedule->plan_id; if ($cache_latest_readings) { $latest_reading_ids[$schedule->revision_id][] = (int) $schedule->latest_reading_id(); } $schedules[$_schedule->id] = $schedule; } unset($results); if (!empty($latest_reading_ids)) { $readings = BfoxReadingPlan::get_readings(array('reading_ids' => $latest_reading_ids)); foreach ($schedules as $schedule) { $schedule->latest_reading($readings[$schedule->revision_id]); } } BfoxReadingPlan::cache('schedule', $schedules); BfoxReadingPlan::cache_plan_ids($plan_ids); } return array_keys($schedules); }
public static function revision_readings($revision_id) { $revision_readings = self::cache_get('revision', $revision_id); if (is_null($revision_readings)) { $readings = BfoxReadingPlan::get_readings(array('revision_id' => $revision_id)); $revision_readings = $readings[$revision_id]; self::cache_for_id('revision', $revision_readings, $revision_id); } return (array) $revision_readings; }