%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/ceaa/wp-content/plugins/learnpress-course-review/inc/
Upload File :
Create Path :
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;
	}

}

Zerion Mini Shell 1.0