PluginProbe
Counter Box – Add Countdowns, Timers & Dynamic Counters to WordPress / trunk
Counter Box – Add Countdowns, Timers & Dynamic Counters to WordPress vtrunk
2.0.14 trunk 1.0 1.2 1.2.1 1.2.2 1.2.3 1.2.4 2.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9
counter-box / counter-box.php

counter-box.php in Counter Box – Add Countdowns, Timers & Dynamic Counters to WordPress trunk, at counter-box.php

195 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Counter Box
4 * Plugin URI: https://wordpress.org/plugins/counter-box/
5 * Description: The most powerful creator of counters, timers and countdowns
6 * Version: 2.0.14
7 * Author: Wow-Company
8 * Author URI: https://wow-estore.com/
9 * License: GPL-2.0+
10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11 * Text Domain: counter-box
12 * Domain Path: /languages
13 * Item ID: 45426
14 * Store URI: https://wow-estore.com/
15 * Author Email: hey@wow-company.com
16 * Plugin Menu: Counter Box
17 * Rating URI: https://wordpress.org/support/plugin/counter-box/reviews/?filter=5#new-post
18 * Support URI: https://wordpress.org/support/plugin/counter-box/
19 * Item URI: https://wow-estore.com/item/counter-box-pro/
20 * Documentation: https://wow-estore.com/documentations/counter-box-documentation/
21 * Change URI: https://wordpress.org/plugins/counter-box/#developers
22 * Demo URI: https://demo.wow-estore.com/counter-box-pro/
23 * PHP version 7.4
24 *
25 * @category Wordpress_Plugin
26 * @package Wow_Plugin
27 * @author Dmytro Lobov <dev@wow-company.com>, Wow-Company
28 * @copyright 2024 Dmytro Lobov
29 * @license GPL-2.0+
30 */
31
32 namespace CounterBox;
33
34 use CounterBox\Admin\DBManager;
35 use CounterBox\Update\UpdateDB;
36
37 defined( 'ABSPATH' ) || exit;
38
39 if ( ! class_exists( 'WOWP_Plugin' ) ) :
40
41 final class WOWP_Plugin {
42
43 // Plugin slug
44 public const SLUG = 'counter-box';
45
46 // Plugin prefix
47 public const PREFIX = 'counter_box';
48
49 // Plugin Shortcode
50 public const SHORTCODE = 'Counter-Box';
51
52 private static $instance;
53
54 private WOWP_Admin $admin;
55 private Autoloader $autoloader;
56 private WOWP_Public $public;
57
58 public static function instance(): WOWP_Plugin {
59 if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) {
60 self::$instance = new self;
61
62 self::$instance->includes();
63
64 self::$instance->autoloader = new Autoloader( 'CounterBox' );
65 self::$instance->admin = new WOWP_Admin();
66 self::$instance->public = new WOWP_Public();
67
68 register_activation_hook( __FILE__, [ self::$instance, 'plugin_activate' ] );
69 add_action( 'plugins_loaded', [ self::$instance, 'loaded' ] );
70 }
71
72
73 return self::$instance;
74 }
75
76 // Plugin Root File.
77 public static function file(): string {
78 return __FILE__;
79 }
80
81 // Plugin Base Name.
82 public static function basename(): string {
83 return plugin_basename( __FILE__ );
84 }
85
86 // Plugin Folder Path.
87 public static function dir(): string {
88 return plugin_dir_path( __FILE__ );
89 }
90
91 // Plugin Folder URL.
92 public static function url(): string {
93 return plugin_dir_url( __FILE__ );
94 }
95
96 // Get Plugin Info
97 public static function info( $show = '' ): string {
98 $data = [
99 'name' => 'Plugin Name',
100 'version' => 'Version',
101 'url' => 'Plugin URI',
102 'author' => 'Author',
103 'email' => 'Author Email',
104 'store' => 'Store URI',
105 'item_id' => 'Item ID',
106 'menu_title' => 'Plugin Menu',
107 'rating' => 'Rating URI',
108 'support' => 'Support URI',
109 'pro' => 'Item URI',
110 'docs' => 'Documentation',
111 'change' => 'Change URI',
112 'demo' => 'Demo URI',
113 ];
114 $plugin_data = get_file_data( __FILE__, $data, false );
115
116 return $plugin_data[ $show ] ?? '';
117 }
118
119 /**
120 * Include required files.
121 *
122 * @access private
123 * @since 1.0
124 */
125 private function includes(): void {
126 if ( ! class_exists( 'Wow_Company' ) ) {
127 require_once self::dir() . 'includes/class-wow-company.php';
128 }
129
130 require_once self::dir() . 'classes/Autoloader.php';
131 require_once self::dir() . 'admin/class-wowp-admin.php';
132 require_once self::dir() . 'public/class-wowp-public.php';
133 }
134
135 /**
136 * Throw error on object clone.
137 * The whole idea of the singleton design pattern is that there is a single
138 * object therefore, we don't want the object to be cloned.
139 *
140 * @return void
141 * @access protected
142 */
143 public function __clone() {
144 // Cloning instances of the class is forbidden.
145 _doing_it_wrong( __FUNCTION__, esc_attr__( 'Cheatin&#8217; huh?', 'counter-box' ), '1.0' );
146 }
147
148 /**
149 * Disable unserializing of the class.
150 *
151 * @return void
152 * @access protected
153 */
154 public function __wakeup() {
155 // Unserializing instances of the class is forbidden.
156 _doing_it_wrong( __FUNCTION__, esc_attr__( 'Cheatin&#8217; huh?', 'counter-box' ), '1.0' );
157 }
158
159 public function plugin_activate(): void {
160
161 if ( is_plugin_active( 'counter-box-pro/counter-box-pro.php' ) ) {
162 deactivate_plugins( 'counter-box-pro/counter-box-pro.php' );
163 }
164
165 $columns = "
166 id mediumint(9) NOT NULL AUTO_INCREMENT,
167 title VARCHAR(200),
168 param longtext,
169 status boolean DEFAULT 0 NOT NULL,
170 mode boolean DEFAULT 0 NOT NULL,
171 tag text,
172 PRIMARY KEY (id)
173 ";
174 DBManager::create( $columns );
175 }
176
177 /**
178 * Download the folder with languages.
179 *
180 * @access Publisher
181 * @return void
182 */
183 public function loaded(): void {
184 UpdateDB::init();
185 }
186 }
187
188 endif;
189
190 function wp_plugin_run(): WOWP_Plugin {
191 return WOWP_Plugin::instance();
192 }
193
194 wp_plugin_run();
195