'Status',
'st_outgoing_requests' => 'Outgoing Requests',
];
$current_tab = 'st_system_page';
if ( isset( $_REQUEST['tab'], $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'suretriggers_tab_nonce' ) ) {
if ( array_key_exists( sanitize_key( $_REQUEST['tab'] ), $tabs ) ) {
$current_tab = sanitize_key( $_REQUEST['tab'] );
}
}
?>
isDot() ) {
if ( $file->isDir() ) {
$this->include_all_files( $file->getPathname() );
} else {
require_once $file->getPathname();
}
}
}
}
/**
* Initialize core trigger and actions.
*
* @return void
*/
public function initialize_core() {
/**
* Include only integrations root files
*/
$this->include_all_files( SURE_TRIGGERS_DIR . 'src/Integrations/' );
$this->suretriggers_load_analytics_files();
IntegrationsController::load_event_files();
EventController::get_instance();
IntegrationsController::get_instance();
GlobalSearchController::get_instance();
RestController::get_instance();
OptionController::get_instance();
AutomationController::get_instance();
AuthController::get_instance();
RoutesController::get_instance();
SettingsController::get_instance();
WebhookRequestsController::get_instance();
// SureTriggers Custom Filter data.
add_filter( 'suretriggers_get_iframe_url', [ $this, 'suretriggers_iframe_data' ] );
add_filter( 'suretriggers_is_user_connected', [ $this, 'suretriggers_saas_connected_data' ] );
// Create Webhook Request Log table.
WebhookRequestsController::suretriggers_webhook_request_log_table();
// Schedule the cron jon to retry failed triggers.
WebhookRequestsController::suretriggers_setup_custom_cron();
}
/**
* Added option to reset plugin in case of testing.
*
* @return void
*/
public function reset_plugin() {
$nonce = sanitize_text_field( wp_unslash( isset( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : false ) );
if ( $nonce && wp_verify_nonce( $nonce, 'st-reset-action' ) ) {
$is_reset = sanitize_text_field( wp_unslash( isset( $_GET['st-reset'] ) ? $_GET['st-reset'] : false ) );
if ( $is_reset && current_user_can( 'manage_options' ) ) {
delete_option( 'suretrigger_options' );
wp_safe_redirect( admin_url( 'admin.php?page=suretriggers' ) );
exit();
}
}
}
/**
* Custom Filter data.
*
* @param string $site_url Optional. Site URL to include in the iframe data.
* @return string
*/
public function suretriggers_iframe_data( $site_url = '' ) {
if ( ! current_user_can( 'manage_options' ) ) {
return apply_filters( 'suretriggers_get_iframe_url', [] );
}
$site_url = esc_url_raw( $site_url );
$site_content_data = [
'stSaasURL' => $site_url . 'wp-login',
'stCode' => SaasApiToken::get(),
'baseUrl' => str_replace( '/wp-json/', '', get_rest_url() ),
'resetUrl' => rtrim( base64_encode( wp_nonce_url( admin_url( 'admin.php?st-reset=true' ), 'st-reset-action' ) ), '=' ), // phpcs:ignore
];
$params = [
'st-code' => $site_content_data['stCode'],
'base_url' => $site_content_data['baseUrl'],
'reset_url' => $site_content_data['resetUrl'],
'redirect_url' => $site_url . 'embed-login',
'is_embedded' => true,
];
if ( filter_var( $site_url, FILTER_VALIDATE_URL ) ) {
$iframe_url = add_query_arg( $params, $site_content_data['stSaasURL'] );
} else {
$default_url = trailingslashit( SURE_TRIGGERS_SITE_URL ) . '?path=dashboard';
$iframe_url = add_query_arg( $params, $default_url );
}
return esc_url_raw( $iframe_url );
}
/**
* Custom Filter data to check if user is logged in iframe.
*
* @return bool
*/
public function suretriggers_saas_connected_data() {
if ( ! current_user_can( 'manage_options' ) ) {
return apply_filters( 'suretriggers_is_user_connected', [] );
}
$token = SaasApiToken::get();
if ( '' === $token || null === $token || false === $token || 'connection-denied' === $token ) {
$logged_in = false;
} else {
$logged_in = true;
}
return $logged_in;
}
/**
* Load Analytics.
*
* @since 1.0.0
*
* @return void
*/
public function suretriggers_load_analytics_files() {
if ( is_admin() ) {
require_once SURE_TRIGGERS_DIR . 'inc/lib/astra-notices/class-astra-notices.php';
}
if ( ! class_exists( 'BSF_Analytics_Loader' ) ) {
require_once SURE_TRIGGERS_DIR . 'inc/lib/bsf-analytics/class-bsf-analytics-loader.php';
}
if ( class_exists( 'BSF_Analytics_Loader' ) ) {
$st_bsf_analytics = BSF_Analytics_Loader::get_instance();
$st_bsf_analytics->set_entity(
[
'suretriggers' => [
'product_name' => 'OttoKit',
'path' => SURE_TRIGGERS_DIR . 'inc/lib/bsf-analytics',
'author' => 'OttoKit',
'time_to_display' => '+24 hours',
'deactivation_survey' => [
[
'id' => 'deactivation-survey-suretriggers',
'popup_logo' => SURE_TRIGGERS_URL . 'assets/images/OttoKitIcon.svg',
'plugin_slug' => 'suretriggers',
'plugin_version' => SURE_TRIGGERS_VER,
'popup_title' => __( 'Quick Feedback', 'suretriggers' ),
'support_url' => 'https://ottokit.com/support/',
'popup_description' => __( 'If you have a moment, please share why you are deactivating OttoKit:', 'suretriggers' ),
'show_on_screens' => [ 'plugins' ],
],
],
],
]
);
}
}
}