options = $options; } /** * @return string * * @throws RuntimeException */ public function get_db_version() { $version = $this->options->get_twofas_plugin_version(); if ( $version ) { return $version; } if ( $this->is_fresh_installation() ) { return '0'; } if ( $this->is_initial_release() ) { return '1.0.0'; } throw new RuntimeException( 'inconsistent-data' ); } /** * @return string */ public function get_source_code_version() { return TWOFAS_PLUGIN_VERSION; } public function update_db_version() { $this->options->set_twofas_plugin_version( $this->get_source_code_version() ); } /** * @return bool */ private function is_fresh_installation() { $not_allowed_options = array( Options_Storage::TWOFAS_EMAIL, Options_Storage::TWOFAS_INTEGRATION_LOGIN, Options_Storage::TWOFAS_KEY_TOKEN, Options_Storage::TWOFAS_ENCRYPTION_KEY, Options_Storage::TWOFAS_PLUGIN_STATUS, Options_Storage::TWOFAS_PLAN_KEY, Options_Storage::TWOFAS_PLUGIN_VERSION, OAuth_Storage::TWOFAS_OAUTH_TOKEN_SETUP_KEY, OAuth_Storage::TWOFAS_OAUTH_TOKEN_WORDPRESS_KEY, ); foreach ( $not_allowed_options as $option ) { if ( false !== get_option( $option ) ) { return false; } } return true; } /** * @return bool */ private function is_initial_release() { $required_options = array( Options_Storage::TWOFAS_EMAIL, Options_Storage::TWOFAS_PASSWORD, Options_Storage::TWOFAS_INTEGRATION_LOGIN, Options_Storage::TWOFAS_KEY_TOKEN, Options_Storage::TWOFAS_ENABLED, ); foreach ( $required_options as $option ) { if ( false === get_option( $option ) ) { return false; } } return true; } }