PluginProbe
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts / 2.0.6
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts v2.0.6
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.0.6, at admin/boot.php

211 lines 7.9 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 * @author Alex Kovalev <alex.kovalevv@gmail.com>
5 * @copyright Alex Kovalev 05.06.2018
6 * @version 1.0
7 */
8
9 /**
10 * Admin warning notices
11 */
12 function wbcr_inp_admin_conflict_notices_error($notices, $plugin_name)
13 {
14 if( $plugin_name != WINP_Plugin::app()->getPluginName() ) {
15 return $notices;
16 }
17
18 if( isset($_COOKIE['wbcr-php-snippets-safe-mode']) ) {
19 $disable_safe_mode_url = add_query_arg(array('wbcr-php-snippets-disable-safe-mode' => 1));
20
21 $safe_mode_notice = WINP_Plugin::app()
22 ->getPluginTitle() . ': ' . __('Running in safe mode. This mode your snippets will not be started.', 'insert-php');
23 $safe_mode_notice .= ' <a href="' . $disable_safe_mode_url . '" class="button button-default">Disable Safe Mode</a>';
24
25 $notices[] = array(
26 'id' => 'inp_safe_mode',
27 'type' => 'success',
28 'dismissible' => false,
29 'dismiss_expires' => 0,
30 'text' => '<p>' . $safe_mode_notice . '</p>'
31 );
32 }
33
34 $create_notice_url = admin_url('edit.php?post_type=' . WINP_SNIPPETS_POST_TYPE);
35
36 $upgrade_plugin_notice = '<b>' . WINP_Plugin::app()
37 ->getPluginTitle() . '</b>: ' . __('Attention! This new 2.0 plugin version, we added the ability to insert php code using snippets. This is a more convenient and secure way than using shortcodes [insert_php] code execute [/ insert_php]. However, for compatibility reasons, we left support for [insert_php] shortcodes, but we will depreciate them in the next versions of the plugin.', 'insert-php');
38
39 $upgrade_plugin_notice .= '<br><br>' . __('We strongly recommend you to transfer your php code to snippets and call them in your posts/pages and widgets using [wbcr_php_snippet id = "000"] shortcodes.', 'insert-php');
40
41 //$upgrade_plugin_notice .= '<br><br><span style="color:red">' . __('If you have updated from version 1.3 of the plugin (Insert php). Please deactivate and activate the plugin to update the settings.', 'insert-php') . '</span>';
42
43 $upgrade_plugin_notice .= '<br><br><a href="' . $create_notice_url . '" class="button button-default">' . __('Create new php snippet', 'insert-php') . '</a> ';
44
45 $upgrade_plugin_notice .= '<a href="https://downloads.wordpress.org/plugin/insert-php.1.3.zip" class="button button-default">' . __('Download old version', 'insert-php') . '</a><br><br>';
46 $upgrade_plugin_notice .= sprintf(__('If you have issues with the plugin new version or any suggestions, please contact us on <a href="%s" target="_blank">our forum</a>.', 'insert-php'), 'https://wordpress.org/support/plugin/insert-php');
47 $upgrade_plugin_notice .= '<br>' . sprintf(__('We tried to make the plugin better and more convenient. If you like the new version, feel free to <a href="%s" target="_blank">leave your feedback</a>. It will give us motivation for further improvements.', 'insert-php'), 'https://wordpress.org/support/plugin/insert-php/reviews/#new-post');
48
49 $notices[] = array(
50 'id' => 'inp_upgrade_plugin',
51 'type' => 'warning',
52 'dismissible' => true,
53 'dismiss_expires' => 0,
54 'text' => '<p>' . $upgrade_plugin_notice . '</p>'
55 );
56
57 /**
58 * Show error notification after saving snippet. We can also show this message when the snippet is activated.
59 * We must warn the user that we can not perform the spippet due to an error.
60 */
61 if( isset($_GET['wbcr_inp_save_snippet_result']) && $_GET['wbcr_inp_save_snippet_result'] == 'code-error' ) {
62
63 $post_id = isset($_GET['post'])
64 ? intval($_GET['post'])
65 : null;
66
67 if( $post_id && $error = WINP_Plugin::app()->getSnippetError($post_id) ) {
68
69 $error_message = sprintf('<p>%s</p><p><strong>%s</strong></p>', sprintf(__('The snippet has been deactivated due to an error on line %d:', 'insert-php'), $error['line']), $error['message']);
70
71 $notices[] = array(
72 'id' => 'inp_result_error',
73 'where' => array('post', 'post-new', 'edit'),
74 'type' => 'error',
75 'dismissible' => false,
76 'dismiss_expires' => 0,
77 'text' => $error_message
78 );
79 }
80 }
81
82 return $notices;
83 }
84
85 add_filter('wbcr_factory_admin_notices', 'wbcr_inp_admin_conflict_notices_error', 10, 2);
86
87 function wbcr_inp_admin_init()
88 {
89 $plugin = WINP_Plugin::app();
90
91 // Disable safe mode
92
93 if( isset($_COOKIE['wbcr-php-snippets-safe-mode']) && isset($_REQUEST['wbcr-php-snippets-disable-safe-mode']) && $plugin->currentUserCan() ) {
94 unset($_COOKIE['wbcr-php-snippets-safe-mode']);
95 setcookie('wbcr-php-snippets-safe-mode', null, -1);
96 wp_safe_redirect(remove_query_arg(array('wbcr-php-snippets-disable-safe-mode')));
97 exit;
98 }
99
100 // Register metaboxes
101
102 require_once(WINP_PLUGIN_DIR . '/admin/metaboxes/base-options.php');
103 Wbcr_FactoryMetaboxes403::registerFor(new WINP_BaseOptionsMetaBox($plugin), WINP_SNIPPETS_POST_TYPE, $plugin);
104
105 require_once(WINP_PLUGIN_DIR . '/admin/metaboxes/info.php');
106 Wbcr_FactoryMetaboxes403::registerFor(new WINP_InfoMetaBox($plugin), WINP_SNIPPETS_POST_TYPE, $plugin);
107
108 // Upgrade up to new version
109 if( !$plugin->getOption('upgrade_up_to_201', false) ) {
110 $role = get_role('administrator');
111 if( !$role ) {
112 return;
113 }
114
115 $role->add_cap('edit_' . WINP_SNIPPETS_POST_TYPE);
116 $role->add_cap('read_' . WINP_SNIPPETS_POST_TYPE);
117 $role->add_cap('delete_' . WINP_SNIPPETS_POST_TYPE);
118 $role->add_cap('edit_' . WINP_SNIPPETS_POST_TYPE . 's');
119 $role->add_cap('edit_others_' . WINP_SNIPPETS_POST_TYPE . 's');
120 $role->add_cap('publish_' . WINP_SNIPPETS_POST_TYPE . 's');
121 $role->add_cap('read_private_' . WINP_SNIPPETS_POST_TYPE . 's');
122
123 $plugin->updateOption('upgrade_up_to_201', 1);
124 }
125 }
126
127 add_action('admin_init', 'wbcr_inp_admin_init');
128
129 // ---
130 // Editor
131 //
132
133 /**
134 * Asset scripts for the tinymce editor
135 *
136 * @param string $hook
137 */
138 function wbcr_inp_enqueue_tinymce_assets($hook)
139 {
140 $pages = array(
141 'post.php',
142 'post-new.php',
143 'widgets.php'
144 );
145
146 if( !in_array($hook, $pages) || !current_user_can('manage_options') ) {
147 return;
148 }
149
150 wp_enqueue_script('wbcr-inp-tinymce-button-widget', WINP_PLUGIN_URL . '/admin/assets/js/tinymce4.4.js', array('jquery'), WINP_Plugin::app()
151 ->getPluginVersion(), true);
152 }
153
154 add_action('admin_enqueue_scripts', 'wbcr_inp_enqueue_tinymce_assets');
155
156 /**
157 * Adds js variable required for shortcodes.
158 *
159 * @see before_wp_tiny_mce
160 * @since 1.1.0
161 */
162 function wbcr_inp_tinymce_data($hook)
163 {
164 if( !current_user_can('manage_options') ) {
165 return;
166 }
167
168 // styles for the plugin shorcodes
169 $shortcode_icon = WINP_PLUGIN_URL . '/admin/assets/img/shortcode-icon.png';
170 $shortcode_title = __('PHP snippets', 'insert-php');
171
172 $snippets = get_posts(array(
173 'post_type' => WINP_SNIPPETS_POST_TYPE,
174 'meta_key' => WINP_Plugin::app()->getPrefix() . 'snippet_scope',
175 'meta_value' => 'shortcode',
176 'post_status' => 'publish',
177 'numberposts' => -1
178 ));
179
180 $result = array();
181 foreach((array)$snippets as $snippet) {
182 $result[] = array(
183 'id' => $snippet->ID,
184 'title' => empty($snippet->post_title)
185 ? '(no titled, ID=' . $snippet->ID . ')'
186 : $snippet->post_title
187 );
188 }
189
190 $shortcode_snippets_json = json_encode($result);
191
192 ?>
193 <!-- <?= WINP_Plugin::app()->getPluginTitle() ?> for tinymce -->
194 <style>
195 i.wbcr-inp-shortcode-icon {
196 background: url("<?php echo $shortcode_icon ?>") center no-repeat;
197 }
198 </style>
199 <script>
200 var wbcr_inp_tinymce_snippets_button_title = '<?php echo $shortcode_title ?>';
201 var wbcr_inp_post_tinymce_nonce = '<?php echo wp_create_nonce('wbcr_inp_tinymce_post_nonce') ?>';
202 var wbcr_inp_shortcode_snippets = <?= $shortcode_snippets_json ?>;
203 </script>
204 <!-- /end <?= WINP_Plugin::app()->getPluginTitle() ?> for tinymce -->
205 <?php
206 }
207
208 add_action('admin_print_scripts-post.php', 'wbcr_inp_tinymce_data');
209 add_action('admin_print_scripts-post-new.php', 'wbcr_inp_tinymce_data');
210 add_action('admin_print_scripts-widgets.php', 'wbcr_inp_tinymce_data');
211