function action_parse_request(&$wp) { global $wp_query; do_action('coursepress_pre_parse_action'); /* Show instructor invite pages */ $pg = $this->instructor_invite_confirmation(); /* Show Units archive template */ if (array_key_exists('course_category', $wp->query_vars)) { $category_template_file = locate_template(array('archive-course-' . $wp->query_vars['course_category'] . '.php')); if ($category_template_file != '') { do_shortcode('[courses_loop]'); require_once $category_template_file; exit; } else { $theme_file = locate_template(array('archive-course.php')); if ($theme_file != '') { do_shortcode('[courses_loop]'); require_once $theme_file; exit; } else { $theme_file = locate_template(array('archive.php')); if ($theme_file != '') { do_shortcode('[courses_loop]'); require_once $theme_file; exit; } } } } /* Show Discussion single template */ if (array_key_exists('discussion_name', $wp->query_vars)) { $this->remove_pre_next_post(); $vars['discussion_name'] = $wp->query_vars['discussion_name']; $vars['course_id'] = Course::get_course_id_by_name($wp->query_vars['coursename']); } /* Add New Discussion template */ if (array_key_exists('discussion_archive', $wp->query_vars) || array_key_exists('discussion_name', $wp->query_vars) && $wp->query_vars['discussion_name'] == $this->get_discussion_slug_new()) { $this->remove_pre_next_post(); $vars['course_id'] = Course::get_course_id_by_name($wp->query_vars['coursename']); if (array_key_exists('discussion_name', $wp->query_vars) && $wp->query_vars['discussion_name'] == $this->get_discussion_slug_new()) { $this->units_archive_subpage = 'discussions'; $theme_file = locate_template(array('page-add-new-discussion.php')); if ($theme_file != '') { require_once $theme_file; exit; } else { $args = array('slug' => $wp->request, 'title' => __('Add New Discussion', 'cp'), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/page-add-new-discussion.php', $vars), 'type' => 'discussion', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } } else { /* Archive Discussion template */ $this->units_archive_subpage = 'discussions'; $theme_file = locate_template(array('archive-discussions.php')); if ($theme_file != '') { //do_shortcode( '[course_notifications_loop]' ); require_once $theme_file; exit; } else { $course_id = do_shortcode('[get_parent_course_id]'); // DISCUSSIONS $args = array('slug' => $wp->request, 'title' => get_the_title($course_id), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/course-discussion-archive.php', $vars), 'type' => 'discussions', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); do_shortcode('[course_discussion_loop]'); } } } /* Show Instructor single template only if the user is an instructor of at least 1 course */ if (array_key_exists('instructor_username', $wp->query_vars)) { //&& 0 < Instructor::get_courses_number( cp_get_userdatabynicename( $wp->query_vars[ 'instructor_username' ] )->ID ) $this->remove_pre_next_post(); $vars = array(); $vars['instructor_username'] = $wp->query_vars['instructor_username']; $user = wp_cache_get($wp->query_vars['instructor_username'], 'cp_instructor_hash'); if (false === $user) { if (get_option('show_instructor_username', 1) == 1) { $username = str_replace('%20', ' ', $wp->query_vars['instructor_username']); //support for usernames with spaces $user = Instructor::instructor_by_login($username); } else { $user = Instructor::instructor_by_hash($wp->query_vars['instructor_username']); wp_cache_set($wp->query_vars['instructor_username'], $user, 'cp_instructor_hash'); } } $vars['user'] = $user; $theme_file = locate_template(array('single-instructor.php')); // $course_count = Instructor::get_courses_number( $vars['user']->ID ); // if ( $course_count <= 1 ) { // exit; // } if ($theme_file != '') { require_once $theme_file; exit; } else { $args = array('slug' => $wp->request, 'title' => __($vars['user']->display_name, 'cp'), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/instructor-single.php', $vars), 'type' => 'virtual_page'); $pg = new CoursePress_Virtual_Page($args); } $user_id = get_current_user_id(); $this->set_latest_activity($user_id); } $url = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'); $inbox_page = false; $new_message_page = false; $sent_messages_page = false; if (preg_match('/' . $this->get_inbox_slug() . '/', $url)) { $inbox_page = true; } if (preg_match('/' . $this->get_new_message_slug() . '/', $url)) { $new_message_page = true; } if (preg_match('/' . $this->get_sent_messages_slug() . '/', $url)) { $sent_messages_page = true; } if ($inbox_page) { $this->inbox_subpage = 'inbox'; $theme_file = locate_template(array('page-inbox.php')); if ($theme_file != '') { require_once $theme_file; exit; } else { $args = array('slug' => $wp->request, 'title' => __('Inbox', 'cp'), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/page-inbox.php', array(), true), 'type' => 'page', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } } if ($sent_messages_page) { $this->inbox_subpage = 'sent_messages'; $theme_file = locate_template(array('page-sent-messages.php')); if ($theme_file != '') { //do_shortcode( '[course_units_loop]' ); require_once $theme_file; exit; } else { $args = array('slug' => $wp->request, 'title' => __('Sent Message', 'cp'), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/page-sent-messages.php', array(), true), 'type' => 'page', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } } if ($new_message_page) { $this->inbox_subpage = 'new_message'; $theme_file = locate_template(array('page-new-message.php')); if ($theme_file != '') { //do_shortcode( '[course_units_loop]' ); require_once $theme_file; exit; } else { $args = array('slug' => $wp->request, 'title' => __('New Message', 'cp'), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/page-new-message.php', array(), true), 'type' => 'page', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } } /* Show Units archive template */ if (array_key_exists('coursename', $wp->query_vars) && !array_key_exists('unitname', $wp->query_vars)) { $this->remove_pre_next_post(); $units_archive_page = false; $units_archive_grades_page = false; $notifications_archive_page = false; $units_workbook_page = false; $url = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'); if (preg_match('/' . $this->get_units_slug() . '/', $url)) { $units_archive_page = true; } if (preg_match('/' . $this->get_grades_slug() . '/', $url)) { $units_archive_grades_page = true; } if (preg_match('/' . $this->get_workbook_slug() . '/', $url)) { $units_workbook_page = true; } if (preg_match('/' . $this->get_notifications_slug() . '/', $url)) { $notifications_archive_page = true; } $vars = array(); $vars['course_id'] = Course::get_course_id_by_name($wp->query_vars['coursename']); if ($notifications_archive_page) { $this->units_archive_subpage = 'notifications'; $theme_file = locate_template(array('archive-notifications.php')); if ($theme_file != '') { do_shortcode('[course_notifications_loop]'); require_once $theme_file; exit; } else { $course_id = do_shortcode('[get_parent_course_id]'); // NOTIFICATIONS $args = array('slug' => $wp->request, 'title' => get_the_title($course_id), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/course-notifications-archive.php', $vars), 'type' => 'notifications', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); do_shortcode('[course_notifications_loop]'); } } if ($units_archive_page) { $this->units_archive_subpage = 'units'; $theme_file = locate_template(array('archive-unit.php')); if ($theme_file != '') { do_shortcode('[course_units_loop]'); require_once $theme_file; exit; } else { $course_id = do_shortcode('[get_parent_course_id]'); // COURSE UNITS $args = array('slug' => $wp->request, 'title' => get_the_title($course_id), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/course-units-archive.php', $vars), 'type' => 'unit', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); do_shortcode('[course_units_loop]'); } $user_id = get_current_user_id(); $this->set_latest_activity($user_id); $this->upgrade_user_meta($user_id, $course_id); } if ($units_archive_grades_page) { $this->units_archive_subpage = 'grades'; $theme_file = locate_template(array('archive-unit-grades.php')); if ($theme_file != '') { do_shortcode('[course_units_loop]'); require_once $theme_file; exit; } else { $course_id = do_shortcode('[get_parent_course_id]'); // COURSE GRADES $args = array('slug' => $wp->request, 'title' => get_the_title($course_id), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/course-units-archive-grades.php', $vars), 'type' => 'unit', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); do_shortcode('[course_units_loop]'); } $this->set_latest_activity(get_current_user_id()); } if ($units_workbook_page) { $this->units_archive_subpage = 'workbook'; $theme_file = locate_template(array('archive-unit-workbook.php')); if ($theme_file != '') { do_shortcode('[course_units_loop]'); require_once $theme_file; exit; } else { $course_id = do_shortcode('[get_parent_course_id]'); // WORKBOOK do_shortcode('[course_units_loop]'); $args = array('slug' => $wp->request, 'title' => get_the_title($course_id), 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/archive-unit-workbook.php', $vars), 'type' => 'unit', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); do_shortcode('[course_units_loop]'); } $this->set_latest_activity(get_current_user_id()); } } /* Show Unit single template */ if (array_key_exists('coursename', $wp->query_vars) && array_key_exists('unitname', $wp->query_vars)) { $this->remove_pre_next_post(); $vars = array(); $unit = new Unit(); $vars['course_id'] = Course::get_course_id_by_name($wp->query_vars['coursename']); $vars['unit_id'] = $unit->get_unit_id_by_name($wp->query_vars['unitname'], $vars['course_id']); //$this->set_course_visited( get_current_user_id(), Course::get_course_id_by_name( $wp->query_vars['coursename'] ) ); $unit = new Unit($vars['unit_id']); $this->set_unit_visited(get_current_user_id(), $vars['unit_id']); $theme_file = locate_template(array('single-unit.php')); $forced_previous_completion_template = locate_template(array('single-previous-unit.php')); if (!Unit::is_unit_available($vars['unit_id']) && (!current_user_can('manage_options') && !CoursePress_Capabilities::can_update_course($vars['course_id']))) { if ($forced_previous_completion_template != '') { do_shortcode('[course_unit_single]'); //required for getting unit results require_once $forced_previous_completion_template; exit; } else { $args = array('slug' => $wp->request, 'title' => $unit->details->post_title, 'content' => __('This Unit is not available at the moment. Please check back later.', 'cp'), 'type' => 'page', 'is_page' => true, 'is_singular' => false, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } } else { if ($theme_file != '') { global $wp; do_shortcode('[course_unit_single unit_id="' . $vars['unit_id'] . '"]'); //required for getting unit results require_once $theme_file; do_action('wp'); //fix for gravity exit; } else { $args = array('slug' => $wp->request, 'title' => isset($unit->details) ? get_the_title($unit->details->post_parent) : '', 'content' => $this->get_template_details($this->plugin_dir . 'includes/templates/course-units-single.php', $vars), 'type' => 'unit', 'is_page' => true, 'is_singular' => true, 'is_archive' => false); $pg = new CoursePress_Virtual_Page($args); } $this->set_latest_activity(get_current_user_id()); } } }