PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.6
Tutor LMS – eLearning and online course solution v3.9.6
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 5 months ago Ajax.php 5 months ago Backend.php 1 year ago Editor.php 1 year ago Frontend.php 1 year ago Helper.php 9 months ago Hooks.php 5 months ago Iframe.php 1 year ago Pages.php 9 months ago VisibilityCondition.php 5 months ago
Ajax.php
192 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 add_action( 'wp_ajax_nopriv_tutor_handle_api_calls', array( $this, 'tutor_handle_api_calls' ) );
36 }
37
38 /**
39 * Handle api calls
40 *
41 * @since 1.0.0
42 */
43 public function tutor_handle_api_calls() {
44 $request_method = Input::post( 'method' );
45 tutor_utils()->checking_nonce();
46 if ( 'generate_html' === $request_method ) {
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 $course_id = Input::post( 'course_id' );
70 $res = tutor_utils()->do_enroll( $course_id );
71 wp_send_json_success( $res );
72 }
73 if ( 'add_to_cart_course' === $request_method ) {
74 $course_id = Input::post( 'course_id' );
75 $res = tutor_add_to_cart( $course_id );
76
77 // check is user logged in or not
78 if (! is_user_logged_in() ) {
79 $res['redirect'] = true;
80 $res['data'] = wp_login_url( wp_get_referer() );
81 }
82
83 wp_send_json_success( $res );
84 }
85
86 if ('remove_from_cart_course' === $request_method) {
87 $res = tutor_remove_cart_item(Input::post('course_id'));
88 wp_send_json_success($res);
89 }
90
91 if('get_user_cart_item_count' === $request_method) {
92 $cart_items = tutor_get_cart_items();
93 $count = count($cart_items);
94 wp_send_json_success($count);
95 }
96
97 if ( 'complete_course' === $request_method ) {
98 $course_id = Input::post( 'course_id' );
99 $user_id = get_current_user_id();
100 if ( ! $user_id ) {
101 wp_send_json_error( 'Please Sign-In' );
102 }
103 CourseModel::mark_course_as_completed( $course_id, $user_id );
104
105 wp_send_json_success( true );
106 }
107
108 if ( 'add_qna' === $request_method ) {
109 $course_id = Input::post( 'course_id' );
110 $comment_parent_id = Input::post( 'comment_parent_id' );
111 $content = Input::post( 'content' );
112
113 $user = wp_get_current_user();
114 $date = gmdate( 'Y-m-d H:i:s', tutor_time() );
115
116 if ( ! $user->ID ) {
117 wp_send_json_error( 'Please Sign-In' );
118 }
119
120 $collection_data = isset($_REQUEST['collection_data']) ? json_decode(wp_unslash($_REQUEST['collection_data']), true) : null; //phpcs:ignore
121
122 if ( ! $content ) {
123 wp_send_json_error( 'Invalid request' );
124 }
125
126 $data = apply_filters(
127 'tutor_qna_insert_data',
128 array(
129 'comment_post_ID' => $course_id,
130 'comment_author' => $user->user_login,
131 'comment_date' => $date,
132 'comment_date_gmt' => get_gmt_from_date( $date ),
133 'comment_content' => $content,
134 'comment_approved' => 'approved',
135 'comment_agent' => 'TutorLMSPlugin',
136 'comment_type' => 'tutor_q_and_a',
137 'comment_parent' => $comment_parent_id,
138 'user_id' => $user->ID,
139 )
140 );
141
142 global $wpdb;
143
144 $response = $wpdb->insert( $wpdb->comments, $data );
145
146 if ( false === $response ) {
147 wp_send_json_error( 'Request failed!' );
148 }
149
150 $thread = $this->get_comment( $wpdb->insert_id );
151
152 // comment-item.// -qna-reply.
153 $new_element_name = 0 === $comment_parent_id ? 'comment-item' : TDE_APP_PREFIX . '-qna-reply';
154
155 $new_element = Preview::generateQnAElement( $thread, $new_element_name, $collection_data );
156
157 wp_send_json_success(
158 array(
159 'html' => $new_element,
160 'inserted_comment_id' => $wpdb->insert_id,
161 )
162 );
163 }
164
165 wp_send_json_error( 'Invalid request' );
166 }
167
168 /**
169 * Get comment
170 *
171 * @param int $id comment id.
172 * @return object
173 * @since 1.0.0
174 */
175 private function get_comment( $id ) {
176 $comment = (object) (array) get_comment( $id );
177
178 if ( $comment instanceof stdClass ) {
179 $author_posts_page_link = $comment->comment_author_url;
180
181 if ( ! $author_posts_page_link ) {
182 $author_posts_page_link = \get_author_posts_url( $comment->user_id );
183 }
184
185 $comment->author_profile_picture = get_avatar_url( $comment->user_id );
186 $comment->author_posts_page_link = $author_posts_page_link;
187 }
188
189 return $comment;
190 }
191 }
192