PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.6.1
Tutor LMS – eLearning and online course solution v3.6.1
4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / includes / droip / backend / Ajax.php
tutor / includes / droip / backend Last commit date
ElementGenerator 1 year ago Ajax.php 1 year ago Backend.php 1 year ago Editor.php 1 year ago Frontend.php 1 year ago Helper.php 1 year ago Hooks.php 1 year ago Iframe.php 1 year ago Pages.php 1 year ago VisibilityCondition.php 1 year ago
Ajax.php
174 lines
1 <?php
2 /**
3 * Preview script for html markup generator
4 *
5 * @package tutor-droip-elements
6 */
7
8 namespace TutorLMSDroip;
9
10 use Droip\HelperFunctions;
11 use stdClass;
12 use TutorLMSDroip\ElementGenerator\Preview;
13 use TUTOR\Input;
14 use Tutor\Models\CourseModel;
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit; // Exit if accessed directly.
18 }
19
20 /**
21 * Class Ajax
22 * This class is used to define all ajax functions.
23 *
24 * @package TutorLMSDroip
25 * @since 1.0.0
26 */
27 class Ajax {
28
29
30 /**
31 * Class constructor
32 */
33 public function __construct() {
34 add_action( 'wp_ajax_tutor_handle_api_calls', array( $this, 'tutor_handle_api_calls' ) );
35 }
36
37 /**
38 * Handle api calls
39 *
40 * @since 1.0.0
41 */
42 public function tutor_handle_api_calls() {
43 $request_method = Input::post( 'method' );
44
45 if ( 'generate_html' === $request_method ) {
46 tutor_utils()->checking_nonce();
47
48 $course_id = Input::post( 'course_id' );
49 $droip_data = isset( $_REQUEST['droip_data'] ) ? wp_unslash( $_REQUEST['droip_data'] ) : null; //phpcs:ignore
50 $droip_data = json_decode( $droip_data, true );
51
52 $blocks = $droip_data['blocks'];
53 $styles = $droip_data['styles'];
54 $root = Input::sanitize( $droip_data['root'] );
55
56 $params = array(
57 'blocks' => $blocks,
58 'style_blocks' => $styles,
59 'root' => $root,
60 'get_variable' => false,
61 'get_fonts' => false,
62 'options' => array( 'post' => get_post( $course_id ) ),
63 );
64
65 $collection_wrapper_html_string = HelperFunctions::get_html_using_preview_script( $params );
66 wp_send_json_success( $collection_wrapper_html_string );
67 }
68 if ( 'enroll_course' === $request_method ) {
69 tutor_utils()->checking_nonce();
70 $course_id = Input::post( 'course_id' );
71 $res = tutor_utils()->do_enroll( $course_id );
72 wp_send_json_success( $res );
73 }
74 if ( 'add_to_cart_course' === $request_method ) {
75 tutor_utils()->checking_nonce();
76 $course_id = Input::post( 'course_id' );
77 $res = tutor_add_to_cart( $course_id );
78 wp_send_json_success( $res );
79 }
80
81 if ( 'complete_course' === $request_method ) {
82 tutor_utils()->checking_nonce();
83 $course_id = Input::post( 'course_id' );
84 $user_id = get_current_user_id();
85 if ( ! $user_id ) {
86 wp_send_json_error( 'Please Sign-In' );
87 }
88 CourseModel::mark_course_as_completed( $course_id, $user_id );
89
90 wp_send_json_success( true );
91 }
92
93 if ( 'add_qna' === $request_method ) {
94 tutor_utils()->checking_nonce();
95 $course_id = Input::post( 'course_id' );
96 $comment_parent_id = Input::post( 'comment_parent_id' );
97 $content = Input::post( 'content' );
98
99 $user = wp_get_current_user();
100 $date = gmdate( 'Y-m-d H:i:s', tutor_time() );
101
102 $collection_data = isset($_REQUEST['collection_data']) ? json_decode(wp_unslash($_REQUEST['collection_data']), true) : null; //phpcs:ignore
103
104 if ( ! $content ) {
105 wp_send_json_error( 'Invalid request' );
106 }
107
108 $data = apply_filters(
109 'tutor_qna_insert_data',
110 array(
111 'comment_post_ID' => $course_id,
112 'comment_author' => $user->user_login,
113 'comment_date' => $date,
114 'comment_date_gmt' => get_gmt_from_date( $date ),
115 'comment_content' => $content,
116 'comment_approved' => 'approved',
117 'comment_agent' => 'TutorLMSPlugin',
118 'comment_type' => 'tutor_q_and_a',
119 'comment_parent' => $comment_parent_id,
120 'user_id' => $user->ID,
121 )
122 );
123
124 global $wpdb;
125
126 $response = $wpdb->insert( $wpdb->comments, $data );
127
128 if ( false === $response ) {
129 wp_send_json_error( 'Request failed!' );
130 }
131
132 $thread = $this->get_comment( $wpdb->insert_id );
133
134 // comment-item.// -qna-reply.
135 $new_element_name = 0 === $comment_parent_id ? 'comment-item' : TDE_APP_PREFIX . '-qna-reply';
136
137 $new_element = Preview::generateQnAElement( $thread, $new_element_name, $collection_data );
138
139 wp_send_json_success(
140 array(
141 'html' => $new_element,
142 'inserted_comment_id' => $wpdb->insert_id,
143 )
144 );
145 }
146
147 wp_send_json_error( 'Invalid request' );
148 }
149
150 /**
151 * Get comment
152 *
153 * @param int $id comment id.
154 * @return object
155 * @since 1.0.0
156 */
157 private function get_comment( $id ) {
158 $comment = (object) (array) get_comment( $id );
159
160 if ( $comment instanceof stdClass ) {
161 $author_posts_page_link = $comment->comment_author_url;
162
163 if ( ! $author_posts_page_link ) {
164 $author_posts_page_link = \get_author_posts_url( $comment->user_id );
165 }
166
167 $comment->author_profile_picture = get_avatar_url( $comment->user_id );
168 $comment->author_posts_page_link = $author_posts_page_link;
169 }
170
171 return $comment;
172 }
173 }
174