static function auto_shortcode($template)
 {
     if (is_page()) {
         global $post, $wp_query, $wp;
         $page_id = $wp_query->queried_object_id;
         if ($page_id == learn_press_get_page_id('checkout')) {
             if (!preg_match('/\\[learn_press_checkout\\s?(.*)\\]/', $post->post_content)) {
                 $post->post_content .= '[learn_press_checkout]';
             }
         } elseif ($page_id == learn_press_get_page_id('profile')) {
             if (empty($wp->query_vars['user'])) {
                 $current_user = wp_get_current_user();
                 if (!empty($current_user->user_login)) {
                     wp_redirect(learn_press_get_endpoint_url('', $current_user->user_login, learn_press_get_page_link('profile')));
                     die;
                 } else {
                     learn_press_404_page();
                 }
             } else {
                 $query = array();
                 parse_str($wp->matched_query, $query);
                 if ($query) {
                     $profile_endpoints = (array) LP()->settings->get('profile_endpoints');
                     $endpoints = array_keys($profile_endpoints);
                     foreach ($query as $k => $v) {
                         if ($k == 'view') {
                             if (!$v) {
                                 $v = reset($profile_endpoints);
                             }
                             if (!in_array($v, apply_filters('learn_press_profile_tab_endpoints', $profile_endpoints))) {
                                 learn_press_404_page();
                             }
                         }
                         if (!empty($v)) {
                             $wp->query_vars[$k] = $v;
                         }
                     }
                 }
             }
             if (!preg_match('/\\[learn_press_profile\\s?(.*)\\]/', $post->post_content)) {
                 $post->post_content .= '[learn_press_profile]';
             }
         } elseif ($page_id == learn_press_get_page_id('cart')) {
             if (!preg_match('/\\[learn_press_cart\\s?(.*)\\]/', $post->post_content)) {
                 $post->post_content .= '[learn_press_cart]';
             }
         }
     }
     return $template;
 }
Exemplo n.º 2
0
/**
 * Prevent access directly to lesson by using lesson permalink
 *
 * @since 0.9.5
 * @param string
 * @return $string
 */
function learn_press_prevent_access_lesson($template)
{
    // if we are in single lesson page
    if (is_single() && 'lpr_lesson' == get_post_type()) {
        learn_press_404_page();
    }
    return $template;
}
/**
 * Controls WP displays the courses in a page which setup to display on homepage
 *
 * @param $q
 */
function learn_press_pre_get_posts($q)
{
    // We only want to affect the main query and not in admin
    if (!$q->is_main_query() || is_admin()) {
        return;
    }
    if ($q->get('post_type') == 'lp_course' && is_single()) {
        $course_name = $q->get('lp_course');
        $course_name_parts = explode('/', $course_name);
        $course_item = null;
        if (sizeof($course_name_parts) > 1) {
            $q->set('lp_course', $course_name_parts[0]);
            $course_item = $course_name_parts[1];
        }
        if (!$course_item) {
            foreach (array('lesson', 'quiz') as $item_type) {
                $q->get($item_type);
                if ($q->get($item_type)) {
                    $course_item = $q->get($item_type);
                    break;
                }
            }
        }
        // If we have the item's name in course permalink url, get it
        if ($course_item) {
            // grab the ID of the item
            if (preg_match('!^([0-9]+)-!', $course_item, $matches)) {
                $item_id = absint($matches[1]);
                $item_name = str_replace($matches[0], '', $course_item);
                $_post = get_post($item_id);
                //learn_press_get_post_by_name( $course_name_parts[1], true, array( 'lp_lesson', 'lp_quiz') );
                if ($_post) {
                    if ($_post->post_type == 'lp_lesson') {
                        $q->set('lesson', $item_name);
                        $q->set('course-item', 'lesson');
                        $_REQUEST['lesson'] = $item_name;
                        $_REQUEST['lesson_id'] = $_post->ID;
                        $_REQUEST['course-item'] = 'lesson';
                    } elseif ($_post->post_type == 'lp_quiz') {
                        $q->set('quiz', $item_name);
                        $q->set('course-item', 'quiz');
                        $_REQUEST['quiz'] = $item_name;
                        $_REQUEST['quiz_id'] = $_post->ID;
                        $_REQUEST['course-item'] = 'quiz';
                    }
                }
                do_action('learn_press_parse_query_to_request', $course_item);
            } else {
                learn_press_404_page();
            }
        }
    }
    // Fix for verbose page rules
    if ($GLOBALS['wp_rewrite']->use_verbose_page_rules && isset($q->queried_object_id) && $q->queried_object_id === learn_press_get_page_id('courses')) {
        $q->set('post_type', LP()->course_post_type);
        $q->set('page', '');
        $q->set('pagename', '');
        // Fix conditional Functions
        $q->is_archive = true;
        $q->is_post_type_archive = true;
        $q->is_singular = false;
        $q->is_page = false;
    }
    // Fix for endpoints on the homepage
    if ($q->is_home() && 'page' == get_option('show_on_front') && get_option('page_on_front') != $q->get('page_id')) {
        $_query = wp_parse_args($q->query);
        /*if ( ! empty( $_query ) && array_intersect( array_keys( $_query ), array_keys( $this->query_vars ) ) ) {
        			$q->is_page     = true;
        			$q->is_home     = false;
        			$q->is_singular = true;
        
        			$q->set( 'page_id', get_option('page_on_front') );
        		}*/
    }
    // When orderby is set, WordPress shows posts. Get around that here.
    if ($q->is_home() && 'page' == get_option('show_on_front') && get_option('page_on_front') == learn_press_get_page_id('courses')) {
        $_query = wp_parse_args($q->query);
        if (empty($_query) || !array_diff(array_keys($_query), array('preview', 'page', 'paged', 'cpage', 'orderby'))) {
            $q->is_page = true;
            $q->is_home = false;
            $q->set('page_id', get_option('page_on_front'));
            $q->set('post_type', LP()->course_post_type);
        }
    }
    if ($q->is_page() && 'page' == get_option('show_on_front') && $q->get('page_id') == learn_press_get_page_id('courses') && learn_press_get_page_id('courses')) {
        echo learn_press_get_page_id('courses'), ',', $q->get('page_id');
        $q->set('post_type', LP()->course_post_type);
        $q->set('page_id', '');
        if (isset($q->query['paged'])) {
            $q->set('paged', $q->query['paged']);
        }
        global $wp_post_types;
        $course_page = get_post(learn_press_get_page_id('courses'));
        $wp_post_types[LP()->course_post_type]->ID = $course_page->ID;
        $wp_post_types[LP()->course_post_type]->post_title = $course_page->post_title;
        $wp_post_types[LP()->course_post_type]->post_name = $course_page->post_name;
        $wp_post_types[LP()->course_post_type]->post_type = $course_page->post_type;
        $wp_post_types[LP()->course_post_type]->ancestors = get_ancestors($course_page->ID, $course_page->post_type);
        $q->is_singular = false;
        $q->is_post_type_archive = true;
        $q->is_archive = true;
        $q->is_page = true;
    } elseif (!$q->is_post_type_archive(LP()->course_post_type) && !$q->is_tax(get_object_taxonomies(LP()->course_post_type))) {
        return;
    }
}
Exemplo n.º 4
0
function learn_press_template_loader($template)
{
    $file = '';
    if (($page_id = learn_press_get_page_id('taken_course_confirm')) && is_page($page_id)) {
        if (!learn_press_user_can_view_order(!empty($_REQUEST['order_id']) ? $_REQUEST['order_id'] : 0)) {
            learn_press_404_page();
        }
        global $post;
        $post->post_content = '[learn_press_confirm_order]';
    } elseif (($page_id = learn_press_get_page_id('become_teacher_form')) && is_page($page_id)) {
        global $post;
        $post->post_content = '[learn_press_become_teacher_form]';
    } else {
        if (is_post_type_archive('lpr_course') || ($page_id = learn_press_get_page_id('courses')) && is_page($page_id) || is_tax('course_category')) {
            $file = 'archive-course.php';
            $find[] = $file;
            $find[] = 'learnpress/' . $file;
        } else {
            if (get_post_type() == 'lpr_course') {
                $file = 'single-course.php';
                $find[] = $file;
                $find[] = 'learnpress/' . $file;
            } else {
                if (get_post_type() == 'lpr_quiz') {
                    $file = 'single-quiz.php';
                    $find[] = $file;
                    $find[] = 'learnpress/' . $file;
                } else {
                    if (get_post_type() == 'lpr_assignment') {
                        $file = 'single-assignment.php';
                        $find[] = $file;
                        $find[] = 'learnpress/' . $file;
                    }
                }
            }
        }
    }
    if ($file) {
        $template = locate_template(array_unique($find));
        if (!$template) {
            $template = learn_press_plugin_path('templates/') . $file;
        }
    }
    return $template;
}