PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.24
OttoKit: All-in-One Automation Platform v1.0.24
1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Loader.php
suretriggers / src Last commit date
Controllers 2 years ago Integrations 2 years ago Models 3 years ago Traits 3 years ago Loader.php 2 years ago
Loader.php
395 lines
1 <?php
2 /**
3 * Loader.
4 * php version 5.6
5 *
6 * @category Loader
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers;
15
16 use DirectoryIterator;
17 use SureTriggers\Controllers\AuthController;
18 use SureTriggers\Controllers\AutomationController;
19 use SureTriggers\Controllers\EventController;
20 use SureTriggers\Controllers\EventHelperController;
21 use SureTriggers\Controllers\GlobalSearchController;
22 use SureTriggers\Controllers\IntegrationsController;
23 use SureTriggers\Controllers\OptionController;
24 use SureTriggers\Controllers\RestController;
25 use SureTriggers\Controllers\RoutesController;
26 use SureTriggers\Controllers\SettingsController;
27 use SureTriggers\Traits\SingletonLoader;
28 use function add_menu_page;
29 use function add_submenu_page;
30
31 /**
32 * Loader
33 *
34 * @category Loader
35 * @package SureTriggers
36 * @author BSF <username@example.com>
37 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
38 * @link https://www.brainstormforce.com/
39 * @since 1.0.0
40 */
41 class Loader {
42
43
44
45 use SingletonLoader;
46
47 /**
48 * Constructor
49 *
50 * @since 1.0.0
51 */
52 public function __construct() {
53 register_activation_hook( SURE_TRIGGERS_FILE, [ $this, 'st_activate' ] );
54
55 $this->define_constants();
56 add_action( 'plugins_loaded', [ $this, 'initialize_core' ] );
57 // Admin Menu.
58 add_action( 'admin_menu', [ $this, 'admin_menu' ] );
59 add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
60 add_action( 'admin_init', [ $this, 'reset_plugin' ] );
61
62 add_filter( 'plugin_action_links_' . plugin_basename( SURE_TRIGGERS_FILE ), [ $this, 'add_settings_link' ] );
63 add_action( 'admin_init', [ $this, 'redirect_after_activation' ] );
64
65 add_action( 'admin_notices', [ $this, 'display_notice' ] );
66
67 add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ] );
68 }
69
70 /**
71 * Adding dashboard widget.
72 *
73 * @return void
74 */
75 public function add_dashboard_widgets() {
76 if ( isset( OptionController::$options['secret_key'] ) ) {
77 return;
78 }
79
80 wp_add_dashboard_widget(
81 'suretriggers_dashboard_widget',
82 'Please Connect SureTriggers',
83 [ $this, 'dashboard_widget_display' ],
84 '',
85 '',
86 'side',
87 'high'
88 );
89 }
90
91 /**
92 * Dashboard widget callback.
93 *
94 * @return void
95 */
96 public function dashboard_widget_display() { ?>
97 <div>
98 <p> <?php esc_html_e( 'Please connect to or create your SureTriggers account.', 'suretriggers' ); ?></p>
99 <p> <?php esc_html_e( 'This will enable you to connect your various plugins, and apps together and automate repetitive tasks.', 'suretriggers' ); ?> </p>
100 <a href="<?php echo esc_url( admin_url( 'admin.php?page=suretriggers' ) ); ?>" class="button button-primary"> <?php esc_html_e( 'Get Started', 'suretriggers' ); ?> </a>
101 </div>
102 <?php
103 }
104
105 /**
106 * Display notice.
107 *
108 * @return void
109 */
110 public function display_notice() {
111 if ( isset( OptionController::$options['secret_key'] ) ) {
112 return;
113 }
114 ?>
115 <div class="notice notice-success" style="padding-bottom: 15px;">
116 <p>
117 <strong>
118 <?php esc_html_e( 'Connect your plugins and apps together with SureTriggers', 'suretriggers' ); ?>
119 <span style="transform: rotate(-90deg); font-size: 15px;" class="dashicons dashicons-admin-plugins"></span>
120 </strong>
121 </p>
122 <p> <?php esc_html_e( 'Please connect to or create your SureTriggers account. This will enable you to connect your various plugins and apps together and automate repetitive tasks.', 'suretriggers' ); ?> </p>
123
124 <a href="<?php echo esc_url( admin_url( 'admin.php?page=suretriggers' ) ); ?>" class="button button-primary"> <?php esc_html_e( 'Get Started With SureTriggers', 'suretriggers' ); ?> </a>
125 <a href="https://suretriggers.com/" class="button button-secondary"> <?php esc_html_e( 'Learn More', 'suretriggers' ); ?> </a>
126 </div>
127 <?php
128 }
129
130 /**
131 * Redirect user after plugin activation.
132 *
133 * @return void
134 */
135 public function redirect_after_activation() {
136 $is_redirect = get_transient( 'st-redirect-after-activation' );
137 if ( $is_redirect ) {
138 delete_transient( 'st-redirect-after-activation' );
139 $url = get_admin_url() . 'admin.php?page=suretriggers';
140 wp_safe_redirect( $url );
141 die;
142 }
143 }
144
145 /**
146 * Adding setting link.
147 *
148 * @param array $links links.
149 * @return array
150 */
151 public function add_settings_link( array $links ) {
152 $url = get_admin_url() . 'admin.php?page=suretriggers';
153 $setting_option = get_option( 'suretrigger_options' );
154 if ( isset( $setting_option ) && ! empty( $setting_option ) ) {
155 $settings_link = '<a href="' . $url . '">' . __( 'Dashboard', 'suretriggers' ) . '</a>';
156 } else {
157 $settings_link = '<a href="' . $url . '">' . __( 'Connect', 'suretriggers' ) . '</a>';
158 }
159 $links[] = $settings_link;
160 return $links;
161 }
162
163 /**
164 * Define constants
165 *
166 * @return void
167 * @since 1.0.0
168 */
169 public function define_constants() {
170 $sass_url = 'https://app.suretriggers.com';
171 $api_url = 'https://api.suretriggers.com';
172 $webhook_url = 'https://webhook.suretriggers.com';
173
174 define( 'SURE_TRIGGERS_BASE', plugin_basename( SURE_TRIGGERS_FILE ) );
175 define( 'SURE_TRIGGERS_DIR', plugin_dir_path( SURE_TRIGGERS_FILE ) );
176 define( 'SURE_TRIGGERS_URL', plugins_url( '/', SURE_TRIGGERS_FILE ) );
177 define( 'SURE_TRIGGERS_VER', '1.0.24' );
178 define( 'SURE_TRIGGERS_DB_VER', '1.0.24' );
179 define( 'SURE_TRIGGERS_REST_NAMESPACE', 'sure-triggers/v1' );
180 define( 'SURE_TRIGGERS_SASS_URL', $sass_url . '/wp-json/wp-plugs/v1/' );
181 define( 'SURE_TRIGGERS_SITE_URL', $sass_url );
182 define( 'API_SERVER_URL', $api_url );
183 define( 'WEBHOOK_SERVER_URL', $webhook_url );
184
185 define( 'SURE_TRIGGERS_PAGE', 'SureTrigger' );
186 define( 'SURE_TRIGGERS_AS_GROUP', 'SureTrigger' );
187
188 define( 'SURE_TRIGGERS_ACTION_ERROR_MESSAGE', 'An unexpected error occurred. Something went wrong with the action.' );
189 }
190
191 /**
192 * Flush permalink rules while plugin activation.
193 *
194 * @return void
195 */
196 public function st_activate() {
197 global $wp_rewrite;
198 $wp_rewrite->set_permalink_structure( '/%postname%/' );
199 flush_rewrite_rules(); //phpcs:ignore
200
201 set_transient( 'st-redirect-after-activation', true, 120 );
202 }
203
204 /**
205 * Add main menu
206 *
207 * @since x.x.x
208 *
209 * @return void
210 */
211 public function admin_menu() {
212 $page_title = apply_filters( 'st_menu_page_title', esc_html__( 'SureTriggers', 'suretriggers' ) );
213 $logo = file_get_contents( plugin_dir_path( SURE_TRIGGERS_FILE ) . 'assets/images/STLogo.svg' );
214
215 add_menu_page(
216 $page_title,
217 $page_title,
218 'manage_options',
219 'suretriggers',
220 [ $this, 'menu_callback' ],
221 'data:image/svg+xml;base64,' . base64_encode( $logo ),
222 30.6000
223 );
224 }
225
226 /**
227 * Enqueue the admin scripts
228 *
229 * @param string $hook hook.
230 * @since x.x.x
231 *
232 * @return void
233 */
234 public function enqueue_scripts( $hook = '' ) {
235 if ( ! in_array( $hook, [ 'toplevel_page_suretriggers' ], true ) ) {
236 return;
237 }
238
239 remove_all_actions( 'admin_notices' );
240
241 $file = SURE_TRIGGERS_DIR . 'app/build/main.asset.php';
242 if ( ! file_exists( $file ) ) {
243 return;
244 }
245
246 $asset = require_once $file;
247
248 if ( ! isset( $asset ) ) {
249 return;
250 }
251
252 wp_register_script(
253 'sure-trigger-admin',
254 SURE_TRIGGERS_URL . 'app/build/main.js',
255 array_merge( $asset['dependencies'] ),
256 $asset['version'],
257 true
258 );
259
260 wp_localize_script(
261 'sure-trigger-admin',
262 'sureTriggerData',
263 $this->get_localized_array()
264 );
265 wp_enqueue_script( 'sure-trigger-admin' );
266 wp_enqueue_style( 'sure-trigger-components', SURE_TRIGGERS_URL . 'app/build/style-main.css', [], SURE_TRIGGERS_VER );
267 wp_enqueue_style( 'sure-trigger-css', SURE_TRIGGERS_URL . 'app/build/main.css', [], SURE_TRIGGERS_VER );
268 }
269
270 /**
271 * Get localized array for sure triggers.
272 *
273 * @return array
274 */
275 private function get_localized_array() {
276 $current_user = wp_get_current_user();
277
278 $data = [
279 'siteContent' => [
280 'siteUrl' => str_replace( '/wp-json/', '', get_rest_url() ),
281 'redirectUrl' => get_site_url() . '/wp-admin/themes.php?page=suretriggers',
282 'connectNonce' => wp_create_nonce( 'sure-trigger-connect' ),
283 'connectUrl' => SURE_TRIGGERS_SITE_URL . '/connect-st/connect',
284 'siteTitle' => get_bloginfo( 'name' ),
285 'resetUrl' => base64_encode( wp_nonce_url( admin_url( 'admin.php?st-reset=true' ), 'st-reset-action' ) ),
286 ],
287 'user' => [
288 'name' => $current_user->display_name,
289 'email' => $current_user->user_email,
290 ],
291 'stSaasURL' => trailingslashit( SURE_TRIGGERS_SITE_URL ),
292 'stPluginURL' => plugin_dir_url( SURE_TRIGGERS_FILE ),
293 'integrations' => IntegrationsController::get_activated_integrations(),
294 'enabledIntegrations' => OptionController::get_option( 'enabled_integrations' ),
295 'settingsPageURL' => admin_url( 'themes.php?page=suretriggers' ),
296 'verification_status' => false,
297 'projects' => [],
298 'apiSlug' => SURE_TRIGGERS_REST_NAMESPACE,
299 'isElementorEditor' => ( did_action( 'elementorpro/loaded' ) ) ? Elementor\Plugin::instance()->editor->is_edit_mode() : false,
300 'reConnectSorryMsg' => (bool) OptionController::get_option( 'st_connect_notice_deprecated' ),
301 ];
302
303 if ( current_user_can( 'manage_options' ) ) {
304 $data['siteContent']['accessKey'] = OptionController::get_option( 'secret_key' );
305 $data['siteContent']['connected_email'] = OptionController::get_option( 'connected_email_key' );
306 }
307
308 $settings = OptionController::get_option( 'st_settings' );
309 if ( empty( $settings ) ) {
310 $settings = (object) [];
311 }
312
313 $data['settingsForm'] = SettingsController::get_fields();
314 $data['settings'] = wp_json_encode( $settings );
315 $data['nonce'] = wp_create_nonce( 'st-nonce' );
316 $data['ajaxurl'] = esc_url( admin_url( 'admin-ajax.php', 'relative' ) );
317
318 return apply_filters( 'sure_trigger_control_localize_vars', $data );
319 }
320
321 /**
322 * Menu callback
323 *
324 * @since x.x.x
325 *
326 * @return void
327 */
328 public function menu_callback() {
329 ?>
330 <div id="sure-triggger-entry" class="st-base"></div>
331 <?php
332 }
333
334 /**
335 * Include all files from the folder.
336 *
337 * @param string $folder folder path.
338 * @return void
339 */
340 public function include_all_files( $folder ) {
341 $dir = new DirectoryIterator( $folder );
342 foreach ( $dir as $file ) {
343 if ( ! $file->isDot() ) {
344 if ( $file->isDir() ) {
345 $this->include_all_files( $file->getPathname() );
346 } else {
347 require_once $file->getPathname();
348 }
349 }
350 }
351 }
352
353 /**
354 * Initialize core trigger and actions.
355 *
356 * @return void
357 */
358 public function initialize_core() {
359 /**
360 * Include only integrations root files
361 */
362
363 $this->include_all_files( SURE_TRIGGERS_DIR . 'src/Integrations/' );
364
365 IntegrationsController::load_event_files();
366
367 EventController::get_instance();
368 EventHelperController::get_instance();
369 IntegrationsController::get_instance();
370 GlobalSearchController::get_instance();
371 RestController::get_instance();
372 OptionController::get_instance();
373 AutomationController::get_instance();
374 AuthController::get_instance();
375 RoutesController::get_instance();
376 SettingsController::get_instance();
377 }
378
379 /**
380 * Added option to reset plugin in case of testing.
381 *
382 * @return void
383 */
384 public function reset_plugin() {
385 $is_reset = sanitize_text_field( wp_unslash( isset( $_GET['st-reset'] ) ? $_GET['st-reset'] : false ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
386 $nonce = sanitize_text_field( wp_unslash( isset( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : false ) );
387
388 if ( $nonce && $is_reset && current_user_can( 'manage_options' ) && wp_verify_nonce( $nonce, 'st-reset-action' ) ) {
389 delete_option( 'suretrigger_options' );
390 wp_safe_redirect( admin_url( 'admin.php?page=suretriggers' ) );
391 exit();
392 }
393 }
394 }
395