403Webshell
Server IP : 104.21.28.229  /  Your IP : 216.73.216.142
Web Server : Apache/2
System : Linux hosting8537.lvs 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : mienphi ( 1014)
PHP Version : 8.2.14
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/mienphi/public_html/wp-content/plugins/learnpress-prerequisites-courses/inc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/mienphi/public_html/wp-content/plugins/learnpress-prerequisites-courses/inc/load.php
<?php
/**
 * Plugin load class.
 *
 * @author   ThimPress
 * @package  LearnPress/Prerequisites-Courses/Classes
 * @version  3.0.1
 */

// Prevent loading this file directly
use LearnPress\Helpers\Template;
use LearnPress\Models\CourseModel;
use LearnPress\Models\UserItems\UserCourseModel;
use LearnPress\Models\UserModel;

defined( 'ABSPATH' ) || exit;

if ( ! class_exists( 'LP_Addon_Prerequisites_Courses' ) ) {
	/**
	 * Class LP_Addon_Prerequisites_Courses
	 */
	class LP_Addon_Prerequisites_Courses extends LP_Addon {

		/**
		 * @var string
		 */
		public $version = LP_ADDON_PREREQUISITES_COURSES_VER;

		/**
		 * @var string
		 */
		public $require_version = LP_ADDON_PREREQUISITES_COURSES_REQUIRE_VER;

		/**
		 * Path file addon
		 *
		 * @var string
		 */
		public $plugin_file = LP_ADDON_PREREQUISITES_COURSES_FILE;

		const META_KEY_ALLOW_PURCHASE = '_lp_prerequisite_allow_purchase';
		const META_KEY_ENABLE         = '_lp_course_prerequisite';

		/**
		 * LP_Addon_Prerequisites_Courses constructor.
		 */
		public function __construct() {
			parent::__construct();
		}

		/**
		 * Include required core files used in admin and on the frontend.
		 *
		 * @since 3.0.0
		 */
		protected function _includes() {
			require_once LP_ADDON_PREREQUISITES_COURSES_PATH . '/inc/class-lp-prere-hooks.php';
		}

		/**
		 * Get prerequisites of course.
		 *
		 * @param int $course_id
		 *
		 * @return array
		 */
		public static function get_prerequisite_courses( int $course_id = 0 ): array {
			$required_course_ids = get_post_meta( $course_id, '_lp_course_prerequisite', true );
			return ! empty( $required_course_ids ) ? $required_course_ids : [];
		}

		/**
		 * Check course is allow purchase.
		 *
		 * @param CourseModel $course
		 *
		 * @return bool
		 */
		public function is_allow_purchase_course( CourseModel $course ): bool {
			$is_allow = $course->get_meta_value_by_key( self::META_KEY_ALLOW_PURCHASE, 'yes' );

			return 'yes' === $is_allow;
		}

		/**
		 * Check can enroll course.
		 *
		 * @param CourseModel $course
		 * @param $user
		 *
		 * @return bool
		 * @since 4.0.8
		 * @version 1.0.0
		 */
		public function check_condition( CourseModel $course, $user ): bool {
			try {
				$required_course_ids = self::get_prerequisite_courses( $course->get_id() );
				if ( empty( $required_course_ids ) ) {
					return true;
				}

				$user_id = 0;
				if ( $user instanceof UserModel ) {
					$user_id = $user->get_id();
				}

				// Check prerequisites courses passed.
				foreach ( $required_course_ids as $required_course_id ) {
					$course = CourseModel::find( $required_course_id, true );
					if ( ! $course ) {
						continue;
					}

					$userCourseCheck = UserCourseModel::find( $user_id, $required_course_id, true );
					if ( ! $user_id || ! $userCourseCheck || ! $userCourseCheck->is_passed() ) {
						throw new Exception( esc_html__( 'Course has prerequisite courses not passed', 'learnpress-prerequisites-courses' ) );
					}
				}

				return true;
			} catch ( Throwable $e ) {
				return false;
			}
		}

		/**
		 * HTML message prerequisites courses.
		 *
		 * @param CourseModel $course
		 * @param UserModel|false $user
		 *
		 * @return string
		 * @since 4.0.8
		 */
		public function html_prerequisite_courses( CourseModel $course, $user ): string {
			$html                = '';
			$required_course_ids = self::get_prerequisite_courses( $course->get_id() );
			if ( empty( $required_course_ids ) ) {
				return $html;
			}

			wp_enqueue_style( 'lp-prerequisites-courses' );
			$user_id = 0;
			if ( $user instanceof UserModel ) {
				$user_id = $user->get_id();
			}

			$html_list = '';
			foreach ( $required_course_ids as $required_course_id ) {
				$course = CourseModel::find( $required_course_id, true );
				if ( ! $course ) {
					continue;
				}

				$graduation = '';
				if ( $user instanceof UserModel ) {
					$userCourse = UserCourseModel::find( $user_id, $course->get_id(), true );
					if ( $userCourse ) {
						$graduation = $userCourse->get_graduation();
					}
				}

				$html_list .= sprintf(
					'<li class="%s"><a href="%s">%s%s</a></li>',
					esc_attr( $graduation ),
					esc_url_raw( get_the_permalink( $course->get_id() ) ),
					$course->get_title(),
					$graduation ? sprintf(
						'<span class="lp-course-prerequisite-status"> (%s)</span>',
						learn_press_course_grade_html( $graduation, false )
					) : ''
				);
			}

			$section = apply_filters(
				'learn-press/prerequisites-course/html-message',
				[
					'wrapper'             => '<div class="lp-prerequisite">',
					'message_content'     => sprintf(
						'<div class="message-text">%s</div>',
						__(
							'NOTE: You have to pass these courses before you can enroll this course.',
							'learnpress-prerequisites-courses'
						)
					),
					'ul_list_courses'     => '<ul class="list-course-prerequisite">',
					'list_item'           => $html_list,
					'ul_list_courses_end' => '</ul>',
					'wrapper_end'         => '</div>',
				],
				$course,
				$user
			);

			return Template::combine_components( $section );
		}

		/**`
		 * Show notice required pass prerequisites courses.
		 *
		 * @since 3.0.0
		 * @version 3.0.1
		 * @editor tungnx
		 * @Todo theme coaching, eduma is using this function
		 */
		public function enroll_notice() {
		}
	}
}

add_action( 'plugins_loaded', array( 'LP_Addon_Prerequisites_Courses', 'instance' ) );

Youez - 2016 - github.com/yon3zu
LinuXploit