PHP 8.0.30
Preview: Private_Course_Access.php Size: 2.52 KB
/home/certprox/sacre.certproxywizard.com/wp/wp-content/plugins/tutor/classes/Private_Course_Access.php

<?php
/**
 * Private Course Access
 *
 * @package  Tutor\Course
 * @author   Themeum <support@themeum.com>
 * @link https://themeum.com
 * @since 1.0.0
 */

namespace TUTOR;

use Tutor\Cache\TutorCache;
use Tutor\Models\CourseModel;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Register Tutor's post types
 *
 * @since 1.0.0
 */
class Private_Course_Access extends Tutor_Base {

	/**
	 * Allow empty
	 *
	 * @var boolean
	 */
	private $allow_empty = false;

	/**
	 * Register hooks
	 *
	 * @since 1.0.0
	 */
	public function __construct() {
		parent::__construct();

		add_action( 'pre_get_posts', array( $this, 'enable_private_access' ) );
		add_filter( 'post_type_link', array( $this, 'permalink_for_private_course' ), 10, 2 );
	}

	/**
	 * Enable private course access
	 *
	 * @param mixed $query query.
	 *
	 * @return void
	 */
	public function enable_private_access( $query = null ) {

		if ( ! is_admin() && is_user_logged_in() ) {

			global $wpdb;
			$p_name = isset( $query->query['name'] ) ? $query->query['name'] : '';
			$p_name = esc_sql( $p_name );

			if ( $this->allow_empty && empty( $p_name ) ) {
				$query->set( 'post_status', array( 'private', 'publish' ) );
				return;
			}

			// Get using raw query to speed up.
			$course_post_type = tutor()->course_post_type;

			// Get data from cache.
			$cache_key = "tutor_private_query_{$course_post_type}_{$p_name}";
			$result    = TutorCache::get( $cache_key );

			if ( false === $result ) {
				$private_query = $wpdb->prepare(
					"SELECT ID, post_parent
						FROM {$wpdb->posts}
						WHERE post_type = %s
							AND post_name = %s
							AND post_status = %s
					",
					$course_post_type,
					$p_name,
					'private'
				);
				$result = $wpdb->get_results( $private_query ); //phpcs:ignore
				// Set cache data.
				TutorCache::set( $cache_key, $result );
			}

			$private_course_id = ( is_array( $result ) && isset( $result[0] ) ) ? $result[0]->ID : 0;

			if ( $private_course_id > 0 && tutor_utils()->is_enrolled( $private_course_id ) ) {
				$this->allow_empty = true;
				$query->set( 'post_status', array( 'private', 'publish' ) );
			}
		}
	}

	/**
	 * Make permalink for private course.
	 *
	 * @since 3.0.0
	 *
	 * @param string  $url permalink.
	 * @param WP_Post $post post object.
	 *
	 * @return string
	 */
	public function permalink_for_private_course( $url, $post ) {
		if ( CourseModel::STATUS_PRIVATE === $post->post_status && $this->course_post_type === $post->post_type ) {
			$url = home_url( $this->course_base_permalink . '/' . $post->post_name );
		}

		return $url;
	}
}

Directory Contents

Dirs: 0 × Files: 59

Name Size Perms Modified Actions
11.79 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
24.41 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
17.03 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.79 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
23.94 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
4.39 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
1.47 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
3.16 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
4.85 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
94.45 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.55 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
8.68 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
14.68 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
1.16 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
8.20 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
513 B lrw-r--r-- 2026-05-26 12:31:45
Edit Download
1.23 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
10.43 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
7.16 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.94 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
4.62 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
11.49 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
9.08 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
13.20 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
13.09 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
19.92 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
67.77 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.00 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
18.30 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.52 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
2.55 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
35.16 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
12.53 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
7.28 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
10.78 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
7.97 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
3.72 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
5.18 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
14.18 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
1.08 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
10.44 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
3.03 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
8.20 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
14.52 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
683 B lrw-r--r-- 2026-05-26 12:31:45
Edit Download
3.33 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
18.56 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
36.69 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
4.69 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
1.48 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
33.34 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
12.49 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
14.90 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
270.80 KB lrw-r--r-- 2026-05-26 12:31:45
Edit Download
3.94 KB lrw-r--r-- 2026-05-26 12:31:46
Edit Download
4.83 KB lrw-r--r-- 2026-05-26 12:31:46
Edit Download
9.49 KB lrw-r--r-- 2026-05-26 12:31:46
Edit Download
6.24 KB lrw-r--r-- 2026-05-26 12:31:46
Edit Download
24.76 KB lrw-r--r-- 2026-05-26 12:31:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).