PluginProbe ʕ •ᴥ•ʔ
Shortcoder — Create Shortcodes for Anything / 4.1.7
Shortcoder — Create Shortcodes for Anything v4.1.7
trunk 3.0 3.0.1 3.1 3.2 3.3 3.4 3.4.1 4.0 4.0.1 4.0.2 4.0.3 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2 4.3 4.4 4.5 4.6 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.1 5.2 5.2.1 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.4 5.5 5.6 5.7 5.8 6.0 6.1 6.2 6.3 6.3.1 6.3.2 6.4 6.5 6.5.1 6.5.2 6.5.3
shortcoder / admin / sc-admin.php
shortcoder / admin Last commit date
css 8 years ago images 8 years ago js 8 years ago sc-admin.php 8 years ago sc-insert.php 8 years ago
sc-admin.php
611 lines
1 <?php
2
3 class Shortcoder_Admin{
4
5 private static $pagehook = 'settings_page_shortcoder';
6
7 public static function init(){
8
9 // Add menu
10 add_action( 'admin_menu', array( __class__, 'add_menu' ) );
11
12 // Enqueue the scripts and styles
13 add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
14
15 // Register the action for admin ajax features
16 add_action( 'wp_ajax_sc_admin_ajax', array( __CLASS__, 'admin_ajax' ) );
17
18 // Register action links
19 add_filter( 'plugin_action_links_' . SC_BASE_NAME, array( __CLASS__, 'action_links' ) );
20
21 // Add Quick Tag button to the editor
22 add_action( 'admin_footer', array( __class__, 'add_qt_button' ) );
23
24 // Add TinyMCE button
25 add_action( 'admin_init', array( __class__, 'register_mce' ) );
26
27 }
28
29 public static function add_menu(){
30
31 add_options_page( 'Shortcoder', 'Shortcoder', 'manage_options', 'shortcoder', array( __class__, 'admin_page' ) );
32
33 }
34
35 public static function enqueue_scripts( $hook ){
36
37 if( $hook == self::$pagehook ){
38
39 wp_enqueue_style( 'sc-admin-css', SC_ADMIN_URL . '/css/style.css', array(), SC_VERSION );
40 wp_enqueue_style( 'sc-selectize', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/css/selectize.min.css', array(), SC_VERSION );
41
42 wp_enqueue_script( 'jquery' );
43 wp_enqueue_script( 'sc-admin-js', SC_ADMIN_URL . '/js/script.js', array( 'jquery' ), SC_VERSION );
44 wp_enqueue_script( 'sc-selectize', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/js/standalone/selectize.min.js', array( 'jquery' ), SC_VERSION );
45
46 }
47 }
48
49 public static function admin_page(){
50
51 echo '<div class="wrap">';
52 echo '<div class="head_wrap">';
53 echo '<h1 class="sc_title">Shortcoder <span class="title-count">' . SC_VERSION . '</span></h1>';
54 self::top_sharebar();
55 self::print_notice();
56 echo '</div>';
57
58 echo '<div id="content">';
59
60 $g = self::clean_get();
61
62 if( !isset( $g[ 'action' ] ) ){
63 $g[ 'action' ] = 'list';
64 }
65
66 if( $g[ 'action' ] == 'list' ){
67 self::list_shortcodes();
68 }
69
70 if( $g[ 'action' ] == 'edit' ){
71 self::edit_shortcode();
72 }
73
74 if( $g[ 'action' ] == 'new' ){
75 self::new_shortcode();
76 }
77
78 echo '</div>';
79
80 self::page_bottom();
81
82 echo '</div>';
83
84 }
85
86 public static function list_shortcodes(){
87
88 Shortcoder_Import::check_import();
89
90 $shortcodes = Shortcoder::list_all();
91 $g = self::clean_get();
92
93 echo '<h3 class="page_title">' . __( 'List of shortcodes created', 'shortcoder' ) . ' (' . count( $shortcodes ) . ')';
94 echo '<span class="sc_menu">';
95
96 echo '<button class="button sc_tags_filt_btn" tooltip="' . __( 'Filter by tags', 'shortcoder' ) . '"><span class="dashicons dashicons-tag sc_tags_filt_icon"></span>';
97 echo '<div class="sc_tags_filter_wrap"><select class="sc_tags_filter" multiple>';
98 $all_tags = Shortcoder::get_tags();
99 foreach($all_tags as $tag){
100 echo '<option value="' . $tag . '">' . $tag . '</option>';
101 }
102 echo '</select></div>';
103 echo '</button>';
104
105 echo '<span class="button search_btn" tooltip="' . __( 'Search shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-search"></span><input type="search" class="search_box" placeholder="Search ..."/></span>';
106
107 echo '<label for="import" class="button" tooltip="' . __( 'Import shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-download"></span></label>';
108
109 echo '<a href="' . self::get_link(array(
110 'action' => 'sc_export',
111 '_wpnonce' => wp_create_nonce( 'sc_export_data' )
112 ), 'admin-ajax.php' ) . '" class="button" tooltip="' . __( 'Export shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-upload"></span></a>';
113
114
115 echo '<button class="button sort_btn" tooltip="' . __( 'Sort list', 'shortcoder' ) . '"><span class="dashicons dashicons-menu"></span> <span class="dashicons dashicons-arrow-down-alt sort_icon"></span></button>';
116
117 echo '<a href="' . self::get_link(array( 'action' => 'new' )) . '" class="button button-primary sc_new_btn"><span class="dashicons dashicons-plus"></span> ' . __( 'Create a new shortcode', 'shortcoder' ) . '</a>';
118
119 echo '</span>';
120 echo '</h3>';
121
122 echo '<ul class="sc_list" data-empty="' . __( 'No shortcodes are created. Go ahead create one !', 'shortcoder' ) . '">';
123 foreach( $shortcodes as $name => $data ){
124
125 $data = wp_parse_args( $data, Shortcoder::defaults() );
126
127 $link = self::get_link(array(
128 'action' => 'edit',
129 'id' => base64_encode( $name )
130 ));
131
132 $delete_link = self::get_link(array(
133 'action' => 'sc_admin_ajax',
134 'do' => 'delete',
135 'id' => base64_encode( $name ),
136 '_wpnonce' => wp_create_nonce( 'sc_delete_nonce' )
137 ), 'admin-ajax.php' );
138
139 $disabled_text = ( $data[ 'disabled' ] == '1' ) ? '<small class="disabled_text">' . __( 'Temporarily disabled', 'shortcoder' ) . '</small>' : '';
140
141 $selected_tags = implode( ',', $data[ 'tags' ] );
142
143 echo '<li data-name="' . esc_attr( $name ) . '" data-tags="' . esc_attr( $selected_tags ) . '">';
144 echo '<a href="' . $link . '" class="sc_link" title="' . __( 'Edit shortcode', 'shortcoder' ) . '">' . esc_attr( $name ) . $disabled_text . '</a>';
145
146 echo '<span class="sc_controls">';
147
148 if( isset( $data[ 'tags' ] ) && !empty( $data[ 'tags' ] ) && is_array( $data[ 'tags' ] ) ){
149 echo '<ul class="sc_tags_list">';
150 foreach( $data['tags'] as $tag ){
151 echo '<li data-tag-id="' . $tag . '">' . $tag . '</li>';
152 }
153 echo '</ul>';
154 }
155
156 echo '<a href="#" class="sc_copy" title="' . __( 'Copy shortcode', 'shortcoder' ) . '"><span class="dashicons dashicons-editor-code"></span></a>';
157 echo '<a href="' . $delete_link . '" class="sc_delete" title="' . __( 'Delete', 'shortcoder' ) . '"><span class="dashicons dashicons-trash"></span></a>';
158 echo '</span>';
159
160 echo '<input type="text" value="' . self::get_shortcode( $name ) . '" class="sc_copy_box" readonly="readonly" title="' . __( 'Copy shortcode', 'shortcoder' ) . '" />';
161
162 echo '</li>';
163
164 }
165 echo '</ul>';
166
167 Shortcoder_Import::import_form();
168
169 }
170
171 public static function new_shortcode(){
172 self::edit_shortcode( 'new' );
173 }
174
175 public static function edit_shortcode( $action = 'edit' ){
176
177 self::save_shortcode();
178
179 $shortcodes = Shortcoder::list_all();
180 $g = self::clean_get();
181
182 $page_title = __( 'New shortcode', 'shortcoder' );
183 $action_btn = __( 'Create shortcode', 'shortcoder' );
184 $sc_name = '';
185 $values = array();
186
187 if( $action == 'edit' ){
188
189 $page_title = __( 'Edit shortcode', 'shortcoder' );
190 $action_btn = __( 'Save settings', 'shortcoder' );
191
192 if( !isset( $g[ 'id' ] ) ){
193 echo '<p align="center">' . __( 'No shortcode ID provided !' ) . '</p>';
194 return false;
195 }
196
197 $sc_name = base64_decode( $g[ 'id' ] );
198
199 if( !array_key_exists( $sc_name, $shortcodes ) ){
200 echo '<p align="center">' . __( 'Invalid shortcode ID or no such shortcode with name [' . esc_attr( $sc_name ) . '] exists !' ) . '</p>';
201 return false;
202 }
203
204 $values = $shortcodes[ $sc_name ];
205
206 }
207
208 $values = wp_parse_args( $values, Shortcoder::defaults() );
209
210 echo '<h3 class="page_title">' . $page_title;
211 echo '<div class="sc_menu">';
212 echo '<a href="' . self::get_link() . '" class="button sc_back_btn"><span class="dashicons dashicons-arrow-left-alt2"></span> ' . __( 'Back', 'shortcoder' ) . '</a>';
213 echo '</div>';
214 echo '</h3>';
215
216 echo '<form method="post" id="sc_edit_form">';
217
218 echo '<div class="sc_section">';
219 echo '<label for="sc_name">' . __( 'Name', 'shortcoder' ) . '</label>';
220 echo '<div class="sc_name_wrap"><input type="text" id="sc_name" name="sc_name" value="' . esc_attr( $sc_name ) . '" class="widefat" required="required" ' . ( ( $action == 'edit' ) ? 'readonly="readonly"' : 'placeholder="' . __( 'Enter a name for the shortcode, case sensitive', 'shortcoder' ) . '"' ) . ' pattern="[a-zA-z0-9 \-]+" />';
221 echo ( $action == 'edit' ) ? '<div class="copy_shortcode">Your shortcode is - <strong contenteditable>' . self::get_shortcode( $sc_name ) . '</strong></div>' : '';
222 echo ( $action != 'edit' ) ? '<div class="copy_shortcode">' . __( 'Allowed characters A to Z, a to z, 0 to 9, hyphens, underscores and space', 'shortcoder' ) . '</div>' : '';
223 echo '</div></div>';
224
225 echo '<div class="sc_section">';
226 echo '<label for="sc_content">' . __( 'Shortcode content', 'shortcoder' ) . '<span class="dashicons dashicons-info sc_note_btn" title="Open note"></span></label>';
227
228 echo '<p class="sc_note">' . __( 'Note: You can use any HTML, JavaScript, CSS as shortcode content. Shortcoder does not manipulate the shortcode content. What you provide above is what you get as output. Please verify the shortcode content for any syntax or JavaScript errors.', 'shortcoder' ) . '</p>';
229
230 $editors_list = array(
231 'text' => 'Text editor',
232 'visual' => 'Visual editor',
233 'code' => 'Code editor'
234 );
235 $editor = ( isset( $g[ 'editor' ] ) && array_key_exists( $g[ 'editor' ], $editors_list ) ) ? $g[ 'editor' ] : $values[ 'editor' ];
236
237 echo '<span class="sc_editor_list sc_editor_icon_' . $editor . '"><select name="sc_editor" class="sc_editor button">';
238 foreach( $editors_list as $id => $name ){
239 echo '<option value="' . $id . '" ' . selected( $editor, $id ) . '>' . $name . '</option>';
240 }
241 echo '</select></span>';
242
243 self::load_editor( $editor, $values[ 'content' ] );
244
245 echo '</div>';
246
247 $device_options = array(
248 'all' => __( 'On both desktop and mobile devices', 'shortcoder' ),
249 'mobile_only' => __( 'On mobile devices alone', 'shortcoder' ),
250 'desktop_only' => __( 'On desktops alone', 'shortcoder' )
251 );
252
253 echo '<div class="sc_settings">';
254
255 echo '<div class="sc_section">';
256 echo '<h4>' . __( 'Settings', 'shortcoder' ) . '</h4>';
257 echo '<label><input type="checkbox" name="sc_disable" value="1" ' . checked( $values[ 'disabled' ], '1', false ) . '/> ' . __( 'Temporarily disable this shortcode', 'shortcoder' ) . '</label>';
258 echo '<label><input type="checkbox" name="sc_hide_admin" value="1" ' . checked( $values[ 'hide_admin' ], '1', false ) . '/> ' . __( 'Disable this Shortcode for administrators' ) . '</label>';
259 echo '</div>';
260
261 echo '<div class="sc_section">';
262 echo '<h4>' . __( 'Visibility', 'shortcoder' ) . '</h4>';
263 echo '<label>' . __( 'Show this shortcode', 'shortcoder' );
264 echo '<select name="sc_devices">';
265 foreach( $device_options as $id => $name ){
266 echo '<option value="' . $id . '" ' . selected( $values[ 'devices' ], $id ) . '>' . $name . '</option>';
267 }
268 echo '</select></label>';
269 echo '</div>';
270
271 echo '<div class="sc_section">';
272 echo '<h4>' . __( 'Tags', 'shortcoder' ) . '</h4>';
273 echo '<select name="sc_tags[]" class="sc_edit_tags" multiple>';
274 $all_tags = Shortcoder::get_tags();
275 foreach($all_tags as $tag){
276 echo '<option value="' . $tag . '" ' . ( in_array( $tag, $values[ 'tags' ] ) ? 'selected="selected"' : '' ) . '>' . $tag . '</option>';
277 }
278 echo '</select>';
279 echo '</div>';
280
281 echo '</div>';
282
283 wp_nonce_field( 'sc_edit_nonce' );
284
285 echo '<footer class="page_footer">';
286 echo '<button class="button button-primary sc_save">' . $action_btn . '</button>';
287
288 if( $action == 'edit' ){
289 $delete_link = self::get_link(array(
290 'action' => 'sc_admin_ajax',
291 'do' => 'delete',
292 'id' => base64_encode( $sc_name ),
293 '_wpnonce' => wp_create_nonce( 'sc_delete_nonce' )
294 ), 'admin-ajax.php' );
295 echo '<a href="' . $delete_link . '" class="button sc_delete_ep" title="' . __( 'Delete', 'shortcoder' ) . '"><span class="dashicons dashicons-trash"></span></a>';
296 }
297
298 echo '</footer>';
299
300 echo '</form>';
301
302 $sc_wp_params = Shortcoder::wp_params_list();
303
304 echo '<ul class="params_wrap">';
305
306 foreach( $sc_wp_params as $group => $group_info ){
307 echo '<li>' . $group_info[ 'name' ];
308 echo '<ul class="wp_params">';
309 foreach( $group_info[ 'params' ] as $param_id => $param_name ){
310 echo '<li data-id="' . $param_id . '">' . $param_name . '</li>';
311 }
312 echo '</ul></li>';
313 }
314
315 echo '<li>' . __( 'Custom parameter', 'shortcoder' ) . '<ul>';
316 echo '<li class="cp_form"><h4>' . __( 'Enter custom parameter name', 'shortcoder' ) . '</h4>';
317 echo '<input type="text" class="cp_box" pattern="[a-zA-Z0-9]+"/> <button class="button cp_btn">' . __( 'Insert parameter', 'shortcoder' ) . '</button><p class="cp_info"><small>' . __( 'Only alphabets and numbers allowed. Custom parameters are case insensitive', 'shortcoder' ) . '</small></p></li>';
318 echo '</ul></li>';
319 echo '</ul>';
320 }
321
322 public static function save_shortcode(){
323
324 if( $_POST && check_admin_referer( 'sc_edit_nonce' ) ){
325
326 $p = wp_parse_args( self::clean_post(), array(
327 'sc_name' => '',
328 'sc_content' => '',
329 'sc_disable' => 0,
330 'sc_hide_admin' => 0,
331 'sc_devices' => 'all',
332 'sc_editor' => 'text',
333 'sc_tags' => array()
334 ));
335
336 if( !trim( $p[ 'sc_name' ] ) ){
337 self::print_notice( 0 );
338 return false;
339 }
340
341 $shortcodes = Shortcoder::list_all();
342 $name = self::clean_name( $p[ 'sc_name' ] );
343 $values = array(
344 'content' => $p[ 'sc_content' ],
345 'disabled' => $p[ 'sc_disable' ],
346 'hide_admin' => $p[ 'sc_hide_admin' ],
347 'devices' => $p[ 'sc_devices' ],
348 'editor' => $p[ 'sc_editor' ],
349 'tags' => $p[ 'sc_tags' ]
350 );
351
352 if( array_key_exists( $name, $shortcodes ) ){
353 self::print_notice( 2 );
354 }else{
355 self::print_notice( 1 );
356 }
357
358 $shortcodes[ $name ] = $values;
359
360 update_option( 'shortcoder_data', $shortcodes );
361
362 /*
363 wp_safe_redirect( self::get_link( array(
364 'action' => 'edit',
365 'name' => urlencode( $name ),
366 'msg' => ( $todo == 'new' ) ? 1 : 2
367 )));*/
368 }
369
370 }
371
372 public static function delete_shortcode( $name ){
373
374 $shortcodes = Shortcoder::list_all();
375
376 if( array_key_exists( $name, $shortcodes ) ){
377 unset( $shortcodes[ $name ] );
378 update_option( 'shortcoder_data', $shortcodes );
379 return true;
380 }else{
381 return false;
382 }
383
384 }
385
386 public static function get_link( $params = array(), $page = 'options-general.php' ){
387
388 $params[ 'page' ] = 'shortcoder';
389 return add_query_arg( $params, admin_url( $page ) );
390
391 }
392
393 public static function get_shortcode( $name = '' ){
394 return esc_attr( '[sc name="' . $name . '"]' );
395 }
396
397 public static function admin_ajax(){
398
399 $g = self::clean_get();
400
401 if( $g[ 'do' ] == 'delete' && isset( $g[ 'id' ] ) && check_admin_referer( 'sc_delete_nonce' ) ){
402 $sc_name = base64_decode( $g[ 'id' ] );
403 if( self::delete_shortcode( $sc_name ) ){
404 echo 'DELETED';
405 }else{
406 echo 'FAILED';
407 }
408 }
409
410 if( $g[ 'do' ] == 'insert_shortcode' ){
411 include_once( 'sc-insert.php' );
412 }
413
414 die(0);
415 }
416
417 public static function add_qt_button(){
418
419 $screen = get_current_screen();
420 if( self::$pagehook == $screen->id )
421 return;
422
423 echo '
424 <script>
425 window.onload = function(){
426 if( typeof QTags === "function" ){
427 QTags.addButton( "QT_sc_insert", "Shortcoder", sc_show_insert );
428 }
429 }
430 function sc_show_insert(){
431 tb_show( "Insert a Shortcode", "' . admin_url( 'admin-ajax.php?action=sc_admin_ajax&do=insert_shortcode&TB_iframe=true' ) . '" );
432 }
433 </script>';
434 }
435
436 public static function register_mce(){
437 add_filter( 'mce_buttons', array( __class__, 'register_mce_button' ) );
438 add_filter( 'mce_external_plugins', array( __class__, 'register_mce_js' ) );
439 }
440
441 public static function register_mce_button( $buttons ){
442
443 if( self::is_sc_admin() )
444 return $buttons;
445
446 array_push( $buttons, 'separator', 'shortcoder' );
447 return $buttons;
448
449 }
450
451 public static function register_mce_js( $plugins ){
452
453 if( self::is_sc_admin() )
454 return $plugins;
455
456 $plugins[ 'shortcoder' ] = SC_ADMIN_URL . '/js/tinymce/editor_plugin.js';
457 return $plugins;
458
459 }
460
461 public static function load_editor( $type, $value ){
462
463 if( $type == 'code' ){
464 self::load_codemirror_editor( $value );
465 }else{
466 wp_editor( $value, 'sc_content', array( 'wpautop'=> false, 'textarea_rows'=> 15, 'tinymce' => ( $type == 'visual' ) ) );
467 }
468
469 }
470
471 public static function load_codemirror_editor( $value ){
472 echo '<link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/codemirror.min.css" rel="stylesheet">';
473 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/codemirror.min.js"></script>';
474 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/mode/htmlmixed/htmlmixed.min.js"></script>';
475 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/mode/css/css.min.js"></script>';
476 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/mode/xml/xml.min.js"></script>';
477 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/mode/javascript/javascript.min.js"></script>';
478 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.37.0/addon/selection/active-line.min.js"></script>';
479
480 echo '<div class="sc_cm_menu"></div>';
481 echo '<textarea name="sc_content" id="sc_content">' . esc_textarea( $value ) . '</textarea>';
482
483 echo '<script>var sc_cm_editor = true;</script>';
484 }
485
486 public static function page_bottom(){
487
488 echo '<div class="coffee_box">
489 <div class="coffee_amt_wrap">
490 <p><select class="coffee_amt">
491 <option value="2">$2</option>
492 <option value="3">$3</option>
493 <option value="4">$4</option>
494 <option value="5" selected="selected">$5</option>
495 <option value="6">$6</option>
496 <option value="7">$7</option>
497 <option value="8">$8</option>
498 <option value="9">$9</option>
499 <option value="10">$10</option>
500 <option value="11">$11</option>
501 <option value="12">$12</option>
502 <option value="">Custom</option>
503 </select></p>
504 <a class="button button-primary buy_coffee_btn" href="https://www.paypal.me/vaakash/5" data-link="https://www.paypal.me/vaakash/" target="_blank">Buy me a coffee !</a>
505 </div>
506 <h2>Buy me a coffee !</h2>
507 <p>Thank you for using Shortcoder. If you found the plugin useful buy me a coffee ! Your donation will motivate and make me happy for all the efforts. You can donate via PayPal.</p>';
508 echo '</div>';
509
510 echo '<p class="credits_box"><img src="' . SC_ADMIN_URL . '/images/aw.png" /> Created by <a href="https://goo.gl/aHKnsM" target="_blank">Aakash Chakravarthy</a> - Follow me on <a href="https://twitter.com/vaakash" target="_blank">Twitter</a>, <a href="https://fb.com/aakashweb" target="_blank">Facebook</a>, <a href="https://www.linkedin.com/in/vaakash/" target="_blank">LinkedIn</a>. Check out <a href="https://goo.gl/OAxx4l" target="_blank">my other works</a>.
511
512 <a href="https://goo.gl/ltvnIE" class="rate_link" target="_blank">Rate <span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span> if you like Shortcoder</a>
513
514 </p>';
515
516 }
517
518 public static function top_sharebar(){
519 echo '
520 <div class="top_sharebar">
521
522 <a href="https://goo.gl/r8Qr7Y" class="help_link" target="_blank" title="Help"><span class="dashicons dashicons-editor-help"></span></a>
523 <a href="https://goo.gl/URfxp2" class="help_link" target="_blank" title="Report issue"><span class="dashicons dashicons-flag"></span></a>
524
525 <a class="share_btn rate_btn" href="https://goo.gl/ltvnIE" target="_blank" title="Please rate 5 stars if you like Shortcoder"><span class="dashicons dashicons-star-filled"></span> Rate 5 stars</a>
526 <a class="share_btn twitter" href="https://twitter.com/intent/tweet?ref_src=twsrc%5Etfw&related=vaakash&text=Check%20out%20Shortcoder,%20a%20%23wordpress%20plugin%20to%20create%20shortcodes%20for%20HTML,%20JavaScript%20snippets%20easily&tw_p=tweetbutton&url=https%3A%2F%2Fwww.aakashweb.com%2Fwordpress-plugins%2Fshortcoder%2F&via=vaakash" target="_blank"><span class="dashicons dashicons-twitter"></span> Tweet about Shortcoder</a>
527
528 </div>';
529 }
530
531 public static function action_links( $links ){
532 array_unshift( $links, '<a href="https://goo.gl/qMF3iE" target="_blank">Donate</a>' );
533 array_unshift( $links, '<a href="'. esc_url( admin_url( 'options-general.php?page=shortcoder' ) ) .'">⚙️ Settings</a>' );
534 return $links;
535 }
536
537 public static function print_notice( $id = '' ){
538
539 $g = self::clean_get();
540 $type = 'success';
541 $msg = '';
542
543 if( $id == '' ){
544 if( !isset( $g[ 'msg' ] ) ){
545 return false;
546 }
547 $id = $g[ 'msg' ];
548 }
549
550 if( $id == 0 ){
551 $msg = __( 'Shortcode name is empty. Cannot save settings !', 'shortcoder' );
552 $type = 'error';
553 }
554
555 if( $id == 1 ){
556 $msg = __( 'Shortcode created successfully', 'shortcoder' );
557 }
558
559 if( $id == 2 ){
560 $msg = __( 'Shortcode updated successfully', 'shortcoder' );
561 }
562
563 if( $id == 3 ){
564 $msg = __( 'Shortcode deleted successfully', 'shortcoder' );
565 }
566
567 if( $msg != '' ){
568 echo '<div class="notice notice-' . $type . ' is-dismissible"><p>' . $msg . '</p></div>';
569 }
570 }
571
572 public static function clean_name( $name = '' ){
573
574 return trim( preg_replace('/[^0-9a-zA-Z\- _]/', '', $name ) );
575
576 }
577
578 public static function clean_get(){
579
580 foreach( $_GET as $k=>$v ){
581 $_GET[$k] = sanitize_text_field( $v );
582 }
583
584 return $_GET;
585 }
586
587 public static function clean_post(){
588
589 return stripslashes_deep( $_POST );
590
591 }
592
593 public static function is_sc_admin(){
594
595 if( !function_exists( 'get_current_screen' ) )
596 return false;
597
598 $screen = get_current_screen();
599 if( self::$pagehook == $screen->id ){
600 return true;
601 }else{
602 return false;
603 }
604
605 }
606
607 }
608
609 Shortcoder_Admin::init();
610
611 ?>