PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.6.4
Tutor LMS – eLearning and online course solution v3.6.4
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
182 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('get_user_cart_item_count' === $request_method) {
83 $cart = new CartController();
84 $cart_items = $cart->get_cart_items();
85 $count = $cart_items['courses']['total_count'];
86 wp_send_json_success($count);
87 }
88
89 if ( 'complete_course' === $request_method ) {
90 tutor_utils()->checking_nonce();
91 $course_id = Input::post( 'course_id' );
92 $user_id = get_current_user_id();
93 if ( ! $user_id ) {
94 wp_send_json_error( 'Please Sign-In' );
95 }
96 CourseModel::mark_course_as_completed( $course_id, $user_id );
97
98 wp_send_json_success( true );
99 }
100
101 if ( 'add_qna' === $request_method ) {
102 tutor_utils()->checking_nonce();
103 $course_id = Input::post( 'course_id' );
104 $comment_parent_id = Input::post( 'comment_parent_id' );
105 $content = Input::post( 'content' );
106
107 $user = wp_get_current_user();
108 $date = gmdate( 'Y-m-d H:i:s', tutor_time() );
109
110 $collection_data = isset($_REQUEST['collection_data']) ? json_decode(wp_unslash($_REQUEST['collection_data']), true) : null; //phpcs:ignore
111
112 if ( ! $content ) {
113 wp_send_json_error( 'Invalid request' );
114 }
115
116 $data = apply_filters(
117 'tutor_qna_insert_data',
118 array(
119 'comment_post_ID' => $course_id,
120 'comment_author' => $user->user_login,
121 'comment_date' => $date,
122 'comment_date_gmt' => get_gmt_from_date( $date ),
123 'comment_content' => $content,
124 'comment_approved' => 'approved',
125 'comment_agent' => 'TutorLMSPlugin',
126 'comment_type' => 'tutor_q_and_a',
127 'comment_parent' => $comment_parent_id,
128 'user_id' => $user->ID,
129 )
130 );
131
132 global $wpdb;
133
134 $response = $wpdb->insert( $wpdb->comments, $data );
135
136 if ( false === $response ) {
137 wp_send_json_error( 'Request failed!' );
138 }
139
140 $thread = $this->get_comment( $wpdb->insert_id );
141
142 // comment-item.// -qna-reply.
143 $new_element_name = 0 === $comment_parent_id ? 'comment-item' : TDE_APP_PREFIX . '-qna-reply';
144
145 $new_element = Preview::generateQnAElement( $thread, $new_element_name, $collection_data );
146
147 wp_send_json_success(
148 array(
149 'html' => $new_element,
150 'inserted_comment_id' => $wpdb->insert_id,
151 )
152 );
153 }
154
155 wp_send_json_error( 'Invalid request' );
156 }
157
158 /**
159 * Get comment
160 *
161 * @param int $id comment id.
162 * @return object
163 * @since 1.0.0
164 */
165 private function get_comment( $id ) {
166 $comment = (object) (array) get_comment( $id );
167
168 if ( $comment instanceof stdClass ) {
169 $author_posts_page_link = $comment->comment_author_url;
170
171 if ( ! $author_posts_page_link ) {
172 $author_posts_page_link = \get_author_posts_url( $comment->user_id );
173 }
174
175 $comment->author_profile_picture = get_avatar_url( $comment->user_id );
176 $comment->author_posts_page_link = $author_posts_page_link;
177 }
178
179 return $comment;
180 }
181 }
182