Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/classes/Students_List.php
Keine Baseline-Datei – Diff nur gegen leer.
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
+