%PDF- %PDF-
Direktori : /var/www/html/ceaa/wp-content/plugins/learnpress-course-review/inc/ |
Current File : /var/www/html/ceaa/wp-content/plugins/learnpress-course-review/inc/widgets.php |
<?php /** * Course review widget class. * * @author ThimPress * @package LearnPress/Course-Review/Classes * @version 3.0.2 */ // Prevent loading this file directly defined( 'ABSPATH' ) || exit; // Creating the widget class LearnPress_Course_Review_Widget extends WP_Widget { function __construct() { parent::__construct( 'lpr_course_review', __( 'Course Review', 'learnpress-course-review' ), array( 'description' => __( 'Display ratings and reviews of course', 'learnpress-course-review' ), ) ); add_action( 'wp_ajax_learnpress_reviews_search_course', array( __CLASS__, 'learnpress_reviews_search_course' ) ); } /** * */ public static function learnpress_reviews_search_course() { $return = array(); // you can use WP_Query, query_posts() or get_posts() here - it doesn't matter $search_results = new WP_Query( array( 's' => $_GET['q'], // the search query 'post_status' => 'publish', // if you don't want drafts to be returned 'ignore_sticky_posts' => 1, 'post_type' => LP_COURSE_CPT, 'posts_per_page' => 50 // how much to show at once ) ); if ( $search_results->have_posts() ) : while ( $search_results->have_posts() ) : $search_results->the_post(); // shorten the title a little $title = ( mb_strlen( $search_results->post->post_title ) > 50 ) ? mb_substr( $search_results->post->post_title, 0, 49 ) . '...' : $search_results->post->post_title; $return[] = array( $search_results->post->ID, $title ); // array( Post ID, Post Title ) endwhile; endif; echo json_encode( $return ); die; } /** * @param array $args * @param array $instance */ public function widget( $args, $instance ) { wp_enqueue_script( 'course-review', LP_ADDON_COURSE_REVIEW_URL . '/assets/js/course-review.js', array( 'jquery' ), '', true ); wp_enqueue_style( 'course-review', LP_ADDON_COURSE_REVIEW_URL . '/assets/css/course-review.css' ); $title = apply_filters( 'widget_title', $instance['title'] ); echo $args['before_widget']; if ( ! empty( $title ) ) { echo $args['before_title'] . $title . $args['after_title']; } $course_id = isset( $instance['course_id'] ) ? $instance['course_id'] : 0; $show_rate = isset( $instance['show_rate'] ) ? $instance['show_rate'] : 'no'; $show_review = isset( $instance['show_review'] ) ? $instance['show_review'] : 'no'; $display_amount = isset( $instance['display_amount'] ) ? $instance['display_amount'] : 5; if ( ! $course_id ) { $course_id = get_the_ID(); } ob_start(); if ( $show_rate == 'yes' ) { $course_rate = learn_press_get_course_rate( $course_id, false ); $rate_args = array( 'course_id' => $course_id , 'course_rate' => $course_rate ); learn_press_course_review_template( 'shortcode-course-rate.php', $rate_args ); } if ( $show_review == 'yes' ) { $course_review = learn_press_get_course_review( $course_id, 1, $display_amount ); learn_press_course_review_template( 'shortcode-course-review.php', array( 'course_id' => $course_id, 'course_review' => $course_review ) ); } $content = ob_get_contents(); ob_clean(); echo $content; echo $args['after_widget']; } public function form( $instance ) { $title = isset( $instance['title'] ) ? $instance['title'] : __( 'New title', 'wpb_widget_domain' ); $course_id = isset( $instance['course_id'] ) ? $instance['course_id'] : ''; $show_rate = isset( $instance['show_rate'] ) ? $instance['show_rate'] : 'no'; $show_review = isset( $instance['show_review'] ) ? $instance['show_review'] : 'no'; $display_amount = isset( $instance['display_amount'] ) ? $instance['display_amount'] : 5; if ( $course_id ) { $checked = "selected='selected'"; $review_title = get_the_title( $course_id ); $option = "<option value='{$course_id}' {$checked}>{$review_title}</option>"; } else { $option = "<option value='0'>" . __( 'Pick up 1 course', 'learnpress-course-review' ) . "</option>"; } // Reset Post Data wp_reset_postdata(); ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'learnpress-course-review' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"/> </p> <div class="rwmb-input"> <label for="<?php echo $this->get_field_id( 'course_id' ); ?>"><?php _e( 'Course Id:', 'learnpress-course-review' ); ?></label> <select class="rwmb-select " name="<?php echo $this->get_field_name( 'course_id' ); ?>" id="<?php echo $this->get_field_id( 'course_id' ); ?>"> <?php echo $option; ?> </select> </div> <p> <label for="<?php echo $this->get_field_id( 'show_rate' ); ?>"><?php _e( 'Show Rate:', 'learnpress-course-review' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'show_rate' ); ?>" name="<?php echo $this->get_field_name( 'show_rate' ); ?>" type="checkbox" value="yes" <?php checked( $show_rate, 'yes', true ); ?>/> </p> <p> <label for="<?php echo $this->get_field_id( 'show_review' ); ?>"><?php _e( 'Show Review:', 'learnpress-course-review' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'show_review' ); ?>" name="<?php echo $this->get_field_name( 'show_review' ); ?>" type="checkbox" value="yes" <?php checked( $show_review, 'yes', true ); ?> /> </p> <p> <label for="<?php echo $this->get_field_id( 'display_amount' ); ?>"><?php _e( 'Amount Display:', 'learnpress-course-review' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'display_amount' ); ?>" name="<?php echo $this->get_field_name( 'display_amount' ); ?>" type="number" value="<?php echo esc_attr( $display_amount ); ?>"/> </p> <script> ;(function ($) { function _ready() { $("#<?php echo $this->get_field_id( 'course_id' ); ?>").select2({ placeholder: 'Select a course', minimumInputLength: 3, ajax: { url: ajaxurl, dataType: 'json', quietMillis: 250, data: function (params) { return { q: params.term, // search term action: 'learnpress_reviews_search_course' }; }, processResults: function( data ) { var options = []; if ( data ) { // data is the array of arrays, and each of them contains ID and the Label of the option $.each( data, function( index, text ) { // do not forget that "index" is just auto incremented value options.push( { id: text[0], text: text[1] } ); }); } return { results: options }; }, cache: true }, language: { noResults: function (params) { return "There is no course to select."; } } }); } $(document).ready(_ready); })(jQuery); </script> <?php } // Updating widget replacing old instances with new public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; $instance['course_id'] = ( ! empty( $new_instance['course_id'] ) ) ? strip_tags( $new_instance['course_id'] ) : ''; $instance['show_rate'] = ( ! empty( $new_instance['show_rate'] ) ) ? strip_tags( $new_instance['show_rate'] ) : ''; $instance['show_review'] = ( ! empty( $new_instance['show_review'] ) ) ? strip_tags( $new_instance['show_review'] ) : ''; $instance['display_amount'] = ( ! empty( $new_instance['display_amount'] ) ) ? strip_tags( $new_instance['display_amount'] ) : 5; return $instance; } }