PluginProbe
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel / trunk
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel vtrunk
1.7.1 1.7.0 1.6.0 1.5.2 trunk 0.1 0.2.0 0.2.1 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.4.1 0.4.2 0.4.3 1.0 1.1 1.2 1.3.1 1.4.0 1.4.1 1.5.0 1.5.1 All 26 releases
flywp / flywp.php

flywp.php in FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel trunk, at flywp.php

196 lines 4.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: FlyWP
4 * Plugin URI: https://flywp.com
5 * Description: Helper plugin for FlyWP
6 * Version: 1.7.1
7 * Author: FlyWP
8 * Author URI: https://flywp.com/?utm_source=wporg&utm_medium=banner&utm_campaign=author-uri
9 * License: GPL2
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 require __DIR__ . '/vendor/autoload.php';
18
19 use WeDevs\WpUtils\ContainerTrait;
20 use WeDevs\WpUtils\HookTrait;
21 use WeDevs\WpUtils\SingletonTrait;
22
23 /**
24 * Main FlyWP Class.
25 *
26 * @var admin FlyWP\Admin
27 * @var rest FlyWP\Api
28 * @var fastcgi FlyWP\Fastcgi_Cache
29 * @var router FlyWP\Router
30 *
31 * @class FlyWP
32 */
33 final class FlyWP_Plugin {
34
35 use SingletonTrait;
36 use ContainerTrait;
37 use HookTrait;
38
39 /**
40 * Plugin version.
41 *
42 * @var string
43 */
44 public $version = '1.7.1';
45
46 /**
47 * Plugin Constructor.
48 *
49 * @return void
50 */
51 private function __construct() {
52 $this->define_constants();
53
54 $this->add_action( 'plugins_loaded', 'init_plugin' );
55 register_activation_hook( __FILE__, [ $this, 'activate' ] );
56 register_deactivation_hook( __FILE__, [ $this, 'deactivate' ] );
57 }
58
59 /**
60 * Define plugin constants.
61 *
62 * @return void
63 */
64 private function define_constants() {
65 define( 'FLYWP_VERSION', $this->version );
66 define( 'FLYWP_PLUGIN_FILE', __FILE__ );
67 define( 'FLYWP_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
68 define( 'FLYWP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
69 define( 'FLYWP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
70
71 if ( ! defined( 'FLYWP_API_KEY' ) ) {
72 define( 'FLYWP_API_KEY', '' );
73 }
74
75 if ( ! defined( 'FLYWP_LOGIN_PUBLIC_KEY' ) ) {
76 define( 'FLYWP_LOGIN_PUBLIC_KEY', '' );
77 }
78 }
79
80 /**
81 * Plugin activation hook.
82 *
83 * @return void
84 */
85 public function activate() {
86 $router = new FlyWP\Router();
87 $router->register_routes();
88
89 flush_rewrite_rules( false );
90 }
91
92 /**
93 * Plugin deactivation hook.
94 *
95 * @return void
96 */
97 public function deactivate() {
98 $timestamp = wp_next_scheduled( FlyWP\Api\UpdatesData::CRON_HOOK );
99 if ( $timestamp ) {
100 wp_unschedule_event( $timestamp, FlyWP\Api\UpdatesData::CRON_HOOK );
101 }
102 }
103
104 /**
105 * Initialize plugin.
106 *
107 * @return void
108 */
109 public function init_plugin() {
110 // Loaded ahead of the API-key gate below, as it does not use the API key. It answers
111 // one POST path and does nothing on any other request.
112 new FlyWP\Frontend\MagicLogin();
113
114 if ( ! $this->has_key() ) {
115 $this->add_action( 'admin_notices', 'admin_notice' );
116
117 return;
118 }
119
120 if ( is_admin() ) {
121 $this->admin = new FlyWP\Admin();
122 } else {
123 $this->frontend = new FlyWP\Frontend();
124 }
125
126 $this->router = new FlyWP\Router();
127 $this->rest = new FlyWP\Api();
128 $this->fastcgi = new FlyWP\Fastcgi_Cache();
129 $this->opcache = new FlyWP\Opcache();
130 $this->flyapi = new FlyWP\FlyApi();
131 $this->email = new FlyWP\Email();
132 $this->optimize = new FlyWP\Optimizations();
133 $this->litespeed = new FlyWP\Litespeed();
134 $this->updates_data = new FlyWP\Api\UpdatesData();
135 }
136
137 /**
138 * Show admin notice if API key is not set.
139 *
140 * @return void
141 */
142 public function admin_notice() {
143 $message = __( 'Missing FlyWP API key, plugin requires an API key.', 'flywp' );
144
145 echo '<div class="notice notice-error"><p>' . esc_html( $message ) . '</p></div>';
146 }
147
148 /**
149 * Check if API key is set.
150 *
151 * @return bool
152 */
153 public function has_key() {
154 return FLYWP_API_KEY !== '';
155 }
156
157 /**
158 * Get API key.
159 *
160 * @return string
161 */
162 public function get_key() {
163 return FLYWP_API_KEY;
164 }
165
166 /**
167 * Public key used to verify magic-login tokens.
168 *
169 * Set as a constant on classic WordPress. On Bedrock it may only be present in the
170 * environment, so fall back to `getenv()`.
171 *
172 * @return string
173 */
174 public function get_login_public_key() {
175 if ( FLYWP_LOGIN_PUBLIC_KEY !== '' ) {
176 return FLYWP_LOGIN_PUBLIC_KEY;
177 }
178
179 $from_env = getenv( 'FLYWP_LOGIN_PUBLIC_KEY' );
180
181 return $from_env === false ? '' : $from_env;
182 }
183 }
184
185 /**
186 * Returns the main instance of FlyWP to prevent the need to use globals.
187 *
188 * @return FlyWP_Plugin
189 */
190 function flywp() {
191 return FlyWP_Plugin::instance();
192 }
193
194 // take off
195 flywp();
196