PluginProbe
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts / 2.2.9
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts v2.2.9
2.7.6 2.7.5 2.7.4 trunk 1.3 2.0.4 2.0.6 2.1.91 2.2.4 2.2.7 2.2.9 2.3.1 2.3.10 2.4.10 2.4.2 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.6.0 2.6.1 2.7.0 2.7.1 All 27 releases
insert-php / admin / boot.php

boot.php in Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts 2.2.9, at admin/boot.php

247 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin boot
4 *
5 * @author Alex Kovalev <alex.kovalevv@gmail.com>
6 * @copyright Alex Kovalev 05.06.2018
7 * @version 1.0
8 */
9
10 // Exit if accessed directly
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 /**
16 * Добавляет подсказку и кнопку в сообщение фатальной ошибки.
17 *
18 * С версии Wordpress 5.2, нам доступен специальный режим, пере�
19 вата php ошибок.
20 * Если пользователь например допустит синтаксическую ошибку при редактировании
21 * сниппета, то он вместо белого экрана (если php ошибки отключены на сервере)
22 * увидит сообщение от Wordpress сгенерированное классом WP_Fatal_Error_Handler.
23 *
24 * Мы решили добавить в это сообщение кнопку для пере�
25 ода в безопасный режим.
26 */
27 add_filter( 'wp_php_error_message', function ( $message ) {
28 $safe_mode_url = admin_url( 'edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE . '&wbcr-php-snippets-safe-mode' );
29 $safe_mode_button = '<div style="margin:20px 0;padding:20px; background:#ffe8e8;">' . __( 'If you see this message after saving the snippet to the Woody ad snippets plugin, please enable safe mode in the Woody plugin. Safe mode will allow you to continue working in the admin panel of your site and change the snippet in which you made a php error.', 'insert_php' ) . '</div>';
30 $safe_mode_button .= '<a href="' . $safe_mode_url . '" class="button">' . __( 'Enable safe mode in Woody ad snippets', 'insert_php' ) . '</a>';
31
32 return $message . $safe_mode_button;
33 } );
34
35 /**
36 * Инициализации метабоксов и страницы "о плагине".
37 *
38 * Этот �
39 ук реализует условную логику, при которой пользователь переодически будет
40 * видет страницу "О плагине", а конкретно при активации и обновлении плагина.
41 */
42 add_action( 'admin_init', function () {
43
44 $plugin = WINP_Plugin::app();
45
46 // Register metaboxes
47 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/base-options.php' );
48 WINP_Helper::register_factory_metaboxes( new WINP_BaseOptionsMetaBox( $plugin ), WINP_SNIPPETS_POST_TYPE, $plugin );
49
50 if ( ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) || ! WINP_Plugin::app()->premium->is_activate() ) {
51 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/info.php' );
52 WINP_Helper::register_factory_metaboxes( new WINP_InfoMetaBox( $plugin ), WINP_SNIPPETS_POST_TYPE, $plugin );
53 }
54
55 $snippet_type = WINP_Helper::get_snippet_type();
56
57 if ( $snippet_type !== WINP_SNIPPET_TYPE_PHP ) {
58 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/view-options.php' );
59 WINP_Helper::register_factory_metaboxes( new WINP_ViewOptionsMetaBox( $plugin ), WINP_SNIPPETS_POST_TYPE, $plugin );
60 }
61
62 do_action( 'wbcr/inp/boot/metaboxes/revisions', '' );
63
64 // If the user has updated the plugin or activated it for the first time,
65 // you need to show the page "What's new?"
66 if ( ! WINP_Plugin::app()->isNetworkAdmin() ) {
67 $about_page_viewed = WINP_Plugin::app()->request->get( 'wbcr_inp_about_page_viewed', null );
68 if ( is_null( $about_page_viewed ) ) {
69 if ( WINP_Helper::is_need_show_about_page() ) {
70 try {
71 $redirect_url = '';
72 if ( class_exists( 'Wbcr_FactoryPages421' ) ) {
73 $redirect_url = WINP_Plugin::app()->getPluginPageUrl( 'about', [ 'wbcr_inp_about_page_viewed' => 1 ] );
74 }
75 if ( $redirect_url ) {
76 wp_safe_redirect( $redirect_url );
77 die();
78 }
79 } catch( Exception $e ) {
80 }
81 }
82 } else {
83 if ( WINP_Helper::is_need_show_about_page() ) {
84 delete_option( $plugin->getOptionName( 'what_new_210' ) );
85 }
86 }
87 }
88 } );
89
90 function wbcr_inp_admin_revisions() {
91 $plugin = WINP_Plugin::app();
92
93 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/revisions.php' );
94 WINP_Helper::register_factory_metaboxes( new WINP_RevisionsMetaBox( $plugin ), WINP_SNIPPETS_POST_TYPE, $plugin );
95 }
96
97 add_action( 'wbcr/inp/boot/metaboxes/revisions', 'wbcr_inp_admin_revisions' );
98
99 // ---
100 // Editor
101 //
102
103 /**
104 * Enqueue scripts
105 */
106 function wbcr_inp_enqueue_scripts() {
107 global $pagenow;
108
109 $screen = get_current_screen();
110
111 if ( ( 'post-new.php' == $pagenow || 'post.php' == $pagenow ) && WINP_SNIPPETS_POST_TYPE == $screen->post_type ) {
112 wp_enqueue_script( 'wbcr-inp-admin-scripts', WINP_PLUGIN_URL . '/admin/assets/js/scripts.js', [
113 'jquery',
114 'jquery-ui-tooltip'
115 ], WINP_Plugin::app()->getPluginVersion() );
116 }
117 }
118
119 /**
120 * Asset scripts for the tinymce editor
121 *
122 * @param string $hook
123 */
124 function wbcr_inp_enqueue_tinymce_assets( $hook ) {
125 $pages = [
126 'post.php',
127 'post-new.php',
128 'widgets.php'
129 ];
130
131 if ( ! in_array( $hook, $pages ) || ! current_user_can( 'manage_options' ) ) {
132 return;
133 }
134
135 wp_enqueue_script( 'wbcr-inp-tinymce-button-widget', WINP_PLUGIN_URL . '/admin/assets/js/tinymce4.4.js', [ 'jquery' ], WINP_Plugin::app()->getPluginVersion(), true );
136 }
137
138 add_action( 'admin_enqueue_scripts', 'wbcr_inp_enqueue_tinymce_assets' );
139 add_action( 'admin_enqueue_scripts', 'wbcr_inp_enqueue_scripts' );
140
141 /**
142 * Adds js variable required for shortcodes.
143 *
144 * @since 1.1.0
145 * @see before_wp_tiny_mce
146 */
147 function wbcr_inp_tinymce_data( $hook ) {
148 if ( ! current_user_can( 'manage_options' ) ) {
149 return;
150 }
151
152 // styles for the plugin shorcodes
153 $shortcode_icon = WINP_PLUGIN_URL . '/admin/assets/img/shortcode-icon5.png';
154 $shortcode_title = __( 'Woody ad snippets', 'insert-php' );
155
156 $result = WINP_Helper::get_shortcode_data( true );
157 $shortcode_snippets_json = json_encode( $result );
158 ?>
159 <!-- <?php echo WINP_Plugin::app()->getPluginTitle() ?> for tinymce -->
160 <style>
161 i.wbcr-inp-shortcode-icon {
162 background: url("<?php echo $shortcode_icon ?>") center no-repeat;
163 }
164 </style>
165 <script>
166 var wbcr_inp_tinymce_snippets_button_title = '<?php echo $shortcode_title ?>';
167 var wbcr_inp_post_tinymce_nonce = '<?php echo wp_create_nonce( 'wbcr_inp_tinymce_post_nonce' ) ?>';
168 var wbcr_inp_shortcode_snippets = <?php echo $shortcode_snippets_json ?>;
169 </script>
170 <!-- /end <?php echo WINP_Plugin::app()->getPluginTitle() ?> for tinymce -->
171 <?php
172 }
173
174 add_action( 'admin_print_scripts-post.php', 'wbcr_inp_tinymce_data' );
175 add_action( 'admin_print_scripts-post-new.php', 'wbcr_inp_tinymce_data' );
176 add_action( 'admin_print_scripts-widgets.php', 'wbcr_inp_tinymce_data' );
177
178 /**
179 * Deactivate snippet on trashed
180 *
181 * @since 2.0.6
182 *
183 * @param $post_id
184 *
185 */
186 function wbcr_inp_trash_post( $post_id ) {
187 $post_type = get_post_type( $post_id );
188 if ( $post_type == WINP_SNIPPETS_POST_TYPE ) {
189 WINP_Helper::updateMetaOption( $post_id, 'snippet_activate', 0 );
190 }
191 }
192
193 add_action( 'wp_trash_post', 'wbcr_inp_trash_post' );
194
195 /**
196 * Removes the default 'new item' from the admin menu to add own page 'new item' later.
197 *
198 * @param $menu
199 *
200 * @return mixed
201 * @see menu_order
202 *
203 */
204 function wbcr_inp_remove_new_item( $menu ) {
205 global $submenu;
206
207 if ( ! isset( $submenu[ 'edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE ] ) ) {
208 return $menu;
209 }
210 unset( $submenu[ 'edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE ][10] );
211
212 return $menu;
213 }
214
215 add_filter( 'custom_menu_order', '__return_true' );
216 add_filter( 'admin_menu', 'wbcr_inp_remove_new_item' );
217
218 /**
219 * If the user tried to get access to the default 'new item',
220 * redirects forcibly to our page 'new item'.
221 *
222 * @see current_screen
223 */
224 function wbcr_inp_redirect_to_new_item() {
225 $screen = get_current_screen();
226
227 if ( empty( $screen ) ) {
228 return;
229 }
230 if ( 'add' !== $screen->action || 'post' !== $screen->base || WINP_SNIPPETS_POST_TYPE !== $screen->post_type ) {
231 return;
232 }
233
234 $winp_item = WINP_Plugin::app()->request->get( 'winp_item', null );
235 if ( ! is_null( $winp_item ) ) {
236 return;
237 }
238
239 $url = admin_url( 'edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE . '&page=new-item-' . WINP_Plugin::app()->getPluginName() );
240
241 wp_safe_redirect( $url );
242
243 exit;
244 }
245
246 add_action( 'current_screen', 'wbcr_inp_redirect_to_new_item' );
247