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

275 lines 8.2 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_Factory456_Plugin {
18
19 /**
20 * @var Wbcr_Factory456_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 * @throws \Exception
99 * @since 2.2.0
100 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
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 * @throws \Exception
113 * @since 2.2.0
114 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
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 * @throws \Exception
128 * @since 2.2.0
129 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
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 * @throws \Exception
141 * @since 2.2.0
142 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
143 */
144 private function register_types() {
145 require_once( WINP_PLUGIN_DIR . '/admin/types/snippets-post-types.php' );
146 Wbcr_FactoryTypes412::register( 'WINP_SnippetsType', $this );
147
148 require_once( WINP_PLUGIN_DIR . '/admin/types/snippets-taxonomy.php' );
149 Wbcr_FactoryTaxonomies332::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 $action = WINP_Plugin::app()->request->get( 'action', '' );
158 if ( ! ( 'edit' == $action && is_admin() ) ) {
159 if ( WINP_Plugin::app()->getOption( 'support_old_shortcodes' ) ) {
160 // todo: Deprecated
161 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-insert-php.php' );
162 }
163
164 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcodes.php' );
165 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-php.php' );
166 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-text.php' );
167 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-universal.php' );
168 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-css.php' );
169 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-js.php' );
170 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-html.php' );
171 require_once( WINP_PLUGIN_DIR . '/includes/shortcodes/shortcode-ad.php' );
172
173 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodePhp', $this );
174 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeText', $this );
175 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeUniversal', $this );
176 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeCss', $this );
177 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeJs', $this );
178 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeHtml', $this );
179 WINP_Helper::register_shortcode( 'WINP_SnippetShortcodeAdvert', $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
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 * @throws \Exception
219 * @since 2.2.0
220 * @author Alexander Kovalev <alex.kovalevv@gmail.com>
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 add_action( 'wbcr_factory_forms_453_register_controls', function () {
249 $colorControls = array(
250 [
251 'type' => 'winp-dropdown',
252 'class' => 'WINP_FactoryForms_Dropdown',
253 'include' => WINP_PLUGIN_DIR . '/includes/controls/class.dropdown.php'
254 ],
255 );
256 $this->forms->registerControls( $colorControls );
257 } );
258 }
259
260 /**
261 * Метод проверяет активацию премиум плагина и наличие действующего лицензионного ключа
262 *
263 * @return bool
264 */
265 public function is_premium() {
266 if ( $this->premium->is_active() && $this->premium->is_activate() //&& $this->premium->is_install_package()
267 ) {
268 return true;
269 } else {
270 return false;
271 }
272 }
273
274 }
275 }