PluginProbe
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel / 1.8.0
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel v1.8.0
1.8.0 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 All 27 releases
flywp / flywp.php

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

202 lines 4.9 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.8.0
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.8.0';
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 FlyWP\StaticSite\Bootstrap::install();
92 }
93
94 /**
95 * Plugin deactivation hook.
96 *
97 * @return void
98 */
99 public function deactivate() {
100 $timestamp = wp_next_scheduled( FlyWP\Api\UpdatesData::CRON_HOOK );
101 if ( $timestamp ) {
102 wp_unschedule_event( $timestamp, FlyWP\Api\UpdatesData::CRON_HOOK );
103 }
104 }
105
106 /**
107 * Initialize plugin.
108 *
109 * @return void
110 */
111 public function init_plugin() {
112 // Loaded ahead of the API-key gate below, as it does not use the API key. It answers
113 // one POST path and does nothing on any other request.
114 new FlyWP\Frontend\MagicLogin();
115
116 // The static site CLI commands do not use the API key.
117 FlyWP\StaticSite\Bootstrap::register_cli();
118
119 if ( ! $this->has_key() ) {
120 $this->add_action( 'admin_notices', 'admin_notice' );
121
122 return;
123 }
124
125 if ( is_admin() ) {
126 $this->admin = new FlyWP\Admin();
127 } else {
128 $this->frontend = new FlyWP\Frontend();
129 }
130
131 $this->router = new FlyWP\Router();
132 $this->rest = new FlyWP\Api();
133 $this->fastcgi = new FlyWP\Fastcgi_Cache();
134 $this->opcache = new FlyWP\Opcache();
135 $this->flyapi = new FlyWP\FlyApi();
136 $this->email = new FlyWP\Email();
137 $this->optimize = new FlyWP\Optimizations();
138 $this->litespeed = new FlyWP\Litespeed();
139 $this->updates_data = new FlyWP\Api\UpdatesData();
140 $this->static_site = new FlyWP\StaticSite\Bootstrap();
141 }
142
143 /**
144 * Show admin notice if API key is not set.
145 *
146 * @return void
147 */
148 public function admin_notice() {
149 $message = __( 'Missing FlyWP API key, plugin requires an API key.', 'flywp' );
150
151 echo '<div class="notice notice-error"><p>' . esc_html( $message ) . '</p></div>';
152 }
153
154 /**
155 * Check if API key is set.
156 *
157 * @return bool
158 */
159 public function has_key() {
160 return FLYWP_API_KEY !== '';
161 }
162
163 /**
164 * Get API key.
165 *
166 * @return string
167 */
168 public function get_key() {
169 return FLYWP_API_KEY;
170 }
171
172 /**
173 * Public key used to verify magic-login tokens.
174 *
175 * Set as a constant on classic WordPress. On Bedrock it may only be present in the
176 * environment, so fall back to `getenv()`.
177 *
178 * @return string
179 */
180 public function get_login_public_key() {
181 if ( FLYWP_LOGIN_PUBLIC_KEY !== '' ) {
182 return FLYWP_LOGIN_PUBLIC_KEY;
183 }
184
185 $from_env = getenv( 'FLYWP_LOGIN_PUBLIC_KEY' );
186
187 return $from_env === false ? '' : $from_env;
188 }
189 }
190
191 /**
192 * Returns the main instance of FlyWP to prevent the need to use globals.
193 *
194 * @return FlyWP_Plugin
195 */
196 function flywp() {
197 return FlyWP_Plugin::instance();
198 }
199
200 // take off
201 flywp();
202