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 / includes / class.plugin.php

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

249 lines 7.7 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_Factory421_Plugin {
18
19 /**
20 * @var Wbcr_Factory421_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 require_once( WINP_PLUGIN_DIR . '/admin/types/snippets-post-types.php' );
146 Wbcr_FactoryTypes410::register( 'WINP_SnippetsType', $this );
147
148 require_once( WINP_PLUGIN_DIR . '/admin/types/snippets-taxonomy.php' );
149 Wbcr_FactoryTaxonomies330::register( 'WINP_SnippetsTaxonomy', $this );
150 }
151
152 /**
153 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
154 * @since 2.2.0
155 */
156 private function register_shortcodes() {
157 $is_cron = WINP_Helper::doing_cron();
158 $is_rest = WINP_Helper::doing_rest_api();
159
160 $action = WINP_Plugin::app()->request->get( 'action', '' );
161 if ( ! ( 'edit' == $action && is_admin() ) && ! $is_cron && ! $is_rest ) {
162 if ( WINP_Plugin::app()->getOption( 'support_old_shortcodes' ) ) {
163 // todo: Deprecated
164 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-insert-php.php' );
165 }
166
167 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcodes.php' );
168 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-php.php' );
169 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-text.php' );
170 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-universal.php' );
171 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-css.php' );
172 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-js.php' );
173 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-html.php' );
174
175 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodePhp', $this );
176 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeText', $this );
177 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeUniversal', $this );
178 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeCss', $this );
179 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeJs', $this );
180 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeHtml', $this );
181 }
182 }
183
184 /**
185 * Initialization and require files for backend and frontend.
186 *
187 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
188 * @since 2.2.0
189 */
190 private function load_global() {
191 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.gutenberg.snippet.php' );
192 new WINP_Gutenberg_Snippet();
193
194 $this->getExecuteObject()->registerHooks();
195 $this->register_shortcodes();
196
197 /**
198 * Enables/Disable safe mode, in which the php code will not be executed.
199 */
200 add_action( 'plugins_loaded', function () {
201 if ( isset( $_GET['wbcr-php-snippets-safe-mode'] ) ) {
202 WINP_Helper::enable_safe_mode();
203 wp_safe_redirect( remove_query_arg( [ 'wbcr-php-snippets-safe-mode' ] ) );
204 die();
205 }
206
207 if ( isset( $_GET['wbcr-php-snippets-disable-safe-mode'] ) ) {
208 WINP_Helper::disable_safe_mode();
209 wp_safe_redirect( remove_query_arg( [ 'wbcr-php-snippets-disable-safe-mode' ] ) );
210 die();
211 }
212 }, - 1 );
213 }
214
215 /**
216 * Initialization and require files for backend.
217 *
218 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
219 * @since 2.2.0
220 * @throws \Exception
221 */
222 private function load_backend() {
223 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.snippets.viewtable.php' );
224 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.filter.snippet.php' );
225 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.actions.snippet.php' );
226 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.import.snippet.php' );
227 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.notices.php' );
228 require_once( WINP_PLUGIN_DIR . '/admin/includes/class.request.php' );
229 require_once( WINP_PLUGIN_DIR . '/admin/metaboxes/metabox.php' );
230 require_once( WINP_PLUGIN_DIR . '/admin/boot.php' );
231
232 $this->get_common_object()->registerHooks();
233
234 $this->register_types();
235
236 new WINP_Filter_List();
237 new WINP_Export_Snippet();
238 new WINP_Import_Snippet();
239 new WINP_WarningNotices();
240
241 # Required for i18n to be loaded properly
242 add_action( 'plugins_loaded', [ $this, 'register_pages' ] );
243
244 # Required for compatibility with the premium plugin.
245 # We set the priority to 30 to wait for the premium plugin to load.
246 add_action( 'plugins_loaded', [ $this, 'register_depence_pages' ], 30 );
247 }
248 }
249 }