public static function get_unit_availability_status($unit_id) { $unit_details = false; $unit = new Unit((int) $unit_id); $unit_details = $unit->get_unit(); $unit_available_date = get_post_meta($unit_id, 'unit_availability', true); /* Not filtering date format as it could cause conflicts. Only filter date on display. */ $current_date = date('Y-m-d', current_time('timestamp', 0)); /* Check if previous has conditions */ $previous_unit_id = self::get_previous_unit_from_the_same_course($unit->course_id, $unit_id); $force_current_unit_completion = !empty($previous_unit_id) ? get_post_meta($previous_unit_id, 'force_current_unit_completion', true) : ''; $force_current_unit_successful_completion = !empty($previous_unit_id) ? get_post_meta($previous_unit_id, 'force_current_unit_successful_completion', true) : ''; $available = true; $student_id = get_current_user_id(); $mandatory_done = Student_Completion::is_mandatory_complete($student_id, $unit->course_id, $previous_unit_id); $unit_completed = Student_Completion::is_unit_complete($student_id, $unit->course_id, $previous_unit_id); $unit->status['mandatory_required']['enabled'] = !empty($force_current_unit_completion) && 'on' == $force_current_unit_completion; $unit->status['mandatory_required']['result'] = $mandatory_done; $unit->status['completion_required']['enabled'] = !empty($force_current_unit_successful_completion) && 'on' == $force_current_unit_successful_completion; $unit->status['completion_required']['result'] = $unit_completed; $available = $unit->status['mandatory_required']['enabled'] ? $unit->status['mandatory_required']['result'] : $available; $available = $unit->status['completion_required']['enabled'] ? $unit->status['completion_required']['result'] : $available; $unit->status['date_restriction']['result'] = $current_date >= $unit_available_date; if (!$unit->status['date_restriction']['result'] || !$available) { $available = false; } else { $available = true; } /** * Perform action if unit is available. * * @since 1.2.2 * */ do_action('coursepress_unit_availble', $available, $unit_id); /** * Return filtered value. * * Can be used by other plugins to filter unit availability. * * @since 1.2.2 * */ $available = apply_filters('coursepress_filter_unit_availability', $available, $unit_id); $status = $unit->status; $status['available'] = $available; return $status; }