Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/classes/Students_List.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + /**
3 + * Student List page
4 + *
5 + * @package Tutor\Student
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\Backend_Page_Trait;
18 + use Tutor\Helpers\QueryHelper;
19 + use TutorPro\CourseBundle\CustomPosts\CourseBundle;
20 +
21 + /**
22 + * Manage student lists
23 + *
24 + * @since 1.0.0
25 + */
26 + class Students_List {
27 +
28 + /**
29 + * Page slug
30 + *
31 + * @since 2.0.0
32 + *
33 + * @var string
34 + */
35 + const STUDENTS_LIST_PAGE = 'tutor-students';
36 +
37 + /**
38 + * Trait for utilities
39 + *
40 + * @var $page_title
41 + */
42 + use Backend_Page_Trait;
43 +
44 + /**
45 + * Bulk Action
46 + *
47 + * @var $bulk_action
48 + */
49 + public $bulk_action = true;
50 +
51 + /**
52 + * Handle dependencies
53 + *
54 + * @since 2.0.0
55 + */
56 + public function __construct() {
57 + /**
58 + * Handle bulk action
59 + *
60 + * @since 2.0.0
61 + */
62 + add_action( 'wp_ajax_tutor_student_bulk_action', array( $this, 'student_bulk_action' ) );
63 + }
64 +
65 + /**
66 + * Page title fallback
67 + *
68 + * @since 3.5.0
69 + *
70 + * @param string $name Property name.
71 + *
72 + * @return string
73 + */
74 + public function __get( $name ) {
75 + if ( 'page_title' === $name ) {
76 + return esc_html__( 'Students', 'tutor' );
77 + }
78 + }
79 +
80 + /**
81 + * Prepare bulk actions that will show on dropdown options
82 + *
83 + * @since 2.0.0
84 + *
85 + * @return array
86 + */
87 + public function prpare_bulk_actions(): array {
88 + $actions = array(
89 + $this->bulk_action_default(),
90 + $this->bulk_action_delete(),
91 + );
92 + return $actions;
93 + }
94 +
95 +
96 + /**
97 + * Handle bulk action for student delete
98 + *
99 + * @since 2.0.0
100 + *
101 + * @return string wp_json response
102 + */
103 + public function student_bulk_action() {
104 + // check nonce.
105 + tutor_utils()->checking_nonce();
106 +
107 + // Check if user is privileged.
108 + if ( ! current_user_can( 'administrator' ) ) {
109 + wp_send_json_error( tutor_utils()->error_message() );
110 + }
111 +
112 + $action = Input::post( 'bulk-action', '' );
113 + $bulk_ids = Input::post( 'bulk-ids', array() );
114 + if ( 'delete' === $action ) {
115 + return true === self::delete_students( $bulk_ids ) ? wp_send_json_success() : wp_send_json_error();
116 + }
117 + return wp_send_json_error();
118 + }
119 +
120 + /**
121 + * Delete student
122 + *
123 + * @since v2.0.0
124 + *
125 + * @param string $student_ids ids comma separated value.
126 + *
127 + * @return bool
128 + */
129 + public static function delete_students( string $student_ids ): bool {
130 + global $wpdb;
131 + $student_ids = array_map( 'intval', explode( ',', $student_ids ) );
132 + foreach ( $student_ids as $student_id ) {
133 + $enrollments = QueryHelper::get_all(
134 + $wpdb->posts,
135 + array(
136 + 'post_author' => $student_id,
137 + 'post_type' => array(
138 + tutor()->enrollment_post_type,
139 + 'course-bundle',
140 + ),
141 + ),
142 + 'ID'
143 + );
144 +
145 + if ( is_array( $enrollments ) && count( $enrollments ) ) {
146 + delete_user_meta( $student_id, User::TUTOR_STUDENT_META );
147 + foreach ( $enrollments as $enrollment ) {
148 + $course_id = (int) $enrollment->post_parent;
149 + tutor_utils()->delete_enrollment_record( $student_id, $course_id );
150 + tutor_utils()->delete_course_progress( $course_id, $student_id );
151 + tutor_utils()->delete_student_course_comment( $student_id, $course_id );
152 + }
153 + }
154 + }
155 +
156 + return true;
157 + }
158 + }
159 +