automatewoo/includes/Rules/Sensei_Have_Not_Completed_Lesson.php
fei-source 47d3c9a8b6 Update to v6.2.2
Source: GrootMade/Festinger Vault
2026-03-15 08:31:15 +08:00

59 lines
1.4 KiB
PHP

<?php
namespace AutomateWoo\Rules;
use AutomateWoo\Sensei_Workflow_Helper;
defined( 'ABSPATH' ) || exit;
/**
* @class Sensei_Have_Not_Completed_Lesson
*/
class Sensei_Have_Not_Completed_Lesson extends Abstract_Sensei_Rule {
/**
* Init the rule.
*/
public function init() {
parent::init();
$this->title = __( 'Course - Not Completed a Lesson', 'automatewoo' );
$this->placeholder = __( 'Any Course', 'automatewoo' );
}
/**
* Validate the rule for a given Student.
*
* @param \AutomateWoo\Customer $customer
* @param string $compare
* @param array $course_ids
* @return bool
*/
public function validate( $customer, $compare, $course_ids ) {
$passed = true;
$user_id = $customer->get_user_id();
if ( ! $user_id || ! $this->is_sensei_workflow() ) {
return false;
}
if ( empty( $course_ids ) ) {
$course_ids = Sensei_Workflow_Helper::get_student_course_ids( $user_id );
}
if ( empty( $course_ids ) ) {
return $passed;
}
foreach ( $course_ids as $course_id ) {
$course_lessons = \Sensei()->course->course_lessons( $course_id );
if ( $course_lessons && is_array( $course_lessons ) ) {
foreach ( $course_lessons as $lesson ) {
if ( \WooThemes_Sensei_Utils::user_completed_lesson( $lesson->ID, $user_id ) ) {
return false;
}
}
}
}
return $passed;
}
}