PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.47
OttoKit: All-in-One Automation Platform v1.0.47
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 2 years ago Traits 3 years ago Loader.php 2 years ago
Loader.php
397 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 global $pagenow;
115 if ( 'index.php' != $pagenow ) {
116 return;
117 }
118 ?>
119 <div class="notice notice-success" style="padding-bottom: 15px;">
120 <p>
121 <strong>
122 <?php esc_html_e( 'Connect your plugins and apps together with SureTriggers', 'suretriggers' ); ?>
123 <span style="transform: rotate(-90deg); font-size: 15px;" class="dashicons dashicons-admin-plugins"></span>
124 </strong>
125 </p>
126 <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>
127
128 <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>
129 <a href="https://suretriggers.com/" class="button button-secondary"> <?php esc_html_e( 'Learn More', 'suretriggers' ); ?> </a>
130 </div>
131 <?php
132 }
133
134 /**
135 * Redirect user after plugin activation.
136 *
137 * @return void
138 */
139 public function redirect_after_activation() {
140 $is_redirect = get_transient( 'st-redirect-after-activation' );
141 if ( $is_redirect ) {
142 delete_transient( 'st-redirect-after-activation' );
143 $url = get_admin_url() . 'admin.php?page=suretriggers';
144 wp_safe_redirect( $url );
145 die;
146 }
147 }
148
149 /**
150 * Adding setting link.
151 *
152 * @param array $links links.
153 * @return array
154 */
155 public function add_settings_link( array $links ) {
156 $url = get_admin_url() . 'admin.php?page=suretriggers';
157 $setting_option = get_option( 'suretrigger_options' );
158 if ( isset( $setting_option ) && ! empty( $setting_option ) ) {
159 $settings_link = '<a href="' . $url . '">' . __( 'Dashboard', 'suretriggers' ) . '</a>';
160 } else {
161 $settings_link = '<a href="' . $url . '">' . __( 'Connect', 'suretriggers' ) . '</a>';
162 }
163 $links[] = $settings_link;
164 return $links;
165 }
166
167 /**
168 * Define constants
169 *
170 * @return void
171 * @since 1.0.0
172 */
173 public function define_constants() {
174 $sass_url = 'https://app.suretriggers.com';
175 $api_url = 'https://api.suretriggers.com';
176 $webhook_url = 'https://webhook.suretriggers.com';
177
178 define( 'SURE_TRIGGERS_BASE', plugin_basename( SURE_TRIGGERS_FILE ) );
179 define( 'SURE_TRIGGERS_DIR', plugin_dir_path( SURE_TRIGGERS_FILE ) );
180 define( 'SURE_TRIGGERS_URL', plugins_url( '/', SURE_TRIGGERS_FILE ) );
181 define( 'SURE_TRIGGERS_VER', '1.0.47' );
182 define( 'SURE_TRIGGERS_DB_VER', '1.0.47' );
183 define( 'SURE_TRIGGERS_REST_NAMESPACE', 'sure-triggers/v1' );
184 define( 'SURE_TRIGGERS_SASS_URL', $sass_url . '/wp-json/wp-plugs/v1/' );
185 define( 'SURE_TRIGGERS_SITE_URL', $sass_url );
186 define( 'API_SERVER_URL', $api_url );
187 define( 'WEBHOOK_SERVER_URL', $webhook_url );
188
189 define( 'SURE_TRIGGERS_PAGE', 'SureTrigger' );
190 define( 'SURE_TRIGGERS_AS_GROUP', 'SureTrigger' );
191
192 define( 'SURE_TRIGGERS_ACTION_ERROR_MESSAGE', 'An unexpected error occurred. Something went wrong with the action.' );
193 }
194
195 /**
196 * Flush permalink rules while plugin activation.
197 *
198 * @return void
199 */
200 public function st_activate() {
201 flush_rewrite_rules(); //phpcs:ignore
202
203 set_transient( 'st-redirect-after-activation', true, 120 );
204 }
205
206 /**
207 * Add main menu
208 *
209 * @since x.x.x
210 *
211 * @return void
212 */
213 public function admin_menu() {
214 $page_title = apply_filters( 'st_menu_page_title', esc_html__( 'SureTriggers', 'suretriggers' ) );
215 $logo = file_get_contents( plugin_dir_path( SURE_TRIGGERS_FILE ) . 'assets/images/STLogo.svg' );
216
217 add_menu_page(
218 $page_title,
219 $page_title,
220 'manage_options',
221 'suretriggers',
222 [ $this, 'menu_callback' ],
223 'data:image/svg+xml;base64,' . base64_encode( $logo ),
224 30.6002
225 );
226 }
227
228 /**
229 * Enqueue the admin scripts
230 *
231 * @param string $hook hook.
232 * @since x.x.x
233 *
234 * @return void
235 */
236 public function enqueue_scripts( $hook = '' ) {
237 if ( ! in_array( $hook, [ 'toplevel_page_suretriggers' ], true ) ) {
238 return;
239 }
240
241 remove_all_actions( 'admin_notices' );
242
243 $file = SURE_TRIGGERS_DIR . 'app/build/main.asset.php';
244 if ( ! file_exists( $file ) ) {
245 return;
246 }
247
248 $asset = require_once $file;
249
250 if ( ! isset( $asset ) ) {
251 return;
252 }
253
254 wp_register_script(
255 'sure-trigger-admin',
256 SURE_TRIGGERS_URL . 'app/build/main.js',
257 array_merge( $asset['dependencies'] ),
258 $asset['version'],
259 true
260 );
261
262 wp_localize_script(
263 'sure-trigger-admin',
264 'sureTriggerData',
265 $this->get_localized_array()
266 );
267 wp_enqueue_script( 'sure-trigger-admin' );
268 wp_enqueue_style( 'sure-trigger-components', SURE_TRIGGERS_URL . 'app/build/style-main.css', [], SURE_TRIGGERS_VER );
269 wp_enqueue_style( 'sure-trigger-css', SURE_TRIGGERS_URL . 'app/build/main.css', [], SURE_TRIGGERS_VER );
270 }
271
272 /**
273 * Get localized array for sure triggers.
274 *
275 * @return array
276 */
277 private function get_localized_array() {
278 $current_user = wp_get_current_user();
279
280 $data = [
281 'siteContent' => [
282 'siteUrl' => str_replace( '/wp-json/', '', get_rest_url() ),
283 'redirectUrl' => get_site_url() . '/wp-admin/themes.php?page=suretriggers',
284 'connectNonce' => wp_create_nonce( 'sure-trigger-connect' ),
285 'connectUrl' => SURE_TRIGGERS_SITE_URL . '/connect-st/connect',
286 'siteTitle' => get_bloginfo( 'name' ),
287 'resetUrl' => base64_encode( wp_nonce_url( admin_url( 'admin.php?st-reset=true' ), 'st-reset-action' ) ),
288 ],
289 'user' => [
290 'name' => $current_user->display_name,
291 'email' => $current_user->user_email,
292 ],
293 'stSaasURL' => trailingslashit( SURE_TRIGGERS_SITE_URL ),
294 'stPluginURL' => plugin_dir_url( SURE_TRIGGERS_FILE ),
295 'integrations' => IntegrationsController::get_activated_integrations(),
296 'enabledIntegrations' => OptionController::get_option( 'enabled_integrations' ),
297 'settingsPageURL' => admin_url( 'themes.php?page=suretriggers' ),
298 'verification_status' => false,
299 'projects' => [],
300 'apiSlug' => SURE_TRIGGERS_REST_NAMESPACE,
301 'isElementorEditor' => ( did_action( 'elementorpro/loaded' ) ) ? Elementor\Plugin::instance()->editor->is_edit_mode() : false,
302 'reConnectSorryMsg' => (bool) OptionController::get_option( 'st_connect_notice_deprecated' ),
303 ];
304
305 if ( current_user_can( 'manage_options' ) ) {
306 $data['siteContent']['accessKey'] = OptionController::get_option( 'secret_key' );
307 $data['siteContent']['connected_email'] = OptionController::get_option( 'connected_email_key' );
308 }
309
310 $settings = OptionController::get_option( 'st_settings' );
311 if ( empty( $settings ) ) {
312 $settings = (object) [];
313 }
314
315 $data['settingsForm'] = SettingsController::get_fields();
316 $data['settings'] = wp_json_encode( $settings );
317 $data['nonce'] = wp_create_nonce( 'st-nonce' );
318 $data['ajaxurl'] = esc_url( admin_url( 'admin-ajax.php', 'relative' ) );
319
320 return apply_filters( 'sure_trigger_control_localize_vars', $data );
321 }
322
323 /**
324 * Menu callback
325 *
326 * @since x.x.x
327 *
328 * @return void
329 */
330 public function menu_callback() {
331 ?>
332 <div id="sure-triggger-entry" class="st-base"></div>
333 <?php
334 }
335
336 /**
337 * Include all files from the folder.
338 *
339 * @param string $folder folder path.
340 * @return void
341 */
342 public function include_all_files( $folder ) {
343 $dir = new DirectoryIterator( $folder );
344 foreach ( $dir as $file ) {
345 if ( ! $file->isDot() ) {
346 if ( $file->isDir() ) {
347 $this->include_all_files( $file->getPathname() );
348 } else {
349 require_once $file->getPathname();
350 }
351 }
352 }
353 }
354
355 /**
356 * Initialize core trigger and actions.
357 *
358 * @return void
359 */
360 public function initialize_core() {
361 /**
362 * Include only integrations root files
363 */
364
365 $this->include_all_files( SURE_TRIGGERS_DIR . 'src/Integrations/' );
366
367 IntegrationsController::load_event_files();
368
369 EventController::get_instance();
370 EventHelperController::get_instance();
371 IntegrationsController::get_instance();
372 GlobalSearchController::get_instance();
373 RestController::get_instance();
374 OptionController::get_instance();
375 AutomationController::get_instance();
376 AuthController::get_instance();
377 RoutesController::get_instance();
378 SettingsController::get_instance();
379 }
380
381 /**
382 * Added option to reset plugin in case of testing.
383 *
384 * @return void
385 */
386 public function reset_plugin() {
387 $is_reset = sanitize_text_field( wp_unslash( isset( $_GET['st-reset'] ) ? $_GET['st-reset'] : false ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
388 $nonce = sanitize_text_field( wp_unslash( isset( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : false ) );
389
390 if ( $nonce && $is_reset && current_user_can( 'manage_options' ) && wp_verify_nonce( $nonce, 'st-reset-action' ) ) {
391 delete_option( 'suretrigger_options' );
392 wp_safe_redirect( admin_url( 'admin.php?page=suretriggers' ) );
393 exit();
394 }
395 }
396 }
397