Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/classes/Announcements.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Manage Announcements
4
+
*
5
+
* @package Tutor
6
+
* @author Themeum <support@themeum.com>
7
+
* @link https://themeum.com
8
+
* @since 2.0.0
9
+
*/
10
+
11
+
namespace TUTOR;
12
+
13
+
use Tutor\Helpers\QueryHelper;
14
+
15
+
if ( ! defined( 'ABSPATH' ) ) {
16
+
exit;
17
+
}
18
+
/**
19
+
* Announcements class
20
+
*
21
+
* @since 2.0.0
22
+
*/
23
+
class Announcements {
24
+
/**
25
+
* Trait for utilities
26
+
*
27
+
* @var $page_title
28
+
*/
29
+
30
+
use Backend_Page_Trait;
31
+
32
+
/**
33
+
* Bulk Action
34
+
*
35
+
* @var $bulk_action
36
+
*/
37
+
public $bulk_action = true;
38
+
39
+
/**
40
+
* Constructor
41
+
*
42
+
* @since 1.0.0
43
+
* @return void
44
+
*/
45
+
public function __construct() {
46
+
/**
47
+
* Handle bulk action
48
+
*
49
+
* @since 2.0.0
50
+
*/
51
+
add_action( 'wp_ajax_tutor_announcement_bulk_action', array( $this, 'announcement_bulk_action' ) );
52
+
}
53
+
54
+
/**
55
+
* Page title fallback
56
+
*
57
+
* @since 3.5.0
58
+
*
59
+
* @param string $name Property name.
60
+
*
61
+
* @return string
62
+
*/
63
+
public function __get( $name ) {
64
+
if ( 'page_title' === $name ) {
65
+
return esc_html__( 'Announcements', 'tutor' );
66
+
}
67
+
}
68
+
69
+
70
+
/**
71
+
* Prepare bulk actions that will show on dropdown options
72
+
*
73
+
* @since 2.0.0
74
+
* @return array
75
+
*/
76
+
public function prepare_bulk_actions(): array {
77
+
$actions = array(
78
+
$this->bulk_action_default(),
79
+
$this->bulk_action_delete(),
80
+
);
81
+
return $actions;
82
+
}
83
+
84
+
/**
85
+
* Handle bulk action for enrollment cancel | delete
86
+
*
87
+
* @since 2.0.0
88
+
* @return string JSON response.
89
+
*/
90
+
public function announcement_bulk_action() {
91
+
tutor_utils()->checking_nonce();
92
+
93
+
// Check if user is privileged.
94
+
if ( ! User::has_any_role( array( User::ADMIN, User::INSTRUCTOR ) ) ) {
95
+
wp_send_json_error( tutor_utils()->error_message() );
96
+
}
97
+
98
+
$action = Input::post( 'bulk-action', '' );
99
+
$bulk_ids = Input::post( 'bulk-ids', '' );
100
+
101
+
// prevent instructor to delete admin announcement.
102
+
$bulk_ids = array_filter(
103
+
explode( ',', $bulk_ids ),
104
+
function ( $announcement_id ) {
105
+
return tutor_utils()->can_user_manage( 'announcement', $announcement_id );
106
+
}
107
+
);
108
+
$update = self::delete_announcements( $action, implode( ',', $bulk_ids ) );
109
+
return true === $update ? wp_send_json_success() : wp_send_json_error();
110
+
}
111
+
112
+
/**
113
+
* Execute bulk action for enrolments ex: complete | cancel
114
+
*
115
+
* @since 2.0.0
116
+
*
117
+
* @param string $action hold action.
118
+
* @param string $bulk_ids comma seperated ids.
119
+
*
120
+
* @return bool
121
+
*/
122
+
public static function delete_announcements( $action, $bulk_ids ): bool {
123
+
$ids = array_map( 'intval', explode( ',', $bulk_ids ) );
124
+
$in_clause = QueryHelper::prepare_in_clause( $ids );
125
+
126
+
if ( 'delete' === $action ) {
127
+
global $wpdb;
128
+
$post_table = $wpdb->posts;
129
+
$delete = $wpdb->query(
130
+
$wpdb->prepare(
131
+
"DELETE FROM {$post_table} WHERE ID IN ($in_clause)" //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
132
+
)
133
+
);
134
+
return false === $delete ? false : true;
135
+
}
136
+
return false;
137
+
}
138
+
}
139
+