base ) { return; } if ( ! isset( $_GET['tab'] ) || 'addons' !== $_GET['tab'] ) { return; } if ( ! ( isset( $_GET['action'] ) && isset( $_GET['_wpnonce'] ) && 'disconnect-facebook' === $_GET['action'] && wp_verify_nonce( $_GET['_wpnonce'], 'disconnect-facebook' ) ) ) { return; } $this->clear_fb_credentials(); wp_redirect( Tribe__Settings::instance()->get_url( array( 'tab' => 'addons' ) ) ); die; } public function get_fb_credentials() { $args = array( 'token' => tribe_get_option( 'fb_token' ), 'expires' => tribe_get_option( 'fb_token_expires' ), 'scopes' => tribe_get_option( 'fb_token_scopes' ), ); return (object) $args; } public function has_fb_credentials() { $credentials = $this->get_fb_credentials(); return ! empty( $credentials->token ) && ! empty( $credentials->expires ) && ! empty( $credentials->scopes ); } public function clear_fb_credentials() { tribe_update_option( 'fb_token', null ); tribe_update_option( 'fb_token_expires', null ); tribe_update_option( 'fb_token_scopes', null ); } /** * Given a URL, tack on the parts of the URL that gets used to disconnect Facebook * * @param string $url * * @return string */ public function build_disconnect_facebook_url( $url ) { return wp_nonce_url( add_query_arg( 'action', 'disconnect-facebook', $url ), 'disconnect-facebook' ); } public function is_fb_credentials_valid( $time = null ) { // if the service hasn't enabled oauth for facebook, always assume it is valid if ( ! tribe( 'events-aggregator.main' )->api( 'origins' )->is_oauth_enabled( 'facebook' ) ) { return true; } if ( ! $this->has_fb_credentials() ) { return false; } $credentials = $this->get_fb_credentials(); // Allow passing comparing time if ( is_null( $time ) ) { $time = time(); } return $credentials->expires > $time; } public function do_import_settings_tab() { include_once Tribe__Events__Main::instance()->plugin_path . 'src/admin-views/aggregator/settings.php'; } public function get_all_default_settings() { $origins = array( 'csv', 'gcal', 'ical', 'ics', 'facebook', 'meetup', ); $settings = array(); foreach ( $origins as $origin ) { $settings[ $origin ] = array( 'post_status' => $this->default_post_status( $origin ), 'category' => $this->default_category( $origin ), 'map' => $this->default_map( $origin ), ); } return $settings; } /** * Returns the default update authority for imports * * Origin default settings trump global settings * * @param string $origin Origin * * @return string */ public function default_update_authority( $origin = null ) { $setting = tribe_get_option( 'tribe_aggregator_default_update_authority', self::$default_update_authority ); if ( $origin ) { $setting = tribe_get_option( "tribe_aggregator_default_{$origin}_update_authority", $setting ); } return $setting; } /** * Returns the default post status for imports * * Origin default settings trump global settings * * @param string $origin Origin * * @return string */ public function default_post_status( $origin = null ) { $setting = $setting = tribe_get_option( 'tribe_aggregator_default_post_status', 'publish' ); if ( $origin ) { $origin_setting = tribe_get_option( "tribe_aggregator_default_{$origin}_post_status", $setting ); if ( ! empty( $origin_setting ) ) { $setting = $origin_setting; } } return $setting; } /** * Returns the default category for imports * * Origin default settings trump global settings * * @param string $origin Origin * * @return string */ public function default_category( $origin = null ) { $setting = tribe_get_option( 'tribe_aggregator_default_category', null ); if ( $origin ) { $origin_setting = tribe_get_option( "tribe_aggregator_default_{$origin}_category", $setting ); if ( ! empty( $origin_setting ) ) { $setting = $origin_setting; } } return $setting; } /** * Returns the default map setting for imports * * Origin default settings trump global settings * * @param string $origin Origin * * @return string */ public function default_map( $origin = null ) { $setting = tribe_get_option( 'tribe_aggregator_default_show_map', 'no' ); if ( $origin ) { $origin_setting = tribe_get_option( "tribe_aggregator_default_{$origin}_show_map", $setting ); if ( ! empty( $origin_setting ) ) { $setting = $origin_setting; } } return $setting; } }