コード例 #1
0
 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;
 }