/home/techb158/primomovers.ca/wp-content/plugins/optinmonster/OMAPI
Edit: /home/techb158/primomovers.ca/wp-content/plugins/optinmonster/OMAPI/Validate.php (9280B)
set();
// Possibly validate our API credentials.
$this->maybe_validate();
// Add validation messages.
add_action( 'admin_notices', array( $this, 'notices' ) );
// Add nonce check to dismiss-wp-pointer for the "please connect nag" dismissal.
add_action( 'wp_ajax_dismiss-wp-pointer', array( $this, 'validate_please_connect_notice_dismiss' ), 0 );
}
/**
* Sets our object instance and base class instance.
*
* @since 1.0.0
*/
public function set() {
self::$instance = $this;
$this->base = OMAPI::get_instance();
}
/**
* Maybe validate our API credentials if the transient has expired.
*
* @since 1.0.0
*/
public function maybe_validate() {
// Check to see if welcome options have been set. If not, let's delay this check for a day.
// Also set a transient so that we know the plugin has been activated.
$options = $this->base->get_option();
if ( empty( $options['welcome']['status'] ) || 'welcomed' !== $options['welcome']['status'] ) {
set_transient( '_omapi_validate', true, DAY_IN_SECONDS );
return;
}
// Check if the transient has expired.
if ( false !== get_transient( '_omapi_validate' ) ) {
return;
}
// Validate API.
$this->validate();
// Provide action to refresh optins.
do_action( 'optin_monster_api_validate_api' );
}
/**
* Validate API credentials.
*
* @since 1.0.0
*/
public function validate() {
$creds = $this->base->get_api_credentials();
if (
empty( $creds['apikey'] )
&& empty( $creds['user'] )
&& empty( $creds['key'] )
) {
return;
}
// Check for new apikey and only use the old user/key if we don't have it.
if ( empty( $creds['apikey'] ) ) {
$api = new OMAPI_Api(
'validate/',
array(
'user' => ! empty( $creds['user'] ) ? $creds['user'] : '',
'key' => ! empty( $creds['key'] ) ? $creds['key'] : '',
)
);
} else {
$api = new OMAPI_Api( 'verify/', array( 'apikey' => $creds['apikey'] ) );
}
$ret = $api->request();
if ( is_wp_error( $ret ) ) {
$option = $this->base->get_option();
$type = $ret->get_error_code();
switch ( $type ) {
case 'missing':
case 'auth':
// Set option values.
$option['is_invalid'] = true;
$option['is_expired'] = false;
$option['is_disabled'] = false;
break;
case 'disabled':
// Set option values.
$option['is_invalid'] = false;
$option['is_expired'] = false;
$option['is_disabled'] = true;
break;
case 'expired':
// Set option values.
$option['is_invalid'] = false;
$option['is_expired'] = true;
$option['is_disabled'] = false;
break;
default:
break;
}
// Update option.
update_option( 'optin_monster_api', $option );
// Set our transient to run again in an hour.
set_transient( '_omapi_validate', true, HOUR_IN_SECONDS );
} else {
set_transient( '_omapi_validate', true, DAY_IN_SECONDS );
}
}
/**
* Outputs any validation notices.
*
* @since 1.0.0
*/
public function notices() {
global $pagenow;
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
$page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
$option = $this->base->get_option();
if ( isset( $option['is_invalid'] ) && $option['is_invalid'] ) {
if ( 'optin-monster-dashboard' !== $page ) {
if ( ! OMAPI_Partners::has_partner_url() ) {
echo '
';
}
}
} elseif ( isset( $option['is_disabled'] ) && $option['is_disabled'] ) {
echo '
';
} elseif ( isset( $option['is_expired'] ) && $option['is_expired'] ) {
echo '
';
} else {
if ( $this->should_user_see_connect_nag() ) {
echo '
';
}
}
}
/**
* Script to hide the please connect nag
*/
public function hide_connect_notice_script() {
?>
base->menu->is_om_page()
|| 'index.php' === $pagenow
|| $this->base->get_api_credentials()
) {
return false;
}
// Get array list of dismissed pointers for current user and convert it to array.
$dismissed_pointers = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
// Check if our pointer is not among dismissed ones and that the user should see this.
if (
! in_array( 'omapi_please_connect_notice', $dismissed_pointers, true )
&& current_user_can( 'activate_plugins' )
) {
// Add footer script to save when user dismisses.
add_action( 'admin_print_footer_scripts', array( $this, 'hide_connect_notice_script' ) );
return true;
}
return false;
}
/**
* Validates the please connect notice dismissal.
*
* @since 2.16.0
*
* @return void
*/
public function validate_please_connect_notice_dismiss() {
if ( isset( $_POST['pointer'] ) && 'omapi_please_connect_notice' !== $_POST['pointer'] ) {
return;
}
check_ajax_referer( 'dismiss_pointer' );
}
}