PluginProbe
WPGlobus / trunk
WPGlobus vtrunk
3.0.5 3.0.4 trunk 2.1.15 2.10.10 2.12.2 2.2.35 2.3.12 2.4.17 2.5.23 2.6.8 2.7.14 2.8.11 3.0.0 3.0.1 3.0.2 3.0.3
wpglobus / includes / admin / class-wpglobus-language-edit-request.php

class-wpglobus-language-edit-request.php in WPGlobus trunk, at includes/admin/class-wpglobus-language-edit-request.php

271 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * WPGlobus / Admin / Language Edit / Request
4 * plugins/wpglobus/includes/admin/class-wpglobus-language-edit-request.php
5 *
6 * @package WPGlobus\Admin
7 * @since 1.9.7.1
8 */
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit; // Exit if accessed directly
12 }
13
14 /**
15 * Class WPGlobus_Language_Edit_Request
16 */
17 class WPGlobus_Language_Edit_Request {
18
19 const NONCE_ACTION = 'wpglobus-language-edit';
20
21 const ACTION_NONE = '';
22
23 const ACTION_EDIT = 'edit';
24
25 const ACTION_DELETE = 'delete';
26
27 const ACTION_ADD = 'add';
28
29 const ACTION_DONE = 'done';
30
31 /**
32 * GET['action']
33 *
34 * @var string
35 */
36 protected $action = self::ACTION_NONE;
37
38 /**
39 * GET['lang']
40 *
41 * @var string
42 */
43 protected $lang = '';
44
45 /**
46 * POST['submit']
47 *
48 * @var bool
49 */
50 protected $is_submit = false;
51
52 /**
53 * POST['delete']
54 *
55 * @var bool
56 */
57 protected $is_delete = false;
58
59
60 /**
61 * POST['wpglobus_language_code']
62 *
63 * @var string
64 */
65 protected $wpglobus_language_code = '';
66
67 /**
68 * POST['wpglobus_flags']
69 *
70 * @var string
71 */
72 protected $wpglobus_flags = '';
73
74 /**
75 * POST['wpglobus_language_name']
76 *
77 * @var string
78 */
79 protected $wpglobus_language_name = '';
80
81 /**
82 * POST['wpglobus_en_language_name']
83 *
84 * @var string
85 */
86 protected $wpglobus_en_language_name = '';
87
88 /**
89 * POST['wpglobus_locale']
90 *
91 * @var string
92 */
93 protected $wpglobus_locale = '';
94
95 /**
96 * WPGlobus_Language_Edit_Request constructor.
97 */
98 public function __construct() {
99 $this->parse_request();
100 }
101
102 /**
103 * Parse GET and POST.
104 */
105 protected function parse_request() {
106
107 /**
108 * The "Add Language" submenu is not hidden anymore, to avoid a WP warning.
109 * If we come here through that menu, and there is no nonce,
110 * let's redirect to the Language Table tab.
111 *
112 * @since 3.0.0
113 */
114 if ( empty( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), self::NONCE_ACTION ) ) {
115 $url = admin_url( 'admin.php' ) . '?page=' . WPGlobus::OPTIONS_PAGE_SLUG . '&tab=language-table';
116 wp_safe_redirect( $url );
117 exit();
118 }
119
120 if ( isset( $_GET['action'] ) && is_string( $_GET['action'] ) ) { // WPCS: input var ok, sanitization ok.
121 $action = sanitize_text_field( wp_unslash( $_GET['action'] ) ); // Input var okay.
122 if ( in_array( $action, array(
123 self::ACTION_ADD,
124 self::ACTION_EDIT,
125 self::ACTION_DELETE,
126 self::ACTION_DONE,
127 ), true ) ) {
128 $this->action = $action;
129 } else {
130 $this->action = self::ACTION_NONE;
131 }
132 }
133
134 if ( isset( $_GET['lang'] ) && is_string( $_GET['lang'] ) ) { // WPCS: input var ok, sanitization ok.
135 $this->lang = sanitize_text_field( wp_unslash( $_GET['lang'] ) ); // Input var okay.
136 }
137
138 if ( isset( $_POST['submit'] ) ) { // Input var okay.
139 $this->is_submit = true;
140 }
141
142 if ( isset( $_POST['delete'] ) ) { // Input var okay.
143 $this->is_delete = true;
144 }
145
146 foreach (
147 array(
148 'wpglobus_language_code',
149 'wpglobus_flags',
150 'wpglobus_language_name',
151 'wpglobus_en_language_name',
152 'wpglobus_locale',
153 ) as $var_name
154 ) {
155 if ( isset( $_POST[ $var_name ] ) && is_string( $_POST[ $var_name ] ) ) { // WPCS: input var ok, sanitization ok.
156 $this->$var_name = sanitize_text_field( wp_unslash( $_POST[ $var_name ] ) ); // Input var okay.
157 }
158 }
159 }
160
161 /**
162 * Getter.
163 *
164 * @return string
165 */
166 public function get_action() {
167 return $this->action;
168 }
169
170 /**
171 * Getter.
172 *
173 * @return string
174 */
175 public function get_lang() {
176 return $this->lang;
177 }
178
179 /**
180 * Getter.
181 *
182 * @return bool
183 */
184 public function is_submit() {
185 return $this->is_submit;
186 }
187
188 /**
189 * Getter.
190 *
191 * @return bool
192 */
193 public function is_delete() {
194 return $this->is_delete;
195 }
196
197 /**
198 * Getter.
199 *
200 * @return string
201 */
202 public function get_wpglobus_language_code() {
203 return $this->wpglobus_language_code;
204 }
205
206 /**
207 * Getter.
208 *
209 * @return string
210 */
211 public function get_wpglobus_flags() {
212 return $this->wpglobus_flags;
213 }
214
215 /**
216 * Getter.
217 *
218 * @return string
219 */
220 public function get_wpglobus_language_name() {
221 return $this->wpglobus_language_name;
222 }
223
224 /**
225 * Getter.
226 *
227 * @return string
228 */
229 public function get_wpglobus_en_language_name() {
230 return $this->wpglobus_en_language_name;
231 }
232
233 /**
234 * Getter.
235 *
236 * @return string
237 */
238 public function get_wpglobus_locale() {
239 return $this->wpglobus_locale;
240 }
241
242 public static function url_language_add() {
243 $url = add_query_arg( array(
244 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
245 'action' => self::ACTION_ADD,
246 ), admin_url( 'admin.php' ) );
247
248 return wp_nonce_url( $url, self::NONCE_ACTION );
249 }
250
251 public static function url_language_edit( $language_code ) {
252 $url = add_query_arg( array(
253 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
254 'lang' => $language_code,
255 'action' => self::ACTION_EDIT,
256 ), admin_url( 'admin.php' ) );
257
258 return wp_nonce_url( $url, self::NONCE_ACTION );
259 }
260
261 public static function url_language_delete( $language_code ) {
262 $url = add_query_arg( array(
263 'page' => WPGlobus::LANGUAGE_EDIT_PAGE,
264 'lang' => $language_code,
265 'action' => self::ACTION_DELETE,
266 ), admin_url( 'admin.php' ) );
267
268 return wp_nonce_url( $url, self::NONCE_ACTION );
269 }
270 }
271