PluginProbe
CSS & JavaScript Toolbox / 12.0.5
CSS & JavaScript Toolbox v12.0.5
trunk 0.3 0.8 10 10.1 11 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.9.1 12 12.0 12.0.1 12.0.3 12.0.4 12.0.5 12.0.6 12.0.7 6.0 6.0.11 All 60 releases
css-javascript-toolbox / css-js-toolbox.php

css-js-toolbox.php in CSS & JavaScript Toolbox 12.0.5, at css-js-toolbox.php

412 lines 9.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: CSS & JavaScript Toolbox
4 Plugin URI: https://css-javascript-toolbox.com/
5 Description: Easily add CSS, JavaScript, HTML and PHP code to unique CJT code blocks and assign them anywhere on your website.
6 Version: 12.0.5
7 Author: Wipeout Media
8 Author URI: https://css-javascript-toolbox.com
9 Text Domain: css-javascript-toolbox
10 Domain Path: /locals/languages/
11 License:
12
13 The Software is package as a WordPress¨ plugin. The PHP code associated with the Software is licensed under the GPL version 2.0 license (as found at http://www.gnu.org/licenses/gpl-2.0.txt GNU/GPLv2 or "GPLv2"). You may redistribute, repackage, and modify the PHP code as you see fit and as consistent with GPLv2.
14
15 The remaining portions of the Software ("Proprietary Portion"), which includes all images, cascading style sheets, and JavaScript are NOT licensed under GPLv2 and are considered proprietary to Licensor and are solely licensed under the remaining terms of this Agreement. The Proprietary Portion may not be redistributed, repackaged, or otherwise modified.
16 */
17
18 // Disallow direct access.
19 defined( 'ABSPATH' ) or die( 'Access denied' );
20
21
22 /** * */
23 define( 'CJTOOLBOX_PLUGIN_BASE', basename( dirname( __FILE__ ) ) . '/' . basename( __FILE__ ) );
24
25 /** * */
26 define( 'CJTOOLBOX_PLUGIN_FILE', __FILE__ );
27
28 /** CJT Name */
29 define( 'CJTOOLBOX_NAME', plugin_basename( dirname( __FILE__ ) ) );
30
31 /** CJT Text Domain used for localize texts */
32 define( 'CJTOOLBOX_TEXT_DOMAIN', CJTOOLBOX_NAME );
33
34 /** */
35 define( 'CJTOOLBOX_LANGUAGES', CJTOOLBOX_NAME . '/locals/languages/' );
36
37 /** CJT Absoulte path */
38 define( 'CJTOOLBOX_PATH', dirname( __FILE__ ) );
39
40 /** Dont use!! @deprecated */
41 define( 'CJTOOLBOX_INCLUDE_PATH', CJTOOLBOX_PATH . '/framework' );
42
43 /** Access Points path */
44 define( 'CJTOOLBOX_ACCESS_POINTS', CJTOOLBOX_PATH . '/access.points' );
45
46 /** Frmaework path */
47 define('CJTOOLBOX_FRAMEWORK', CJTOOLBOX_INCLUDE_PATH); // Alias to include path!
48
49 // Class Autoload Added @since 6.2.
50 require 'autoload.inc.php';
51
52 // Import dependencies
53 require_once CJTOOLBOX_FRAMEWORK . '/php/includes.class.php';
54 require_once CJTOOLBOX_FRAMEWORK . '/events/definition.class.php';
55 require_once CJTOOLBOX_FRAMEWORK . '/events/events.class.php';
56 require_once CJTOOLBOX_FRAMEWORK . '/events/wordpress.class.php';
57 require_once CJTOOLBOX_FRAMEWORK . '/events/hookable.interface.php';
58 require_once CJTOOLBOX_FRAMEWORK . '/events/hookable.class.php';
59
60 // Initialize events engine/system!
61 CJTWordpressEvents::_init( array( 'hookType' => CJTWordpressEvents::HOOK_ACTION ) );
62 CJTWordpressEvents::$paths[ 'subjects' ][ 'core' ] = CJTOOLBOX_FRAMEWORK . '/events/subjects';
63 CJTWordpressEvents::$paths[ 'observers' ][ 'core' ] = CJTOOLBOX_FRAMEWORK . '/events/observers';
64
65 /**
66 * CJT Plugin interface.
67 *
68 * The CJT Plugin is maximum deferred.
69 * All functionality here is just to detect if the request should be processed!
70 *
71 * The main class is located css-js-toolbox.class.php cssJSToolbox class
72 * The plugin is fully developed using Model-View-Controller design pattern.
73 *
74 * access.points directory has all the entry points that processed by the Plugin.
75 *
76 * @package CJT
77 * @author Ahmed Said
78 * @version 6
79 */
80 class CJTPlugin extends CJTHookableClass
81 {
82
83 /**
84 *
85 */
86 const DB_VERSION = '1.7';
87
88 /**
89 * put your comment there...
90 *
91 * @var mixed
92 */
93 CONST ENV_PHP_MIN_VERSION = '5.3';
94
95 /**
96 *
97 */
98 const FW_Version = '5.0';
99
100 /**
101 *
102 */
103 const VERSION = '12.0.5';
104
105 /**
106 *
107 */
108 const DB_VERSION_OPTION_NAME = 'cjtoolbox_db_version';
109
110 /**
111 *
112 */
113 const PLUGIN_REQUEST_ID = 'cjtoolbox';
114
115 /**
116 * put your comment there...
117 *
118 * @var mixed
119 */
120 protected $accessPoints;
121
122 /**
123 * put your comment there...
124 *
125 * @var mixed
126 */
127 protected $extensions;
128
129 /**
130 * put your comment there...
131 *
132 * @var mixed
133 */
134 protected $installed;
135
136 /**
137 * put your comment there...
138 *
139 * @var CJTPlugin
140 */
141 protected static $instance;
142
143 /**
144 * put your comment there...
145 *
146 * @var mixed
147 */
148 protected $mainAC;
149
150 /**
151 * put your comment there...
152 *
153 * @var mixed
154 */
155 protected $onloaddbversion = array( 'parameters' => array( 'dbVersion' ) );
156
157 /**
158 * put your comment there...
159 *
160 * @var mixed
161 */
162 protected $onimportcontroller = array( 'parameters' => array( 'file' ) );
163
164 /**
165 * put your comment there...
166 *
167 * @var mixed
168 */
169 protected $onimportmodel = array( 'parameters' => array( 'file' ) );
170
171 /**
172 * put your comment there...
173 *
174 * @var mixed
175 */
176 protected $onload = array( 'parameters' => array( 'instance' ) );
177
178 /**
179 * put your comment there...
180 *
181 */
182 protected function __construct()
183 {
184 // Hookable!
185 parent::__construct();
186
187 // Allow access points to utilize from CJTPlugin functionality
188 // even if the call is recursive inside getInstance/construct methods!!!
189 self::$instance = $this;
190
191 // Installation version
192 $dbVersion = $this->onloaddbversion( get_option( self::DB_VERSION_OPTION_NAME ) );
193 $this->installed = ( ( $dbVersion ) == self::DB_VERSION );
194
195 // Load plugin and all installed extensions!.
196 $this->load();
197 $this->loadExtensions();
198
199 // Run MAIN access point!
200 $this->main();
201 }
202
203 /**
204 * put your comment there...
205 *
206 */
207 public function & extensions()
208 {
209 return $this->extensions;
210 }
211
212 /**
213 * put your comment there...
214 *
215 */
216 public function getAccessPoint( $name )
217 {
218 return $this->accessPoints[ $name ];
219 }
220
221 /**
222 * put your comment there...
223 *
224 */
225 public static function getInstance()
226 {
227
228 if ( ! self::$instance )
229 {
230 self::$instance = new CJTPlugin();
231 }
232
233 return self::$instance;
234 }
235
236 /**
237 * put your comment there...
238 *
239 */
240 public static function isCompatibleEnvironment()
241 {
242
243 if ( version_compare( PHP_VERSION, self::ENV_PHP_MIN_VERSION, '<' ) )
244 {
245
246 $importHTMLFileCode = 'require "includes" . DIRECTORY_SEPARATOR . "html" . DIRECTORY_SEPARATOR . "incompatible_environment_message.html.php";';
247
248 add_action( 'admin_notices', create_function( '', $importHTMLFileCode ) );
249
250 return false;
251 }
252
253 return true;
254 }
255 /**
256 * put your comment there...
257 *
258 */
259 public function isInstalled()
260 {
261 return $this->installed;
262 }
263
264 /**
265 * put your comment there...
266 *
267 */
268 public function listen()
269 {
270 // For now we've only admin access points! Future versions might has something changed!
271 if ( is_admin() )
272 {
273
274 // Import access points core classes.
275 require_once 'framework/access-points/page.class.php';
276 require_once 'framework/access-points/directory-spider.class.php';
277
278 // Get access points!
279 $accessPoints = CJTAccessPointsDirectorySpider::getInstance( 'CJT', CJTOOLBOX_ACCESS_POINTS );
280
281 // For every access point create instance and LISTEN to the request!
282 foreach ( $accessPoints as $name => $info )
283 {
284 /**
285 * @var CJTAccessPoint
286 */
287 $this->accessPoints[ $name ] = $point = $accessPoints->point()->listen();
288
289 // We need to do some work with there is a connected access point.
290 $point->onconnected = array( & $this, 'onconnected' );
291
292 }
293
294 }
295
296 return $this;
297 }
298
299 /**
300 * put your comment there...
301 *
302 */
303 protected function load()
304 {
305 // Bootstrap the Plugin!
306 cssJSToolbox::getInstance();
307
308 // Load MVC framework core!
309 require_once $this->onimportmodel( CJTOOLBOX_MVC_FRAMEWOK . '/model.inc.php' );
310 require_once $this->onimportcontroller( CJTOOLBOX_MVC_FRAMEWOK . '/controller.inc.php' );
311
312 return $this;
313 }
314
315 /**
316 * put your comment there...
317 *
318 */
319 protected function loadExtensions()
320 {
321 // Load extensions lib!
322 require_once 'framework/extensions/extensions.class.php';
323
324 $this->extensions = new CJTExtensions();
325 $this->extensions->load();
326
327 return $this;
328 }
329
330 /**
331 * Run MAIN access point!
332 *
333 * @return $this
334 */
335 protected function main()
336 {
337 // Fire laod event
338 $this->onload( $this );
339
340 // Access point base class is a dependency!
341 require_once 'framework/access-points/access-point.class.php';
342
343 // Run Main Acces Point!
344 include_once 'access.points/main.accesspoint.php';
345
346 $this->mainAC = new CJTMainAccessPoint();
347 $this->mainAC->listen();
348 }
349
350 /**
351 * Called When any In-Listen-State (ILS) Access point is
352 * connected (called by Wordpress hooking system).
353 *
354 * @return boolean TRUE.
355 */
356 public function onconnected( $observer, $state )
357 {
358 // Always connect the access point!
359 return $state;
360 }
361
362 }// End Class
363
364 // Dont run if environment (e.g PHP version) is incomaptible
365 if ( ! CJTPlugin::isCompatibleEnvironment() )
366 {
367 return;
368 }
369
370 // Initialize events!
371 CJTPlugin::define( 'CJTPlugin', array( 'hookType' => CJTWordpressEvents::HOOK_FILTER ) );
372
373 // Let's Go!
374 function deprecatedPHPCheck()
375 { ?>
376 <div class="notice notice-error">
377 <p><strong>CJT</strong>: CSS & JavaScript Toolbox need PHP version 7.3 or greater to operate properly. Please ask your hosting provider to update the PHP version.<br>
378 Current PHP Version: <strong><?php echo phpversion(); ?></strong>
379 </p>
380 </div>
381 <?php }
382
383 if ( version_compare( phpversion(), 7, '>=' ) ) {
384 CJTPlugin::getInstance();
385 } else {
386 add_action( 'admin_notices', 'deprecatedPHPCheck' );
387 }
388
389 add_action( 'upgrader_process_complete', 'upgradeCheck',10, 2 );
390
391 function upgradeCheck( $upgrader_object, $options ) {
392 $CJTPluginPath = plugin_basename( __FILE__ );
393
394 global $wpdb;
395 $table_name = $wpdb->base_prefix.'cjtoolbox_blocks';
396 $query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) );
397 $preCheck = get_option( '__existing_cjt_user' );
398
399 if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
400 foreach( $options['plugins'] as $each_plugin ) {
401 if ( $each_plugin == $CJTPluginPath ) {
402 $preCheck = get_option( '__existing_cjt_user' );
403
404 // Only create it once.
405 if ( empty( $preCheck ) ) {
406 update_option( '__existing_cjt_user', $wpdb->get_var( $query ) === $table_name ? 'true' : 'false' );
407 }
408 }
409 }
410 }
411 }
412