PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.12
Tutor LMS – eLearning and online course solution v3.9.12
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 / kirki / backend / Ajax.php
tutor / includes / kirki / backend Last commit date
ElementGenerator 2 months ago Ajax.php 2 months ago Backend.php 2 months ago Editor.php 2 months ago Frontend.php 2 months ago Helper.php 2 months ago Hooks.php 2 months ago Iframe.php 2 months ago Pages.php 2 months ago VisibilityCondition.php 1 month ago
Ajax.php
192 lines
1 <?php
2 /**
3 * Preview script for html markup generator
4 *
5 * @package tutor-kirki-elements
6 */
7
8 namespace TutorLMSKirki;
9
10 use Kirki\HelperFunctions;
11 use stdClass;
12 use TutorLMSKirki\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 TutorLMSKirki
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 $kirki_data = isset( $_REQUEST['kirki_data'] ) ? wp_unslash( $_REQUEST['kirki_data'] ) : null; //phpcs:ignore
50 $kirki_data = json_decode( $kirki_data, true );
51
52 $blocks = $kirki_data['blocks'];
53 $styles = $kirki_data['styles'];
54 $root = Input::sanitize( $kirki_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