PluginProbe
Floating Button – Easily Create Sticky, Fixed & Floating Buttons / trunk
Floating Button – Easily Create Sticky, Fixed & Floating Buttons vtrunk
trunk 2.0.2 3.0 4.0 4.1.2 4.3 5.0 5.0.1 5.1 5.1.1 5.2 5.3 5.3.1 6.0 6.0.1 6.0.10 6.0.11 6.0.12 6.0.13 6.0.2 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 All 31 releases
floating-button / floating-button.php

floating-button.php in Floating Button – Easily Create Sticky, Fixed & Floating Buttons trunk, at floating-button.php

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