%PDF- %PDF-
Direktori : /home/opti/public_html/stlc/wp-content/plugins/omnisend/includes/Internal/ |
Current File : /home/opti/public_html/stlc/wp-content/plugins/omnisend/includes/Internal/class-options.php |
<?php /** * Omnisend plugin * * @package OmnisendPlugin */ namespace Omnisend\Internal; defined( 'ABSPATH' ) || die( 'no direct access' ); define( 'NOTIFICATION_NOT_SHOWN', 'shown' ); define( 'NOTIFICATION_DELAYED', 'delayed' ); define( 'NOTIFICATION_DISABLED', 'disabled' ); class Options { // omni_send instead of omnisend used to distinct and not interfere with Omnisend for Woo plugin. private const OPTION_API_KEY = 'omni_send_core_api_key'; private const OPTION_BRAND_ID = 'omni_send_core_brand_id'; private const OPTION_STORE_CONNECTED = 'omni_send_core_store_connected'; private const OPTION_LANDING_PAGE_VISITED = 'omni_send_core_landing_page_visited'; private const OPTION_LANDING_PAGE_VISIT_LAST_TIME = 'omni_send_core_landing_page_last_visit_time'; private const OPTION_LANDING_PAGE_NOTIFICATION_STATE = 'omni_send_core_landing_page_notification_state'; public static function get_api_key(): string { $api_key = get_option( self::OPTION_API_KEY ); return is_string( $api_key ) ? $api_key : ''; } public static function get_brand_id(): string { $brand_id = get_option( self::OPTION_BRAND_ID ); return is_string( $brand_id ) ? $brand_id : ''; } public static function set_api_key( $api_key ): bool { if ( ! is_string( $api_key ) ) { return false; } return update_option( self::OPTION_API_KEY, $api_key ); } public static function set_brand_id( $brand_id ): bool { if ( ! is_string( $brand_id ) ) { return false; } return update_option( self::OPTION_BRAND_ID, $brand_id ); } public static function set_store_connected(): bool { return update_option( self::OPTION_STORE_CONNECTED, true ); } public static function is_store_connected(): bool { return boolval( get_option( self::OPTION_STORE_CONNECTED ) ); } public static function is_connected(): bool { return self::is_store_connected() && self::get_api_key(); } public static function get_landing_page_last_visit_time(): int { $last_visit_time = get_option( self::OPTION_LANDING_PAGE_VISIT_LAST_TIME ); return is_numeric( $last_visit_time ) ? intval( $last_visit_time ) : 0; } public static function get_landing_page_notification_state(): string { $notification_state = get_option( self::OPTION_LANDING_PAGE_NOTIFICATION_STATE ); return is_string( $notification_state ) ? $notification_state : NOTIFICATION_NOT_SHOWN; } public static function set_landing_page_visited(): void { $notification_state = get_option( self::OPTION_LANDING_PAGE_NOTIFICATION_STATE, NOTIFICATION_NOT_SHOWN ); $last_visit_time = self::get_landing_page_last_visit_time(); $current_time = time(); if ( $notification_state === NOTIFICATION_NOT_SHOWN ) { $notification_state = NOTIFICATION_DELAYED; } elseif ( $notification_state === NOTIFICATION_DELAYED && ( $current_time - $last_visit_time ) > self::get_notification_delay_time() ) { $notification_state = NOTIFICATION_DISABLED; } update_option( self::OPTION_LANDING_PAGE_NOTIFICATION_STATE, $notification_state ); update_option( self::OPTION_LANDING_PAGE_VISIT_LAST_TIME, $current_time ); update_option( self::OPTION_LANDING_PAGE_VISITED, true ); } public static function get_notification_delay_time(): int { return 7 * DAY_IN_SECONDS; } public static function is_landing_page_visited(): bool { return boolval( get_option( self::OPTION_LANDING_PAGE_VISITED ) ); } public static function disconnect(): void { delete_option( self::OPTION_API_KEY ); delete_option( self::OPTION_BRAND_ID ); delete_option( self::OPTION_STORE_CONNECTED ); delete_option( self::OPTION_LANDING_PAGE_VISITED ); delete_option( self::OPTION_LANDING_PAGE_VISIT_LAST_TIME ); delete_option( self::OPTION_LANDING_PAGE_NOTIFICATION_STATE ); delete_metadata( 'user', '0', UserMetaData::LAST_SYNC, '', true ); } public static function delete_all(): void { self::disconnect(); } }