PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.1.5
Tutor LMS – eLearning and online course solution v2.1.5
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 / classes / Lesson.php
tutor / classes Last commit date
Addons.php 3 years ago Admin.php 3 years ago Ajax.php 3 years ago Announcements.php 3 years ago Assets.php 3 years ago Backend_Page_Trait.php 3 years ago Course.php 3 years ago Course_Embed.php 3 years ago Course_Filter.php 3 years ago Course_List.php 3 years ago Course_Settings_Tabs.php 3 years ago Course_Widget.php 3 years ago Custom_Validation.php 3 years ago Dashboard.php 3 years ago FormHandler.php 3 years ago Frontend.php 3 years ago Gutenberg.php 3 years ago Input.php 3 years ago Instructor.php 3 years ago Instructors_List.php 3 years ago Lesson.php 3 years ago Options_V2.php 3 years ago Post_types.php 3 years ago Private_Course_Access.php 3 years ago Q_and_A.php 3 years ago Question_Answers_List.php 3 years ago Quiz.php 3 years ago Quiz_Attempts_List.php 3 years ago RestAPI.php 3 years ago Reviews.php 3 years ago Rewrite_Rules.php 3 years ago Shortcode.php 3 years ago Student.php 3 years ago Students_List.php 3 years ago Taxonomies.php 3 years ago Template.php 3 years ago Theme_Compatibility.php 3 years ago Tools.php 3 years ago Tools_V2.php 3 years ago Tutor.php 3 years ago TutorEDD.php 3 years ago Tutor_Base.php 3 years ago Tutor_Setup.php 3 years ago Upgrader.php 3 years ago User.php 3 years ago Utils.php 3 years ago Video_Stream.php 3 years ago Withdraw.php 3 years ago Withdraw_Requests_List.php 3 years ago WooCommerce.php 3 years ago
Lesson.php
630 lines
1 <?php
2 /**
3 * Manage Lesson
4 *
5 * @package Tutor
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 1.0.0
9 */
10
11 namespace TUTOR;
12
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 use Tutor\Models\LessonModel;
18
19 /**
20 * Lesson class
21 *
22 * @since 1.0.0
23 */
24 class Lesson extends Tutor_Base {
25
26 /**
27 * Register hooks
28 *
29 * @since 1.0.0
30 *
31 * @return void
32 */
33 public function __construct() {
34 parent::__construct();
35
36 add_action( 'add_meta_boxes', array( $this, 'register_meta_box' ) );
37 add_action( 'save_post_' . $this->lesson_post_type, array( $this, 'save_lesson_meta' ) );
38
39 add_action( 'wp_ajax_tutor_load_edit_lesson_modal', array( $this, 'tutor_load_edit_lesson_modal' ) );
40 add_action( 'wp_ajax_tutor_modal_create_or_update_lesson', array( $this, 'tutor_modal_create_or_update_lesson' ) );
41 add_action( 'wp_ajax_tutor_delete_lesson_by_id', array( $this, 'tutor_delete_lesson_by_id' ) );
42
43 add_filter( 'get_sample_permalink', array( $this, 'change_lesson_permalink' ), 10, 2 );
44 add_action( 'admin_init', array( $this, 'flush_rewrite_rules' ) );
45
46 /**
47 * Add Column
48 */
49 add_filter( "manage_{$this->lesson_post_type}_posts_columns", array( $this, 'add_column' ), 10, 1 );
50 add_action( "manage_{$this->lesson_post_type}_posts_custom_column", array( $this, 'custom_lesson_column' ), 10, 2 );
51
52 /**
53 * Frontend Action
54 */
55 add_action( 'template_redirect', array( $this, 'mark_lesson_complete' ) );
56
57 add_action( 'wp_ajax_tutor_render_lesson_content', array( $this, 'tutor_render_lesson_content' ) );
58
59 /**
60 * For public course access
61 */
62 add_action( 'wp_ajax_nopriv_tutor_render_lesson_content', array( $this, 'tutor_render_lesson_content' ) );
63
64 /**
65 * Autoplay next video
66 *
67 * @since 1.4.9
68 */
69 add_action( 'wp_ajax_autoload_next_course_content', array( $this, 'autoload_next_course_content' ) );
70
71 /**
72 * Load next course item after click complete button
73 *
74 * @since 1.5.3
75 */
76 add_action( 'tutor_lesson_completed_after', array( $this, 'tutor_lesson_completed_after' ), 999 );
77
78 /**
79 * Lesson comment & reply ajax handler
80 *
81 * @since 2.0.0
82 */
83 add_action( 'wp_ajax_tutor_single_course_lesson_load_more', array( $this, 'tutor_single_course_lesson_load_more' ) );
84 add_action( 'wp_ajax_tutor_create_lesson_comment', array( $this, 'tutor_single_course_lesson_load_more' ) );
85 add_action( 'wp_ajax_tutor_reply_lesson_comment', array( $this, 'reply_lesson_comment' ) );
86 }
87
88 /**
89 * Manage load more & comment create
90 *
91 * @since 2.0.6
92 * @return void send wp json data
93 */
94 public function tutor_single_course_lesson_load_more() {
95 tutor_utils()->checking_nonce();
96 if ( 'tutor_create_lesson_comment' === Input::post( 'action' ) ) {
97 $comment_data = array(
98 'comment_content' => Input::post( 'comment', '', Input::TYPE_KSES_POST ),
99 'comment_post_ID' => Input::post( 'comment_post_ID', 0, Input::TYPE_INT ),
100 'comment_parent' => Input::post( 'comment_parent', 0, Input::TYPE_INT ),
101 );
102 self::create_comment( $comment_data );
103 }
104 ob_start();
105 tutor_load_template( 'single.lesson.comment' );
106 $html = ob_get_clean();
107
108 wp_send_json_success( array( 'html' => $html ) );
109 }
110
111 /**
112 * Registering metabox
113 *
114 * @since 1.0.0
115 * @return void
116 */
117 public function register_meta_box() {
118 $lesson_post_type = $this->lesson_post_type;
119
120 tutor_meta_box_wrapper( 'tutor-course-select', __( 'Select Course', 'tutor' ), array( $this, 'lesson_metabox' ), $lesson_post_type, 'advanced', 'default', 'tutor-admin-post-meta' );
121
122 tutor_meta_box_wrapper( 'tutor-lesson-videos', __( 'Lesson Video', 'tutor' ), array( $this, 'lesson_video_metabox' ), $lesson_post_type, 'advanced', 'default', 'tutor-admin-post-meta' );
123
124 tutor_meta_box_wrapper( 'tutor-lesson-attachments', __( 'Attachments', 'tutor' ), array( $this, 'lesson_attachments_metabox' ), $lesson_post_type, 'advanced', 'default', 'tutor-admin-post-meta' );
125 }
126
127 /**
128 * Lesson metabox
129 *
130 * @since 1.0.0
131 *
132 * @return void
133 */
134 public function lesson_metabox() {
135 include tutor()->path . 'views/metabox/lesson-metabox.php';
136 }
137
138 /**
139 * Video metabox
140 *
141 * @since 1.0.0
142 *
143 * @return void
144 */
145 public function lesson_video_metabox() {
146 include tutor()->path . 'views/metabox/video-metabox.php';
147 }
148
149 /**
150 * Attachment metabox
151 *
152 * @since 1.0.0
153 *
154 * @return void
155 */
156 public function lesson_attachments_metabox() {
157 include tutor()->path . 'views/metabox/lesson-attachments-metabox.php';
158 }
159
160 /**
161 * Saving lesson meta and assets
162 *
163 * @since 1.0.0
164 *
165 * @param integer $post_ID post ID.
166 * @return void
167 */
168 public function save_lesson_meta( $post_ID ) {
169 $video_source = sanitize_text_field( tutor_utils()->array_get( 'video.source', $_POST ) );
170 if ( '-1' === $video_source ) {
171 delete_post_meta( $post_ID, '_video' );
172 } elseif ( $video_source ) {
173
174 // Sanitize data through helper method.
175 $video = Input::sanitize_array(
176 $_POST['video'] ?? array(), //phpcs:ignore
177 array(
178 'source_external_url' => 'esc_url',
179 'source_embedded' => 'wp_kses_post',
180 ),
181 true
182 );
183 update_post_meta( $post_ID, '_video', $video );
184 }
185
186 // Attachments.
187 $attachments = array();
188 // phpcs:disable WordPress.Security.NonceVerification.Missing
189 if ( ! empty( $_POST['tutor_attachments'] ) ) {
190 //phpcs:ignore -- data sanitized through helper method.
191 $attachments = tutor_utils()->sanitize_array( wp_unslash( $_POST['tutor_attachments'] ) );
192 $attachments = array_unique( $attachments );
193 }
194
195 /**
196 * If !empty attachment then update meta else
197 * delete meta key to prevent empty data in db
198 *
199 * @since 1.8.9
200 */
201 if ( ! empty( $attachments ) ) {
202 update_post_meta( $post_ID, '_tutor_attachments', $attachments );
203 } else {
204 delete_post_meta( $post_ID, '_tutor_attachments' );
205 }
206
207 }
208
209 /**
210 * Load edit lesson modal
211 *
212 * @since 1.0.0
213 *
214 * @return void
215 */
216 public function tutor_load_edit_lesson_modal() {
217 tutor_utils()->checking_nonce();
218
219 $lesson_id = Input::post( 'lesson_id', 0, Input::TYPE_INT );
220 $topic_id = Input::post( 'topic_id', 0, Input::TYPE_INT );
221
222 if ( ! tutor_utils()->can_user_manage( 'topic', $topic_id ) ) {
223 wp_send_json_error( array( 'message' => __( 'Access Denied', 'tutor' ) ) );
224 }
225
226 /**
227 * If Lesson Not Exists, provide dummy
228 */
229 $post_arr = array(
230 'ID' => 0,
231 'post_content' => '',
232 'post_type' => $this->lesson_post_type,
233 'post_title' => __( 'Draft Lesson', 'tutor' ),
234 'post_status' => 'publish',
235 'post_author' => get_current_user_id(),
236 'post_parent' => $topic_id,
237 );
238
239 $post = $lesson_id ? get_post( $lesson_id ) : (object) $post_arr;
240
241 ob_start();
242 include tutor()->path . 'views/modal/edit-lesson.php';
243 $output = ob_get_clean();
244
245 wp_send_json_success( array( 'output' => $output ) );
246 }
247
248 /**
249 * Load lesson modal for create or update lesson
250 *
251 * @since 1.0.0
252 * @since 1.5.1 updated
253 *
254 * @return void
255 */
256 public function tutor_modal_create_or_update_lesson() {
257 tutor_utils()->checking_nonce();
258
259 global $wpdb;
260
261 $lesson_id = Input::post( 'lesson_id', 0, Input::TYPE_INT );
262 $topic_id = Input::post( 'current_topic_id', 0, Input::TYPE_INT );
263 $current_topic_id = $topic_id;
264 $course_id = tutor_utils()->get_course_id_by( 'topic', $topic_id );
265
266 $_lesson_thumbnail_id = Input::post( '_lesson_thumbnail_id', 0, Input::TYPE_INT );
267 $is_html_active = Input::post( 'is_html_active' ) === 'true' ? true : false;
268 $raw_html_content = Input::post( 'tutor_lesson_modal_editor', '', Input::TYPE_KSES_POST );
269 $tmce_content = Input::post( 'lesson_content', '', Input::TYPE_KSES_POST );
270
271 if ( ! tutor_utils()->can_user_manage( 'topic', $topic_id ) ) {
272 wp_send_json_error( array( 'message' => __( 'Access Denied', 'tutor' ) ) );
273 }
274
275 $title = Input::post( 'lesson_title' );
276 $lesson_content = $is_html_active ? $raw_html_content : $tmce_content;
277
278 $lesson_data = array(
279 'post_type' => $this->lesson_post_type,
280 'post_title' => $title,
281 'post_name' => sanitize_title( $title ),
282 'post_content' => $lesson_content,
283 'post_status' => 'publish',
284 'comment_status' => 'open',
285 'post_author' => get_current_user_id(),
286 'post_parent' => $topic_id,
287 );
288
289 if ( 0 == $lesson_id ) {
290
291 $lesson_data['menu_order'] = tutor_utils()->get_next_course_content_order_id( $topic_id );
292 $lesson_id = wp_insert_post( $lesson_data );
293
294 if ( $lesson_id ) {
295 do_action( 'tutor/lesson/created', $lesson_id );
296 } else {
297 wp_send_json_error( array( 'message' => __( 'Couldn\'t create lesson.', 'tutor' ) ) );
298 }
299 } else {
300 $lesson_data['ID'] = $lesson_id;
301
302 do_action( 'tutor/lesson_update/before', $lesson_id );
303 wp_update_post( $lesson_data );
304 if ( $_lesson_thumbnail_id ) {
305 update_post_meta( $lesson_id, '_thumbnail_id', $_lesson_thumbnail_id );
306 } else {
307 delete_post_meta( $lesson_id, '_thumbnail_id' );
308 }
309
310 do_action( 'tutor/lesson_update/after', $lesson_id );
311 }
312
313 ob_start();
314 include tutor()->path . 'views/metabox/course-contents.php';
315 $course_contents = ob_get_clean();
316
317 wp_send_json_success( array( 'course_contents' => $course_contents ) );
318 }
319
320 /**
321 * Delete Lesson from course builder by ID
322 *
323 * @since 1.0.0
324 *
325 * @return void
326 */
327 public function tutor_delete_lesson_by_id() {
328 tutor_utils()->checking_nonce();
329
330 $lesson_id = Input::post( 'lesson_id', 0, Input::TYPE_INT );
331
332 if ( ! tutor_utils()->can_user_manage( 'lesson', $lesson_id ) ) {
333 wp_send_json_error( array( 'message' => __( 'Access Denied', 'tutor' ) ) );
334 }
335
336 wp_delete_post( $lesson_id, true );
337 wp_send_json_success();
338 }
339
340
341 /**
342 * Changed the URI based
343 *
344 * @since 1.0.0
345 *
346 * @param string $uri URI.
347 * @param integer $lesson_id lesson ID.
348 *
349 * @return string
350 */
351 public function change_lesson_permalink( $uri, $lesson_id ) {
352 $post = get_post( $lesson_id );
353
354 if ( $post && $post->post_type === $this->lesson_post_type ) {
355 $uri_base = trailingslashit( site_url() );
356
357 $sample_course = 'sample-course';
358 $is_course = tutor_utils()->get_course_id_by( 'lesson', get_the_ID() );
359 if ( $is_course ) {
360 $course = get_post( $is_course );
361 if ( $course ) {
362 $sample_course = $course->post_name;
363 }
364 }
365
366 $new_course_base = $uri_base . "course/{$sample_course}/lesson/%pagename%/";
367 $uri[0] = $new_course_base;
368 }
369
370 return $uri;
371 }
372
373
374 /**
375 * Flash rewrite rules
376 *
377 * @since 1.0.0
378 * @return void
379 */
380 public function flush_rewrite_rules() {
381 $is_required_flush = get_option( 'required_rewrite_flush' );
382 if ( $is_required_flush ) {
383 flush_rewrite_rules();
384 delete_option( 'required_rewrite_flush' );
385 }
386 }
387
388 /**
389 * Add column to lesson HTML table
390 *
391 * @since 1.0.0
392 *
393 * @param array $columns columns.
394 * @return array
395 */
396 public function add_column( $columns ) {
397 $date_col = $columns['date'];
398 unset( $columns['date'] );
399 $columns['course'] = __( 'Course', 'tutor' );
400 $columns['date'] = $date_col;
401
402 return $columns;
403 }
404
405 /**
406 * Add custom lesson column.
407 *
408 * @since 1.0.0
409 *
410 * @param string $column column name.
411 * @param integer $post_id post ID.
412 *
413 * @return mixed
414 */
415 public function custom_lesson_column( $column, $post_id ) {
416 if ( 'course' === $column ) {
417
418 $course_id = tutor_utils()->get_course_id_by( 'lesson', $post_id );
419 if ( $course_id ) {
420 echo wp_kses(
421 '<a href="' . admin_url( 'post.php?post=' . $course_id . '&action=edit' ) . '">' . get_the_title( $course_id ) . '</a>',
422 array( 'a' => array( 'href' => true ) )
423 );
424 }
425 }
426 }
427
428 /**
429 * Mark lesson completed
430 *
431 * @since 1.0.0
432 *
433 * @return void
434 */
435 public function mark_lesson_complete() {
436 if ( 'tutor_complete_lesson' !== Input::post( 'tutor_action' ) ) {
437 return;
438 }
439 // Checking nonce.
440 tutor_utils()->checking_nonce();
441
442 $user_id = get_current_user_id();
443
444 // TODO: need to show view if not signed_in.
445 if ( ! $user_id ) {
446 die( esc_html__( 'Please Sign-In', 'tutor' ) );
447 }
448
449 $lesson_id = Input::post( 'lesson_id', 0, Input::TYPE_INT );
450
451 do_action( 'tutor_lesson_completed_before', $lesson_id );
452 /**
453 * Marking lesson at user meta, meta format, _tutor_completed_lesson_id_{id} and value = tutor_time();
454 */
455 LessonModel::mark_lesson_complete( $lesson_id );
456
457 do_action( 'tutor_lesson_completed_email_after', $lesson_id, $user_id );
458 do_action( 'tutor_lesson_completed_after', $lesson_id, $user_id );
459 }
460
461 /**
462 * Render the lesson content
463 *
464 * @since 1.0.0
465 *
466 * @return void
467 */
468 public function tutor_render_lesson_content() {
469 tutor_utils()->checking_nonce();
470
471 $lesson_id = Input::post( 'lesson_id', 0, Input::TYPE_INT );
472
473 $ancestors = get_post_ancestors( $lesson_id );
474 $course_id = ! empty( $ancestors ) ? array_pop( $ancestors ) : $lesson_id;
475
476 // Course must be public or current user must be enrolled to access this lesson.
477 if ( get_post_meta( $course_id, '_tutor_is_public_course', true ) !== 'yes' && ! tutor_utils()->is_enrolled( $course_id ) ) {
478
479 $is_admin = tutor_utils()->has_user_role( 'administrator' );
480 $allowed = $is_admin ? true : tutor_utils()->is_instructor_of_this_course( get_current_user_id(), $course_id );
481
482 if ( ! $allowed ) {
483 http_response_code( 400 );
484 exit;
485 }
486 }
487
488 ob_start();
489 global $post;
490
491 $post = get_post( $lesson_id ); //phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
492 setup_postdata( $post );
493 tutor_lesson_content();
494 wp_reset_postdata();
495
496 $html = ob_get_clean();
497
498 wp_send_json_success( array( 'html' => $html ) );
499 }
500
501 /**
502 * Load next course item automatically
503 *
504 * @since 1.4.9
505 *
506 * @return void
507 */
508 public function autoload_next_course_content() {
509 tutor_utils()->checking_nonce();
510
511 $post_id = Input::post( 'post_id', 0, Input::TYPE_INT );
512 $content_id = tutor_utils()->get_post_id( $post_id );
513 $contents = tutor_utils()->get_course_prev_next_contents_by_id( $content_id );
514
515 $autoload_course_content = (bool) get_tutor_option( 'autoload_next_course_content' );
516 $next_url = false;
517 if ( $autoload_course_content ) {
518 $next_url = get_the_permalink( $contents->next_id );
519 }
520 wp_send_json_success( array( 'next_url' => $next_url ) );
521 }
522
523 /**
524 * Load next course item after click complete button
525 *
526 * @since 1.5.3
527 *
528 * @param integer $content_id content ID.
529 * @return void
530 */
531 public function tutor_lesson_completed_after( $content_id ) {
532 $contents = tutor_utils()->get_course_prev_next_contents_by_id( $content_id );
533 $autoload_course_content = (bool) get_tutor_option( 'autoload_next_course_content' );
534 if ( $autoload_course_content ) {
535 wp_redirect( get_the_permalink( $contents->next_id ) );
536 } else {
537 wp_redirect( get_the_permalink( $content_id ) );
538 }
539 die();
540 }
541
542 /**
543 * Replay lesson comment
544 *
545 * @since 1.0.0
546 *
547 * @return void|null
548 */
549 public function reply_lesson_comment() {
550 tutor_utils()->checking_nonce();
551 $comment_data = array(
552 'comment_content' => Input::post( 'comment', '', Input::TYPE_KSES_POST ),
553 'comment_post_ID' => Input::post( 'comment_post_ID', 0, Input::TYPE_INT ),
554 'comment_parent' => Input::post( 'comment_parent', 0, Input::TYPE_INT ),
555 );
556 $comment_id = self::create_comment( $comment_data );
557 if ( false === $comment_id ) {
558 wp_send_json_error();
559 return;
560 }
561 $reply = get_comment( $comment_id );
562 ob_start();
563 ?>
564 <div class="tutor-comments-list tutor-child-comment tutor-mt-32" id="lesson-comment-<?php echo esc_attr( $reply->comment_ID ); ?>">
565 <div class="comment-avatar">
566 <img src="<?php echo esc_url( get_avatar_url( $reply->user_id ) ); ?>" alt="">
567 </div>
568 <div class="tutor-single-comment">
569 <div class="tutor-actual-comment tutor-mb-12">
570 <div class="tutor-comment-author">
571 <span class="tutor-fs-6 tutor-fw-bold">
572 <?php echo esc_html( $reply->comment_author ); ?>
573 </span>
574 <span class="tutor-fs-7 tutor-ml-0 tutor-ml-sm-10">
575 <?php echo esc_html( human_time_diff( strtotime( $reply->comment_date ), tutor_time() ) . __( ' ago', 'tutor' ) ); ?>
576 </span>
577 </div>
578 <div class="tutor-comment-text tutor-fs-6 tutor-mt-4">
579 <?php echo esc_html( $reply->comment_content ); ?>
580 </div>
581 </div>
582 </div>
583 </div>
584 <?php
585 $html = ob_get_clean();
586 wp_send_json_success( array( 'html' => $html ) );
587 }
588
589 /**
590 * Get comments
591 *
592 * @since 2.0.6
593 * @see Checkout arguments details: https://developer.wordpress.org/reference/classes/wp_comment_query/__construct/
594 *
595 * @param array $args arguments.
596 * @return mixed based on arguments
597 */
598 public static function get_comments( array $args ) {
599 $comments = get_comments( $args );
600 return $comments;
601 }
602
603 /**
604 * Create comment
605 *
606 * @since 1.0.0
607 *
608 * @param array $request request.
609 * @return mixed comment id on success, false on failure
610 */
611 public static function create_comment( array $request ) {
612 $current_user = wp_get_current_user();
613 $default_data = array(
614 'comment_content' => '',
615 'comment_post_ID' => '',
616 'comment_parent' => '',
617 'user_id' => $current_user->ID,
618 'comment_author' => $current_user->user_login,
619 'comment_author_email' => $current_user->user_email,
620 'comment_author_url' => $current_user->user_url,
621 'comment_agent' => 'Tutor',
622 );
623 $comment_data = wp_parse_args( $request, $default_data );
624 return wp_insert_comment( $comment_data );
625 }
626
627 }
628
629
630