api) { $this->api->setKey($api_key); } else { $this->api = new Bridge\API($api_key); } } function checkKey($api_key) { $this->initApi($api_key); $result = $this->api->checkKey(); $result = $this->processResult($result); $this->updateSubscriberCount($result); return $result; } function processResult(array $result) { $state_map = array( 200 => self::MAILPOET_KEY_VALID, 401 => self::MAILPOET_KEY_INVALID, 402 => self::MAILPOET_KEY_EXPIRING ); $update_settings = false; if(!empty($result['code']) && isset($state_map[$result['code']])) { $key_state = $state_map[$result['code']]; $update_settings = true; } else { $key_state = self::MAILPOET_KEY_CHECK_ERROR; } $state = array( 'state' => $key_state, 'data' => !empty($result['data']) ? $result['data'] : null, 'code' => !empty($result['code']) ? $result['code'] : self::CHECK_ERROR_UNKNOWN ); if($update_settings) { Setting::setValue( self::API_KEY_STATE_SETTING_NAME, $state ); } return $state; } function updateSubscriberCount($result) { if(!empty($result['state']) && ($result['state'] === self::MAILPOET_KEY_VALID || $result['state'] === self::MAILPOET_KEY_EXPIRING) ) { return $this->api->updateSubscriberCount(Subscriber::getTotalSubscribers()); } return null; } static function invalidateKey() { Setting::setValue( self::API_KEY_STATE_SETTING_NAME, array('state' => self::MAILPOET_KEY_INVALID) ); } }