version 4.13.0
This commit is contained in:
155
core/components/api/spam/Provider.php
Normal file
155
core/components/api/spam/Provider.php
Normal file
@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* High-level wrapper for interacting with the external API's offered by 3rd-party anti-spam providers.
|
||||
*
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @package ET\Core\API\Spam
|
||||
*/
|
||||
abstract class ET_Core_API_Spam_Provider extends ET_Core_API_Service {
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public $service_type = 'spam';
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function _get_data() {
|
||||
$options = parent::_get_data();
|
||||
|
||||
// return empty array in case of empty name
|
||||
if ( '' === $this->account_name || ! is_string( $this->account_name ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$provider = sanitize_text_field( $this->slug );
|
||||
$account = sanitize_text_field( $this->account_name );
|
||||
|
||||
if ( ! isset( $options['accounts'][ $provider ][ $account ] ) ) {
|
||||
$options['accounts'][ $provider ][ $account ] = array();
|
||||
update_option( 'et_core_api_spam_options', $options );
|
||||
}
|
||||
|
||||
return $options['accounts'][ $provider ][ $account ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether or not an account exists in the database.
|
||||
*
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @param string $provider
|
||||
* @param string $account_name
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function account_exists( $provider, $account_name ) {
|
||||
$all_accounts = self::get_accounts();
|
||||
|
||||
return isset( $all_accounts[ $provider ][ $account_name ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function delete() {
|
||||
self::remove_account( $this->slug, $this->account_name );
|
||||
|
||||
$this->account_name = '';
|
||||
|
||||
$this->_get_data();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the email accounts data from the database.
|
||||
*
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function get_accounts() {
|
||||
$options = (array) get_option( 'et_core_api_spam_options' );
|
||||
|
||||
return isset( $options['accounts'] ) ? $options['accounts'] : array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function get_data_keymap( $keymap = array() ) {
|
||||
return $keymap;
|
||||
}
|
||||
|
||||
abstract public function is_enabled();
|
||||
|
||||
/**
|
||||
* Remove an account
|
||||
*
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @param string $provider
|
||||
* @param string $account_name
|
||||
*/
|
||||
public static function remove_account( $provider, $account_name ) {
|
||||
$options = (array) get_option( 'et_core_api_spam_options' );
|
||||
|
||||
unset( $options['accounts'][ $provider ][ $account_name ] );
|
||||
|
||||
update_option( 'et_core_api_spam_options', $options );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function save_data() {
|
||||
self::update_account( $this->slug, $this->account_name, $this->data );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function set_account_name( $name ) {
|
||||
$this->account_name = $name;
|
||||
$this->data = $this->_get_data();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the data for a provider account.
|
||||
*
|
||||
* @since 4.0.7
|
||||
*
|
||||
* @param string $provider The provider's slug.
|
||||
* @param string $account The account name.
|
||||
* @param array $data The new data for the account.
|
||||
*/
|
||||
public static function update_account( $provider, $account, $data ) {
|
||||
if ( empty( $account ) || empty( $provider ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$options = (array) get_option( 'et_core_api_spam_options' );
|
||||
$provider = sanitize_text_field( $provider );
|
||||
$account = sanitize_text_field( $account );
|
||||
|
||||
self::$_->array_update( $options, "accounts.${provider}.{$account}", $data );
|
||||
|
||||
update_option( 'et_core_api_spam_options', $options );
|
||||
}
|
||||
|
||||
abstract public function verify_form_submission();
|
||||
}
|
Reference in New Issue
Block a user