/** * Load the desired component, if a method is available for it. * @param string $component The component to potentially be loaded. * * @since 1.0.0 * @return void */ protected function load_component($instance) { global $current_user; $course_ids = array(); if ('activecourses' == esc_attr($instance['component'])) { $courses = Sensei_Utils::sensei_check_for_activity(array('user_id' => $current_user->ID, 'type' => 'sensei_course_status', 'status' => 'in-progress'), true); // Need to always return an array, even with only 1 item if (!is_array($courses)) { $courses = array($courses); } foreach ($courses as $course) { $course_ids[] = $course->comment_post_ID; } } elseif ('completedcourses' == esc_attr($instance['component'])) { $courses = Sensei_Utils::sensei_check_for_activity(array('user_id' => $current_user->ID, 'type' => 'sensei_course_status', 'status' => 'complete'), true); // Need to always return an array, even with only 1 item if (!is_array($courses)) { $courses = array($courses); } foreach ($courses as $course) { $course_ids[] = $course->comment_post_ID; } } // End If Statement $posts_array = array(); // course_query() is buggy, it doesn't honour the 1st arg if includes are provided, so instead slice the includes if (!empty($instance['limit']) && intval($instance['limit']) >= 1 && intval($instance['limit']) < count($course_ids)) { $course_ids = array_slice($course_ids, 0, intval($instance['limit'])); // This does mean the order by is effectively ignored } if (!empty($course_ids)) { $posts_array = Sensei()->course->course_query(intval($instance['limit']), esc_attr($instance['component']), $course_ids); } else { if ('activecourses' == esc_attr($instance['component']) || 'completedcourses' == esc_attr($instance['component'])) { $posts_array = array(); } else { $course_args = array('post_type' => 'course', 'orderby' => 'date', 'order' => 'DESC', 'post_status' => 'publish', 'posts_per_page' => $instance['limit']); $posts_array = get_posts($course_args); } } // End If Statement if (count($posts_array) > 0) { ?> <ul> <?php foreach ($posts_array as $post_item) { $post_id = absint($post_item->ID); $post_title = $post_item->post_title; $user_info = get_userdata(absint($post_item->post_author)); $author_link = get_author_posts_url(absint($post_item->post_author)); $author_display_name = $user_info->display_name; $author_id = $post_item->post_author; ?> <li class="fix"> <?php do_action('sensei_course_image', $post_id); ?> <a href="<?php echo esc_url(get_permalink($post_id)); ?> " title="<?php echo esc_attr($post_title); ?> "><?php echo $post_title; ?> </a> <br /> <?php if (isset(Sensei()->settings->settings['course_author']) && Sensei()->settings->settings['course_author']) { ?> <span class="course-author"><?php _e('by ', 'woothemes-sensei'); ?> <a href="<?php echo esc_url($author_link); ?> " title="<?php echo esc_attr($author_display_name); ?> "><?php echo esc_html($author_display_name); ?> </a></span> <br /> <?php } // End If Statement ?> <span class="course-lesson-count"><?php echo Sensei()->course->course_lesson_count($post_id) . ' ' . __('Lessons', 'woothemes-sensei'); ?> </span> <br /> <?php sensei_simple_course_price($post_id); ?> </li> <?php } // End For Loop ?> <?php if ('activecourses' == esc_attr($instance['component']) || 'completedcourses' == esc_attr($instance['component'])) { $my_account_page_id = intval(Sensei()->settings->settings['my_course_page']); echo '<li class="my-account fix"><a href="' . esc_url(get_permalink($my_account_page_id)) . '">' . __('My Courses', 'woothemes-sensei') . ' <span class="meta-nav"></span></a></li>'; } // End If Statement ?> </ul> <?php } else { // No posts returned. This means the user either has no active or no completed courses. if (isset($instance['component'])) { if ('featuredcourses' == $instance['component']) { _e('You have no featured courses.', 'woothemes-sensei'); } elseif ('activecourses' == $instance['component']) { _e('You have no active courses.', 'woothemes-sensei'); } elseif ('completedcourses' == $instance['component']) { _e('You have no completed courses.', 'woothemes-sensei'); } else { _e('You have no courses.', 'woothemes-sensei'); } } // end if compoenetn status instance } // End If Statement }
/** * Load the output. * @param array $instance. * @since 1.1.0 * @return void */ protected function load_component($instance) { global $woothemes_sensei; $posts_array = array(); $post_args = array('post_type' => 'course', 'numberposts' => intval($instance['limit']), 'orderby' => 'menu_order date', 'order' => 'ASC', 'post_status' => 'publish', 'suppress_filters' => 0); $post_args['tax_query'] = array(array('taxonomy' => 'course-category', 'field' => 'id', 'terms' => intval($instance['course_category']))); $posts_array = get_posts($post_args); if (count($posts_array) > 0) { ?> <ul> <?php foreach ($posts_array as $post_item) { $post_id = absint($post_item->ID); $post_title = $post_item->post_title; $user_info = get_userdata(absint($post_item->post_author)); $author_link = get_author_posts_url(absint($post_item->post_author)); $author_display_name = $user_info->display_name; $author_id = $post_item->post_author; ?> <li class="fix"> <?php do_action('sensei_course_image', $post_id); ?> <a href="<?php echo esc_url(get_permalink($post_id)); ?> " title="<?php echo esc_attr($post_title); ?> "><?php echo $post_title; ?> </a> <br /> <?php if (isset($woothemes_sensei->settings->settings['course_author']) && $woothemes_sensei->settings->settings['course_author']) { ?> <span class="course-author"><?php _e('by ', 'woothemes-sensei'); ?> <a href="<?php echo esc_url($author_link); ?> " title="<?php echo esc_attr($author_display_name); ?> "><?php echo esc_html($author_display_name); ?> </a></span> <br /> <?php } // End If Statement ?> <span class="course-lesson-count"><?php echo $woothemes_sensei->post_types->course->course_lesson_count($post_id) . ' ' . apply_filters('sensei_lessons_text', __('Lessons', 'woothemes-sensei')); ?> </span> <br /> <?php sensei_simple_course_price($post_id); ?> </li> <?php } // End For Loop ?> </ul> <?php } // End If Statement }
public function sensei_course_archive_meta() { global $woothemes_sensei, $post; // Meta data $post_id = get_the_ID(); $post_title = get_the_title(); $author_display_name = get_the_author(); $author_id = get_the_author_meta('ID'); $category_output = get_the_term_list($post_id, 'course-category', '', ', ', ''); $free_lesson_count = intval($woothemes_sensei->post_types->course->course_lesson_preview_count($post_id)); ?> <section class="entry"> <p class="sensei-course-meta"> <?php if (isset($woothemes_sensei->settings->settings['course_author']) && $woothemes_sensei->settings->settings['course_author']) { ?> <span class="course-author"><?php _e('by ', 'woothemes-sensei'); the_author_link(); ?> </span> <?php } // End If Statement ?> <span class="course-lesson-count"><?php echo $woothemes_sensei->post_types->course->course_lesson_count($post_id) . ' ' . apply_filters('sensei_lessons_text', __('Lessons', 'woothemes-sensei')); ?> </span> <?php if ('' != $category_output) { ?> <span class="course-category"><?php echo sprintf(__('in %s', 'woothemes-sensei'), $category_output); ?> </span> <?php } // End If Statement ?> <?php sensei_simple_course_price($post_id); ?> </p> <p class="course-excerpt"><?php echo apply_filters('get_the_excerpt', $post->post_excerpt); ?> </p> <?php if (0 < $free_lesson_count) { $free_lessons = sprintf(__('You can access %d of this course\'s lessons for free', 'woothemes-sensei'), $free_lesson_count); ?> <p class="sensei-free-lessons"><a href="<?php echo get_permalink($post_id); ?> "><?php _e('Preview this course', 'woothemes-sensei'); ?> </a> - <?php echo $free_lessons; ?> </p> <?php } ?> </section><?php }
/** * Print a single course markup * * @param $course_id */ public static function the_course($course_id) { // Get meta data $course = get_post($course_id); $user_info = get_userdata(absint($course->post_author)); $author_link = get_author_posts_url(absint($course->post_author)); $author_display_name = $user_info->display_name; $author_id = $course->post_author; $category_output = get_the_term_list($course_id, 'course-category', '', ', ', ''); $preview_lesson_count = intval(Sensei()->course->course_lesson_preview_count($course_id)); $is_user_taking_course = Sensei_Utils::user_started_course($course_id, get_current_user_id()); ?> <article class="<?php echo esc_attr(join(' ', get_post_class(array('course', 'post'), $course_id))); ?> "> <?php // so that legacy shortcodes work with the party plugins that wants to hook in do_action('sensei_course_content_before', $course->ID); ?> <div class="course-content"> <?php Sensei()->course->course_image($course_id); ?> <header> <h2><a href="<?php echo get_permalink($course_id); ?> " title="<?php echo $course->post_title; ?> "><?php echo $course->post_title; ?> </a></h2> </header> <section class="entry"> <p class="sensei-course-meta"> <?php if (isset(Sensei()->settings->settings['course_author']) && Sensei()->settings->settings['course_author']) { ?> <span class="course-author"><?php _e('by ', 'woothemes-sensei'); ?> <a href="<?php echo $author_link; ?> " title="<?php echo esc_attr($author_display_name); ?> "><?php echo esc_html($author_display_name); ?> </a></span> <?php } // End If Statement ?> <span class="course-lesson-count"> <?php echo Sensei()->course->course_lesson_count($course_id) . ' ' . __('Lessons', 'woothemes-sensei'); ?> </span> <?php if ('' != $category_output) { ?> <span class="course-category"><?php echo sprintf(__('in %s', 'woothemes-sensei'), $category_output); ?> </span> <?php } // End If Statement ?> <?php sensei_simple_course_price($course_id); ?> </p> <p class="course-excerpt"><?php echo $course->post_excerpt; ?> </p> <?php if (0 < $preview_lesson_count && !$is_user_taking_course) { $preview_lessons = sprintf(__('(%d preview lessons)', 'woothemes-sensei'), $preview_lesson_count); ?> <p class="sensei-free-lessons"> <a href="<?php echo get_permalink($course_id); ?> "><?php _e('Preview this course', 'woothemes-sensei'); ?> </a> - <?php echo $preview_lessons; ?> </p> <?php } ?> </section> </div> <?php // so that legacy shortcodes work with thir party plugins that wants to hook in do_action('sensei_course_content_after', $course->ID); ?> </article> <?php }
/** * Add course mata to the course meta hook * * @since 1.9.0 * @param WP_Post $course */ public function the_course_meta($course) { echo '<p class="sensei-course-meta">'; $category_output = get_the_term_list($course->ID, 'course-category', '', ', ', ''); $author_display_name = get_the_author_meta('display_name', $course->post_author); if (isset(Sensei()->settings->settings['course_author']) && Sensei()->settings->settings['course_author']) { ?> <span class="course-author"><?php _e('by ', 'woothemes-sensei'); ?> <a href="<?php esc_attr_e(get_author_posts_url($course->post_author)); ?> " title="<?php esc_attr_e($author_display_name); ?> "><?php esc_attr_e($author_display_name); ?> </a> </span> <?php } // End If Statement ?> <span class="course-lesson-count"><?php echo Sensei()->course->course_lesson_count($course->ID) . ' ' . apply_filters('sensei_lessons_text', __('Lessons', 'woothemes-sensei')); ?> </span> <?php if ('' != $category_output) { ?> <span class="course-category"><?php echo sprintf(__('in %s', 'woothemes-sensei'), $category_output); ?> </span> <?php } // End If Statement // number of completed lessons if (is_user_logged_in()) { $completed = count($this->get_completed_lesson_ids($course->ID, get_current_user_id())); $lesson_count = count($this->course_lessons($course->ID)); echo '<span class="course-lesson-progress">' . sprintf(__('%1$d of %2$d lessons completed', 'woothemes-sensei'), $completed, $lesson_count) . '</span>'; } sensei_simple_course_price($course->ID); echo '</p>'; }
echo $woothemes_sensei->post_types->course->course_lesson_count($post_id) . ' ' . apply_filters('sensei_lessons_text', __('Lessons', 'woothemes-sensei')); ?> </span> <?php if ('' != $category_output) { ?> <span class="course-category"><?php echo sprintf(__('in %s', 'woothemes-sensei'), $category_output); ?> </span> <?php } // End If Statement ?> <?php sensei_simple_course_price($post_id); ?> </p> <p class="course-excerpt"><?php echo sensei_get_excerpt($post); ?> </p> <?php if (0 < $preview_lesson_count && !$is_user_taking_course) { $preview_lessons = sprintf(__('(%d preview lessons)', 'woothemes-sensei'), $preview_lesson_count); ?> <p class="sensei-free-lessons"><a href="<?php echo get_permalink($post_id); ?> "><?php