Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 107

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 234

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 235

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 236

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 237

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 238

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 239
* @link https://themeum.com * @since 1.0.0 */ namespace TUTOR; if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Register Tutor's post types * * @since 1.0.0 */ //phpcs:ignore class Post_types { /** * Course post type * * @since 1.0.0 * * @var string */ public $course_post_type; /** * Lesson post type * * @since 1.0.0 * * @var string */ public $lesson_post_type; /** * Register hooks * * @since 1.0.0 */ public function __construct() { $this->course_post_type = tutor()->course_post_type; $this->lesson_post_type = tutor()->lesson_post_type; add_action( 'init', array( $this, 'register_course_post_types' ) ); add_action( 'init', array( $this, 'register_lesson_post_types' ) ); add_action( 'init', array( $this, 'register_quiz_post_types' ) ); add_action( 'init', array( $this, 'register_topic_post_types' ) ); add_action( 'init', array( $this, 'register_assignments_post_types' ) ); add_filter( 'gutenberg_can_edit_post_type', array( $this, 'gutenberg_can_edit_post_type' ), 10, 2 ); add_filter( 'use_block_editor_for_post_type', array( $this, 'gutenberg_can_edit_post_type' ), 10, 2 ); /** * Customize the message of course */ add_filter( 'post_updated_messages', array( $this, 'course_updated_messages' ) ); /** * Since 1.4.0 */ add_action( 'init', array( $this, 'register_tutor_enrolled_post_types' ) ); /** * Remove tutor course post type from admin menu * * @since v2.0.0 */ add_action( 'admin_menu', array( $this, 'remove_course_post_menu' ) ); } /** * Register course post type * * @since 1.0.0 * * @return void */ public function register_course_post_types() { $course_post_type = $this->course_post_type; $labels = array( 'name' => _x( 'Courses', 'post type general name', 'tutor' ), 'singular_name' => _x( 'Course', 'post type singular name', 'tutor' ), 'menu_name' => _x( 'Courses', 'admin menu', 'tutor' ), 'name_admin_bar' => _x( 'Course', 'add new on admin bar', 'tutor' ), 'add_new' => _x( 'Add New', 'tutor course add', 'tutor' ), 'add_new_item' => __( 'Add New Course', 'tutor' ), 'new_item' => __( 'New Course', 'tutor' ), 'edit_item' => __( 'Edit Course', 'tutor' ), 'view_item' => __( 'View Course', 'tutor' ), 'all_items' => __( 'Courses', 'tutor' ), 'search_items' => __( 'Search Courses', 'tutor' ), 'parent_item_colon' => __( 'Parent Courses:', 'tutor' ), 'not_found' => __( 'No courses found.', 'tutor' ), 'not_found_in_trash' => __( 'No courses found in Trash.', 'tutor' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Description.', 'tutor' ), 'public' => true, 'publicly_queryable' => true, // 'show_ui' => true, // 'show_in_menu' => 'tutor', 'query_var' => true, 'rewrite' => array( 'slug' => tutor_utils()->get_option( 'course_permalink_base', $course_post_type ), 'with_front' => true, ), 'menu_icon' => 'dashicons-book-alt', 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'taxonomies' => array( 'course-category', 'course-tag' ), 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'author' ), 'show_in_rest' => true, 'capabilities' => array( 'edit_post' => 'edit_tutor_course', 'read_post' => 'read_tutor_course', 'delete_post' => 'delete_tutor_course', 'delete_posts' => 'delete_tutor_courses', 'edit_posts' => 'edit_tutor_courses', 'edit_others_posts' => 'edit_others_tutor_courses', 'publish_posts' => 'publish_tutor_courses', 'read_private_posts' => 'read_private_tutor_courses', 'create_posts' => 'edit_tutor_courses', ), ); register_post_type( $course_post_type, $args ); /** * Taxonomy */ $labels = array( 'name' => _x( 'Course Categories', 'taxonomy general name', 'tutor' ), 'singular_name' => _x( 'Category', 'taxonomy singular name', 'tutor' ), 'search_items' => __( 'Search Categories', 'tutor' ), 'popular_items' => __( 'Popular Categories', 'tutor' ), 'all_items' => __( 'All Categories', 'tutor' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Edit Category', 'tutor' ), 'update_item' => __( 'Update Category', 'tutor' ), 'add_new_item' => __( 'Add New Category', 'tutor' ), 'new_item_name' => __( 'New Category Name', 'tutor' ), 'separate_items_with_commas' => __( 'Separate categories with commas', 'tutor' ), 'add_or_remove_items' => __( 'Add or remove categories', 'tutor' ), 'choose_from_most_used' => __( 'Choose from the most used categories', 'tutor' ), 'not_found' => __( 'No categories found.', 'tutor' ), 'menu_name' => __( 'Course Categories', 'tutor' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'query_var' => true, 'show_in_rest' => true, 'rewrite' => array( 'slug' => 'course-category' ), ); register_taxonomy( 'course-category', $this->course_post_type, $args ); $labels = array( 'name' => _x( 'Tags', 'taxonomy general name', 'tutor' ), 'singular_name' => _x( 'Tag', 'taxonomy singular name', 'tutor' ), 'search_items' => __( 'Search Tags', 'tutor' ), 'popular_items' => __( 'Popular Tags', 'tutor' ), 'all_items' => __( 'All Tags', 'tutor' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Edit Tag', 'tutor' ), 'update_item' => __( 'Update Tag', 'tutor' ), 'add_new_item' => __( 'Add New Tag', 'tutor' ), 'new_item_name' => __( 'New Tag Name', 'tutor' ), 'separate_items_with_commas' => __( 'Separate Tags with commas', 'tutor' ), 'add_or_remove_items' => __( 'Add or remove Tags', 'tutor' ), 'choose_from_most_used' => __( 'Choose from the most used Tags', 'tutor' ), 'not_found' => __( 'No Tags found.', 'tutor' ), 'menu_name' => __( 'Tags', 'tutor' ), ); $args = array( 'hierarchical' => false, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'query_var' => true, 'show_in_rest' => true, 'rewrite' => array( 'slug' => 'course-tag' ), ); register_taxonomy( 'course-tag', $this->course_post_type, $args ); } /** * Register lesson post type * * @since 1.0.0 * * @return void */ public function register_lesson_post_types() { $lesson_post_type = $this->lesson_post_type; $lesson_base_slug = apply_filters( 'tutor_lesson_base_slug', $lesson_post_type ); $labels = array( 'name' => _x( 'Lessons', 'post type general name', 'tutor' ), 'singular_name' => _x( 'Lesson', 'post type singular name', 'tutor' ), 'menu_name' => _x( 'Lessons', 'admin menu', 'tutor' ), 'name_admin_bar' => _x( 'Lesson', 'add new on admin bar', 'tutor' ), 'add_new' => _x( 'Add New', 'tutor lesson add', 'tutor' ), 'add_new_item' => __( 'Add New Lesson', 'tutor' ), 'new_item' => __( 'New Lesson', 'tutor' ), 'edit_item' => __( 'Edit Lesson', 'tutor' ), 'view_item' => __( 'View Lesson', 'tutor' ), 'all_items' => __( 'Lessons', 'tutor' ), 'search_items' => __( 'Search Lessons', 'tutor' ), 'parent_item_colon' => __( 'Parent Lessons:', 'tutor' ), 'not_found' => __( 'No lessons found.', 'tutor' ), 'not_found_in_trash' => __( 'No lessons found in Trash.', 'tutor' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Description.', 'tutor' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => false, 'query_var' => true, 'rewrite' => array( 'slug' => $lesson_base_slug ), 'menu_icon' => 'dashicons-list-view', 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'comments' ), 'exclude_from_search' => apply_filters( 'tutor_lesson_exclude_from_search', true ), 'capabilities' => array( 'edit_post' => 'edit_tutor_lesson', 'read_post' => 'read_tutor_lesson', 'delete_post' => 'delete_tutor_lesson', 'delete_posts' => 'delete_tutor_lessons', 'edit_posts' => 'edit_tutor_lessons', 'edit_others_posts' => 'edit_others_tutor_lessons', 'publish_posts' => 'publish_tutor_lessons', 'read_private_posts' => 'read_private_tutor_lessons', 'create_posts' => 'edit_tutor_lessons', ), ); /** * Added for support gutenberg editor to lesson post type * * @since 2.1.6 */ $enable_gutenberg = (bool) tutor_utils()->get_option( 'enable_gutenberg_course_edit' ); if ( $enable_gutenberg ) { $args['show_in_rest'] = true; } register_post_type( $lesson_post_type, $args ); } /** * Register quiz post type * * @since 1.0.0 * * @return void */ public function register_quiz_post_types() { $labels = array( 'name' => _x( 'Quizzes', 'post type general name', 'tutor' ), 'singular_name' => _x( 'Quiz', 'post type singular name', 'tutor' ), 'menu_name' => _x( 'Quizzes', 'admin menu', 'tutor' ), 'name_admin_bar' => _x( 'Quiz', 'add new on admin bar', 'tutor' ), 'add_new' => _x( 'Add New', 'tutor quiz add', 'tutor' ), 'add_new_item' => __( 'Add New Quiz', 'tutor' ), 'new_item' => __( 'New Quiz', 'tutor' ), 'edit_item' => __( 'Edit Quiz', 'tutor' ), 'view_item' => __( 'View Quiz', 'tutor' ), 'all_items' => __( 'Quizzes', 'tutor' ), 'search_items' => __( 'Search Quizzes', 'tutor' ), 'parent_item_colon' => __( 'Parent Quizzes:', 'tutor' ), 'not_found' => __( 'No quizzes found.', 'tutor' ), 'not_found_in_trash' => __( 'No quizzes found in Trash.', 'tutor' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Description.', 'tutor' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => false, 'show_in_menu' => 'tutor', 'query_var' => true, 'rewrite' => array( 'slug' => $this->lesson_post_type ), 'menu_icon' => 'dashicons-editor-help', 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor' ), 'exclude_from_search' => apply_filters( 'tutor_quiz_exclude_from_search', true ), 'capabilities' => array( 'edit_post' => 'edit_tutor_quiz', 'read_post' => 'read_tutor_quiz', 'delete_post' => 'delete_tutor_quiz', 'delete_posts' => 'delete_tutor_quizzes', 'edit_posts' => 'edit_tutor_quizzes', 'edit_others_posts' => 'edit_others_tutor_quizzes', 'publish_posts' => 'publish_tutor_quizzes', 'read_private_posts' => 'read_private_tutor_quizzes', 'create_posts' => 'edit_tutor_quizzes', ), ); register_post_type( 'tutor_quiz', $args ); } /** * Register topic post type * * @since 1.0.0 * * @return void */ public function register_topic_post_types() { $args = array( 'label' => 'Topics', 'description' => __( 'Description.', 'tutor' ), 'public' => false, 'publicly_queryable' => false, 'show_ui' => false, 'query_var' => false, 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, ); register_post_type( 'topics', $args ); } /** * Register assignment post type * * @since 1.0.0 * * @return void */ public function register_assignments_post_types() { $labels = array( 'name' => _x( 'Assignments', 'post type general name', 'tutor' ), 'singular_name' => _x( 'Assignment', 'post type singular name', 'tutor' ), 'menu_name' => _x( 'Assignments', 'admin menu', 'tutor' ), 'name_admin_bar' => _x( 'Assignment', 'add new on admin bar', 'tutor' ), 'add_new' => _x( 'Add New', 'tutor assignment add', 'tutor' ), 'add_new_item' => __( 'Add New Assignment', 'tutor' ), 'new_item' => __( 'New Assignment', 'tutor' ), 'edit_item' => __( 'Edit Assignment', 'tutor' ), 'view_item' => __( 'View Assignment', 'tutor' ), 'all_items' => __( 'Assignments', 'tutor' ), 'search_items' => __( 'Search Assignments', 'tutor' ), 'parent_item_colon' => __( 'Parent Assignments:', 'tutor' ), 'not_found' => __( 'No Assignments found.', 'tutor' ), 'not_found_in_trash' => __( 'No Assignments found in Trash.', 'tutor' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Description.', 'tutor' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => false, 'show_in_menu' => 'tutor', 'query_var' => true, 'rewrite' => array( 'slug' => $this->lesson_post_type ), 'menu_icon' => 'dashicons-editor-help', 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor' ), 'exclude_from_search' => apply_filters( 'tutor_assignment_exclude_from_search', true ), 'capabilities' => array( 'edit_post' => 'edit_tutor_assignment', 'read_post' => 'read_tutor_assignment', 'delete_post' => 'delete_tutor_assignment', 'delete_posts' => 'delete_tutor_assignments', 'edit_posts' => 'edit_tutor_assignments', 'edit_others_posts' => 'edit_others_tutor_assignments', 'publish_posts' => 'publish_tutor_assignments', 'read_private_posts' => 'read_private_tutor_assignments', 'create_posts' => 'edit_tutor_assignments', ), ); register_post_type( 'tutor_assignments', $args ); } /** * Course update messages * * @since 1.0.0 * * @param array $messages messages. * * @return mixed */ public function course_updated_messages( $messages ) { $post = get_post(); $post_type = get_post_type( $post ); $post_type_object = get_post_type_object( $post_type ); $course_post_type = tutor()->course_post_type; $revision = Input::get( 'revision' ); $revision_msg = __( 'Course restored to revision from ', 'tutor' ); if ( ! is_null( $revision ) ) { $revision_msg .= wp_post_revision_title( $revision ); } else { $revision_msg = false; } $schedule_date = date_i18n( __( 'M j, Y @ G:i', 'tutor' ), strtotime( $post->post_date ) ); $schedule_msg = __( 'Course scheduled for:', 'tutor' ); $schedule_msg .= ' ' . $schedule_date . ' '; $messages[ $course_post_type ] = array( 0 => '', // Unused. Messages start at index 1. 1 => __( 'Course updated.', 'tutor' ), 2 => __( 'Custom field updated.', 'tutor' ), 3 => __( 'Custom field deleted.', 'tutor' ), 4 => __( 'Course updated.', 'tutor' ), 5 => $revision_msg, 6 => __( 'Course published.', 'tutor' ), 7 => __( 'Course saved.', 'tutor' ), 8 => __( 'Course submitted.', 'tutor' ), 9 => $schedule_msg, 10 => __( 'Course draft updated.', 'tutor' ), ); if ( $post_type_object->publicly_queryable && $course_post_type === $post_type ) { $permalink = get_permalink( $post->ID ); $view_link = sprintf( ' %s', esc_url( $permalink ), __( 'View course', 'tutor' ) ); $messages[ $post_type ][1] .= $view_link; $messages[ $post_type ][6] .= $view_link; $messages[ $post_type ][9] .= $view_link; $preview_permalink = add_query_arg( 'preview', 'true', $permalink ); $preview_link = sprintf( ' %s', esc_url( $preview_permalink ), __( 'Preview course', 'tutor' ) ); $messages[ $post_type ][8] .= $preview_link; $messages[ $post_type ][10] .= $preview_link; } return $messages; } /** * Gutenberg can edit post filter handler * * @since 1.0.0 * * @param bool $can_edit use block editor. * @param string $post_type post type. * * @return bool * * Enable / Disable Gutenberg Editor * @since v.1.3.4 */ public function gutenberg_can_edit_post_type( $can_edit, $post_type ) { $enable_gutenberg = (bool) tutor_utils()->get_option( 'enable_gutenberg_course_edit' ); return $this->course_post_type === $post_type ? $enable_gutenberg : $can_edit; } /** * Register tutor_enrolled post type * * @since v.1.4.0 */ public function register_tutor_enrolled_post_types() { $args = array( 'label' => 'Tutor Enrolled', 'description' => __( 'Description.', 'tutor' ), 'public' => false, 'publicly_queryable' => false, 'show_ui' => false, 'query_var' => false, 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, ); register_post_type( 'tutor_enrolled', $args ); } /** * Remove course post menu * * @return void * @since v2.0.0 */ public function remove_course_post_menu() { remove_menu_page( 'edit.php?post_type=' . tutor()->course_post_type ); } }