PluginProbe
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts / 2.2.4
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts v2.2.4
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 / includes / class.plugin.php

class.plugin.php in Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts 2.2.4, at includes/class.plugin.php

252 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHP snippets plugin base
4 *
5 * @author Webcraftic <wordpress.webraftic@gmail.com>
6 * @copyright (c) 19.02.2018, Webcraftic
7 * @version 1.0
8 */
9
10 // Exit if accessed directly
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 if ( ! class_exists( 'WINP_Plugin' ) ) {
16
17 class WINP_Plugin extends Wbcr_Factory413_Plugin {
18
19 /**
20 * @var Wbcr_Factory413_Plugin
21 */
22 private static $app;
23
24 /**
25 * @param string $plugin_path
26 * @param array $data
27 *
28 * @throws Exception
29 */
30 public function __construct( $plugin_path, $data ) {
31 parent::__construct( $plugin_path, $data );
32
33 self::$app = $this;
34
35 $this->load_global();
36
37 if ( is_admin() ) {
38 $this->initActivation();
39
40 if ( WINP_Helper::doing_ajax() ) {
41 require( WINP_PLUGIN_DIR . '/admin/ajax/ajax.php' );
42 require( WINP_PLUGIN_DIR . '/admin/ajax/check-license.php' );
43 require( WINP_PLUGIN_DIR . '/admin/ajax/snippet-library.php' );
44 }
45
46 $this->load_backend();
47 }
48 }
49
50 /**
51 * @return WINP_Plugin
52 */
53 public static function app() {
54 return self::$app;
55 }
56
57 /**
58 * @return bool
59 */
60 public function currentUserCan() {
61 return current_user_can( 'manage_options' );
62 }
63
64 /**
65 * Get Execute_Snippet object
66 *
67 * @return WINP_Execute_Snippet
68 */
69 public function getExecuteObject() {
70 require_once( WINP_PLUGIN_DIR . '/includes/class.execute.snippet.php' );
71
72 return new WINP_Execute_Snippet();
73 }
74
75 /**
76 * Get WINP_Api object
77 *
78 * @return WINP_Api
79 */
80 public function get_api_object() {
81 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.api.php' );
82
83 return new WINP_Api();
84 }
85
86 /**
87 * Get WINP_Common_Snippet object
88 *
89 * @return WINP_Common_Snippet
90 */
91 public function get_common_object() {
92 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.common.snippet.php' );
93
94 return new WINP_Common_Snippet();
95 }
96
97 /**
98 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
99 * @since 2.2.0
100 * @throws \Exception
101 */
102 /*public function plugins_loaded() {
103 $this->register_pages();
104 }*/
105
106 protected function initActivation() {
107 include_once( WINP_PLUGIN_DIR . '/admin/activation.php' );
108 $this->registerActivation( 'WINP_Activation' );
109 }
110
111 /**
112 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
113 * @since 2.2.0
114 * @throws \Exception
115 */
116 public function register_pages() {
117 require_once( WINP_PLUGIN_DIR . '/admin/pages/page.php' );
118
119 $this->registerPage( 'WINP_NewItemPage', WINP_PLUGIN_DIR . '/admin/pages/new-item.php' );
120 $this->registerPage( 'WINP_SettingsPage', WINP_PLUGIN_DIR . '/admin/pages/settings.php' );
121 $this->registerPage( 'WINP_SnippetLibraryPage', WINP_PLUGIN_DIR . '/admin/pages/snippet-library.php' );
122 $this->registerPage( 'WINP_License_Page', WINP_PLUGIN_DIR . '/admin/pages/license.php' );
123 $this->registerPage( 'WINP_AboutPage', WINP_PLUGIN_DIR . '/admin/pages/about.php' );
124 }
125
126 /**
127 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
128 * @since 2.2.0
129 * @throws \Exception
130 */
131 public function register_depence_pages() {
132 require_once( WINP_PLUGIN_DIR . '/admin/pages/page.php' );
133
134 if ( ! ( defined( 'WASP_PLUGIN_ACTIVE' ) && WASP_PLUGIN_ACTIVE ) ) {
135 $this->registerPage( 'WINP_ImportPage', WINP_PLUGIN_DIR . '/admin/pages/import.php' );
136 }
137 }
138
139 /**
140 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
141 * @since 2.2.0
142 * @throws \Exception
143 */
144 private function register_types() {
145 $this->registerType( 'WINP_SnippetsType', WINP_PLUGIN_DIR . '/admin/types/snippets-post-types.php' );
146
147 require_once( WINP_PLUGIN_DIR . '/admin/types/snippets-taxonomy.php' );
148 Wbcr_FactoryTaxonomies326::register( 'WINP_SnippetsTaxonomy', $this );
149 }
150
151 /**
152 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
153 * @since 2.2.0
154 */
155 private function register_shortcodes() {
156 $is_cron = WINP_Helper::doing_cron();
157 $is_rest = WINP_Helper::doing_rest_api();
158
159 $action = WINP_Plugin::app()->request->get( 'action', '' );
160 if ( ! ( 'edit' == $action && is_admin() ) && ! $is_cron && ! $is_rest ) {
161 if ( WINP_Plugin::app()->getOption( 'support_old_shortcodes' ) ) {
162 // todo: Deprecated
163 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-insert-php.php' );
164 }
165
166 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcodes.php' );
167 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-php.php' );
168 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-text.php' );
169 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-universal.php' );
170 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-css.php' );
171 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-js.php' );
172 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-html.php' );
173
174 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodePhp', $this );
175 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeText', $this );
176 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeUniversal', $this );
177 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeCss', $this );
178 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeJs', $this );
179 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeHtml', $this );
180 }
181 }
182
183 /**
184 * Initialization and require files for backend and frontend.
185 *
186 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
187 * @since 2.2.0
188 */
189 private function load_global() {
190 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.gutenberg.snippet.php' );
191 new WINP_Gutenberg_Snippet();
192
193 $this->getExecuteObject()->registerHooks();
194 $this->register_shortcodes();
195
196 /**
197 * Enables/Disable safe mode, in which the php code will not be executed.
198 */
199 add_action( 'plugins_loaded', function () {
200 $safe_mode = isset( $_GET['wbcr-php-snippets-safe-mode'] );
201
202 if ( $safe_mode ) {
203 WINP_Helper::enable_safe_mode();
204 wp_safe_redirect( remove_query_arg( [ 'wbcr-php-snippets-safe-mode' ] ) );
205 die();
206 }
207
208 if ( isset( $_GET['wbcr-php-snippets-disable-safe-mode'] ) ) {
209 WINP_Helper::disable_safe_mode();
210 wp_safe_redirect( remove_query_arg( [ 'wbcr-php-snippets-disable-safe-mode' ] ) );
211 die();
212 }
213 }, - 1 );
214 }
215
216 /**
217 * Initialization and require files for backend.
218 *
219 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
220 * @since 2.2.0
221 * @throws \Exception
222 */
223 private function load_backend() {
224 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.snippets.viewtable.php' );
225 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.filter.snippet.php' );
226 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.actions.snippet.php' );
227 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.import.snippet.php' );
228 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.notices.php' );
229 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.request.php' );
230 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.dashboard.widget.php' );
231 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/metabox.php' );
232 require_once( WINP_PLUGIN_DIR . '/admin/boot.php' );
233
234 $this->get_common_object()->registerHooks();
235
236 $this->register_types();
237
238 new WINP_Filter_List();
239 new WINP_Export_Snippet();
240 new WINP_Import_Snippet();
241 new WINP_WarningNotices();
242 new WINP_Dashboard_Widget();
243
244 # Required for i18n to be loaded properly
245 add_action( 'plugins_loaded', [ $this, 'register_pages' ] );
246
247 # Required for compatibility with the premium plugin.
248 # We set the priority to 30 to wait for the premium plugin to load.
249 add_action( 'plugins_loaded', [ $this, 'register_depence_pages' ], 30 );
250 }
251 }
252 }