PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.1
Tutor LMS – eLearning and online course solution v3.7.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 11 months ago Ajax.php 11 months ago Backend.php 1 year ago Editor.php 1 year ago Frontend.php 1 year ago Helper.php 1 year ago Hooks.php 11 months ago Iframe.php 1 year ago Pages.php 11 months ago VisibilityCondition.php 1 year ago
Ajax.php
193 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 Tutor\Ecommerce\CartController;
13 use TutorLMSDroip\ElementGenerator\Preview;
14 use TUTOR\Input;
15 use Tutor\Models\CourseModel;
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit; // Exit if accessed directly.
19 }
20
21 /**
22 * Class Ajax
23 * This class is used to define all ajax functions.
24 *
25 * @package TutorLMSDroip
26 * @since 1.0.0
27 */
28 class Ajax {
29
30
31 /**
32 * Class constructor
33 */
34 public function __construct() {
35 add_action( 'wp_ajax_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
46 if ( 'generate_html' === $request_method ) {
47 tutor_utils()->checking_nonce();
48
49 $course_id = Input::post( 'course_id' );
50 $droip_data = isset( $_REQUEST['droip_data'] ) ? wp_unslash( $_REQUEST['droip_data'] ) : null; //phpcs:ignore
51 $droip_data = json_decode( $droip_data, true );
52
53 $blocks = $droip_data['blocks'];
54 $styles = $droip_data['styles'];
55 $root = Input::sanitize( $droip_data['root'] );
56
57 $params = array(
58 'blocks' => $blocks,
59 'style_blocks' => $styles,
60 'root' => $root,
61 'get_variable' => false,
62 'get_fonts' => false,
63 'options' => array( 'post' => get_post( $course_id ) ),
64 );
65
66 $collection_wrapper_html_string = HelperFunctions::get_html_using_preview_script( $params );
67 wp_send_json_success( $collection_wrapper_html_string );
68 }
69 if ( 'enroll_course' === $request_method ) {
70 tutor_utils()->checking_nonce();
71 $course_id = Input::post( 'course_id' );
72 $res = tutor_utils()->do_enroll( $course_id );
73 wp_send_json_success( $res );
74 }
75 if ( 'add_to_cart_course' === $request_method ) {
76 tutor_utils()->checking_nonce();
77 $course_id = Input::post( 'course_id' );
78 $res = tutor_add_to_cart( $course_id );
79 wp_send_json_success( $res );
80 }
81
82 if ('remove_from_cart_course' === $request_method) {
83 tutor_utils()->checking_nonce();
84 $cart = new CartController();
85 $user_id = get_current_user_id();
86 $course_id = Input::post('course_id');
87
88 $res = $cart->delete_course_from_cart($user_id, $course_id);
89
90 wp_send_json_success($res);
91 }
92
93 if('get_user_cart_item_count' === $request_method) {
94 $cart = new CartController();
95 $cart_items = $cart->get_cart_items();
96 $count = $cart_items['courses']['total_count'];
97 wp_send_json_success($count);
98 }
99
100 if ( 'complete_course' === $request_method ) {
101 tutor_utils()->checking_nonce();
102 $course_id = Input::post( 'course_id' );
103 $user_id = get_current_user_id();
104 if ( ! $user_id ) {
105 wp_send_json_error( 'Please Sign-In' );
106 }
107 CourseModel::mark_course_as_completed( $course_id, $user_id );
108
109 wp_send_json_success( true );
110 }
111
112 if ( 'add_qna' === $request_method ) {
113 tutor_utils()->checking_nonce();
114 $course_id = Input::post( 'course_id' );
115 $comment_parent_id = Input::post( 'comment_parent_id' );
116 $content = Input::post( 'content' );
117
118 $user = wp_get_current_user();
119 $date = gmdate( 'Y-m-d H:i:s', tutor_time() );
120
121 $collection_data = isset($_REQUEST['collection_data']) ? json_decode(wp_unslash($_REQUEST['collection_data']), true) : null; //phpcs:ignore
122
123 if ( ! $content ) {
124 wp_send_json_error( 'Invalid request' );
125 }
126
127 $data = apply_filters(
128 'tutor_qna_insert_data',
129 array(
130 'comment_post_ID' => $course_id,
131 'comment_author' => $user->user_login,
132 'comment_date' => $date,
133 'comment_date_gmt' => get_gmt_from_date( $date ),
134 'comment_content' => $content,
135 'comment_approved' => 'approved',
136 'comment_agent' => 'TutorLMSPlugin',
137 'comment_type' => 'tutor_q_and_a',
138 'comment_parent' => $comment_parent_id,
139 'user_id' => $user->ID,
140 )
141 );
142
143 global $wpdb;
144
145 $response = $wpdb->insert( $wpdb->comments, $data );
146
147 if ( false === $response ) {
148 wp_send_json_error( 'Request failed!' );
149 }
150
151 $thread = $this->get_comment( $wpdb->insert_id );
152
153 // comment-item.// -qna-reply.
154 $new_element_name = 0 === $comment_parent_id ? 'comment-item' : TDE_APP_PREFIX . '-qna-reply';
155
156 $new_element = Preview::generateQnAElement( $thread, $new_element_name, $collection_data );
157
158 wp_send_json_success(
159 array(
160 'html' => $new_element,
161 'inserted_comment_id' => $wpdb->insert_id,
162 )
163 );
164 }
165
166 wp_send_json_error( 'Invalid request' );
167 }
168
169 /**
170 * Get comment
171 *
172 * @param int $id comment id.
173 * @return object
174 * @since 1.0.0
175 */
176 private function get_comment( $id ) {
177 $comment = (object) (array) get_comment( $id );
178
179 if ( $comment instanceof stdClass ) {
180 $author_posts_page_link = $comment->comment_author_url;
181
182 if ( ! $author_posts_page_link ) {
183 $author_posts_page_link = \get_author_posts_url( $comment->user_id );
184 }
185
186 $comment->author_profile_picture = get_avatar_url( $comment->user_id );
187 $comment->author_posts_page_link = $author_posts_page_link;
188 }
189
190 return $comment;
191 }
192 }
193