settings = new M365_Login_Settings(); $this->graph = new M365_Login_Graph( $this->settings ); $this->auth = new M365_Login_Auth( $this->settings, $this->graph ); $this->sync = new M365_Login_Sync( $this->settings, $this->graph ); $this->button = new M365_Login_Button( $this->settings ); if ( is_admin() ) { $this->admin = new M365_Login_Admin( $this->settings, $this->auth, $this->graph, $this->sync ); } add_filter( 'plugin_action_links_' . plugin_basename( M365_LOGIN_FILE ), array( $this, 'action_links' ) ); } /** * Loads bundled translations. */ public function load_textdomain() { load_plugin_textdomain( 'm365-login', false, dirname( plugin_basename( M365_LOGIN_FILE ) ) . '/languages' ); } /** * Adds a "Settings" link on the plugins screen. * * @param string[] $links Existing links. * @return string[] */ public function action_links( $links ) { $url = admin_url( 'admin.php?page=m365-login' ); array_unshift( $links, '' . esc_html__( 'Settings', 'm365-login' ) . '' ); return $links; } /** * Activation hook: seed defaults and check requirements. */ public static function activate() { if ( version_compare( PHP_VERSION, '7.4', '<' ) ) { deactivate_plugins( plugin_basename( M365_LOGIN_FILE ) ); wp_die( esc_html__( 'M365 Login requires PHP 7.4 or newer.', 'm365-login' ), esc_html__( 'Plugin activation failed', 'm365-login' ), array( 'back_link' => true ) ); } if ( ! function_exists( 'openssl_encrypt' ) ) { deactivate_plugins( plugin_basename( M365_LOGIN_FILE ) ); wp_die( esc_html__( 'M365 Login requires the PHP OpenSSL extension (needed to verify Microsoft token signatures and to encrypt the client secret).', 'm365-login' ), esc_html__( 'Plugin activation failed', 'm365-login' ), array( 'back_link' => true ) ); } $settings = new M365_Login_Settings(); if ( false === get_option( M365_LOGIN_OPTION, false ) ) { add_option( M365_LOGIN_OPTION, $settings->defaults(), '', 'no' ); } } }