Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/classes/Gutenberg.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Manage Gutenberg
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
+
/**
18
+
* Gutenberg class
19
+
*
20
+
* @since 1.0.0
21
+
*/
22
+
class Gutenberg {
23
+
/**
24
+
* Constructor
25
+
*
26
+
* @since 1.0.0
27
+
* @return void|null
28
+
*/
29
+
public function __construct() {
30
+
if ( ! function_exists( 'register_block_type' ) ) {
31
+
return;
32
+
}
33
+
34
+
add_action( 'init', array( $this, 'register_blocks' ) );
35
+
add_filter( 'block_categories_all', array( $this, 'registering_new_block_category' ), 10, 2 );
36
+
add_action( 'wp_ajax_render_block_tutor', array( $this, 'render_block_tutor' ) );
37
+
add_filter( 'rest_user_query', array( $this, 'author_list_dropdown' ), 10, 2 );
38
+
}
39
+
40
+
/**
41
+
* Bind author list on gutenberg editor mode
42
+
*
43
+
* @since 2.1.0
44
+
*
45
+
* @param array $prepared_args arguments.
46
+
* @param WP_REST_Request $request WP REST request object.
47
+
*
48
+
* @return array
49
+
*/
50
+
public function author_list_dropdown( $prepared_args, $request ) {
51
+
$url = $request->get_header( 'referer' );
52
+
$parts = parse_url( $url );
53
+
if ( ! isset( $parts['query'] ) ) {
54
+
return $prepared_args;
55
+
}
56
+
57
+
parse_str( $parts['query'], $query );
58
+
$post_id = isset( $query['post'] ) ? (int) $query['post'] : 0;
59
+
60
+
if ( ! $post_id ) {
61
+
return $prepared_args;
62
+
}
63
+
64
+
$post = get_post( $post_id );
65
+
66
+
if ( tutor()->course_post_type === $post->post_type && tutor_utils()->get_option( 'enable_gutenberg_course_edit' ) === true ) {
67
+
// Modify the wp/v2/users endpoint request from gutenberg editor.
68
+
unset( $prepared_args['who'] );
69
+
$prepared_args['role__in'] = array( 'administrator', 'tutor_instructor' );
70
+
}
71
+
72
+
return $prepared_args;
73
+
}
74
+
75
+
/**
76
+
* Register blocks
77
+
*
78
+
* @since 1.0.0
79
+
* @return void
80
+
*/
81
+
public function register_blocks() {
82
+
global $pagenow;
83
+
if ( 'widgets.php' !== $pagenow ) {
84
+
wp_register_script(
85
+
'tutor-student-registration-block',
86
+
tutor()->url . 'assets/lib/gutenberg_blocks.js',
87
+
array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-components', 'wp-editor' ),
88
+
TUTOR_VERSION
89
+
);
90
+
}
91
+
92
+
register_block_type(
93
+
'tutor-gutenberg/student-registration',
94
+
array(
95
+
'editor_script' => 'tutor-student-registration-block',
96
+
'render_callback' => array( $this, 'render_block_student_registration' ),
97
+
)
98
+
);
99
+
100
+
register_block_type(
101
+
'tutor-gutenberg/instructor-registration',
102
+
array(
103
+
'editor_script' => 'tutor-student-registration-block',
104
+
'render_callback' => array( $this, 'render_block_tutor_instructor_registration_form' ),
105
+
)
106
+
);
107
+
108
+
// Check if WP version is equal to or greater than 5.9.
109
+
global $wp_version;
110
+
if ( version_compare( $wp_version, '5.9', '>=' ) && function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) {
111
+
wp_localize_script(
112
+
'tutor-student-registration-block',
113
+
'_tutor_gutenberg_block_data',
114
+
array(
115
+
'is_wp_version_5_9' => 'true',
116
+
)
117
+
);
118
+
} else {
119
+
wp_localize_script(
120
+
'tutor-student-registration-block',
121
+
'_tutor_gutenberg_block_data',
122
+
array(
123
+
'is_wp_version_5_9' => 'false',
124
+
)
125
+
);
126
+
}
127
+
}
128
+
129
+
/**
130
+
* Register new category block
131
+
*
132
+
* @since 1.0.0
133
+
*
134
+
* @param array $categories categories.
135
+
* @param object $post post object.
136
+
*
137
+
* @return array
138
+
*/
139
+
public function registering_new_block_category( $categories, $post ) {
140
+
return array_merge(
141
+
array(
142
+
array(
143
+
'slug' => 'tutor',
144
+
'title' => __( 'Tutor LMS', 'tutor' ),
145
+
),
146
+
),
147
+
$categories
148
+
);
149
+
}
150
+
151
+
/**
152
+
* Render student registration block
153
+
*
154
+
* @since 1.0.0
155
+
*
156
+
* @param array $args arguments.
157
+
* @return mixed
158
+
*/
159
+
public function render_block_student_registration( $args ) {
160
+
return do_shortcode( '[tutor_student_registration_form]' );
161
+
}
162
+
163
+
/**
164
+
* Render dashboard block
165
+
*
166
+
* @since 1.0.0
167
+
*
168
+
* @param array $args arguments.
169
+
* @return mixed
170
+
*/
171
+
public function render_block_tutor_dashboard( $args ) {
172
+
return do_shortcode( '[tutor_dashboard]' );
173
+
}
174
+
175
+
/**
176
+
* Render instructor registration block
177
+
*
178
+
* @since 1.0.0
179
+
*
180
+
* @param array $args arguments.
181
+
* @return mixed
182
+
*/
183
+
public function render_block_tutor_instructor_registration_form( $args ) {
184
+
return do_shortcode( '[tutor_instructor_registration_form]' );
185
+
}
186
+
187
+
/**
188
+
* Render tutor block for editor
189
+
*
190
+
* @since 1.0.0
191
+
* @return void
192
+
*/
193
+
public function render_block_tutor() {
194
+
tutor_utils()->checking_nonce();
195
+
196
+
$shortcode = Input::post( 'shortcode' );
197
+
198
+
$allowed_shortcode = array(
199
+
'tutor_instructor_registration_form',
200
+
'tutor_student_registration_form',
201
+
);
202
+
203
+
if ( ! in_array( $shortcode, $allowed_shortcode ) ) {
204
+
wp_send_json_error();
205
+
}
206
+
207
+
wp_send_json_success( do_shortcode( "[{$shortcode}]" ) );
208
+
}
209
+
210
+
}
211
+