public static function deleteTransient($key)
 {
     $transient_settings = RublonHelper::getSettings('transient');
     if (!empty($transient_settings[$key])) {
         unset($transient_settings[$key]);
         RublonHelper::saveSettings($transient_settings, 'transient');
     }
 }
 /**
  * Update Rublon plugin settings using 'systemToken' and 'secretKey' from
  * successfully registered project
  */
 private function updateRublonSettings()
 {
     $settings = RublonHelper::getSettings();
     $settings['rublon_system_token'] = $this->getSystemToken();
     $settings['rublon_secret_key'] = $this->getSecretKey();
     $this->_clearConfig();
     RublonHelper::saveSettings($settings, 'main');
     do_action('rublon_save_settings', $settings, 'main');
 }
 /**
  * Constructor
  * 
  * @throws RublonException
  */
 public function __construct()
 {
     $rublon_config = apply_filters('rublon_get_settings', RublonHelper::getSettings());
     if (!empty($rublon_config['rublon_system_token']) and !empty($rublon_config['rublon_secret_key'])) {
         parent::__construct();
         $this->rublon = new Rublon2FactorWordPress($rublon_config['rublon_system_token'], $rublon_config['rublon_secret_key']);
     } else {
         throw new RublonException('Missing main site system token and secret key.');
     }
 }
 /**
  * Get minimum protection type for given role.
  * If the protection type saved in settings is not available
  * for this consumer, then get the next available lower protection type.
  * 
  * @param string $role
  * @return string
  */
 static function getRoleProtectionType($role)
 {
     $settings = RublonHelper::getSettings('additional');
     $role_id = RublonHelper::prepareRoleId($role);
     if (isset($settings[$role_id])) {
         return self::getMinimumProtectionType($settings[$role_id]);
     } else {
         return RublonHelper::PROTECTION_TYPE_NONE;
     }
 }
 private function removeOldRublonTransients()
 {
     $transient_settings = RublonHelper::getSettings('transient');
     $new_transient_settings = array();
     foreach ($transient_settings as $key => $setting) {
         if ($setting[Rublon_Transients::EXPIRES_KEY] >= time()) {
             $new_transient_settings[$key] = $setting;
         }
     }
     RublonHelper::saveSettings($new_transient_settings, 'transient');
 }
        public function apiRegistration()
        {
            $current_user = wp_get_current_user();
            $email = RublonHelper::getUserEmail($current_user);
            $selector = '#wpadminbar';
            $content = '<h3>' . __('Rublon API registration', 'rublon') . '</h3>';
            $content .= '<div class="rublon-apireg-half-column rublon-apireg-description">';
            $content .= '<p>' . __('Rublon Account Security works by talking to the Rublon API. This requires an API key, which needs to be generated specifically for your website.', 'rublon') . '</p>';
            $content .= '<p>' . sprintf(__('Due to security reasons, this requires a registration with your email address: <strong>%s</strong>. In order to register with a different email address, change it in your <a href="%s">profile settings</a>.', 'rublon'), $email, admin_url('profile.php')) . '</p>';
            $content .= '<fieldset class="rublon-apireg-fieldset"><label for="rublon-apireg-terms-agreed">' . '<input type="checkbox" id="rublon-apireg-terms-agreed" name="apiregTermsAgreed" value="1" />' . sprintf(__('I agree to the <a href="%s" target="_blank">Rublon API Terms of Service</a>', 'rublon'), 'https://developers.rublon.com/54/Terms-of-Service') . '</fieldset>';
            $content .= '<fieldset class="rublon-apireg-fieldset"><label for="rublon-apireg-newsletter-signup">' . '<input type="checkbox" id="rublon-apireg-newsletter-signup" name="apiregNewsletterSignup" value="1" />' . __('Subscribe to our newsletter', 'rublon') . '</fieldset>';
            $content .= '</div>';
            $content .= '<div class="rublon-apireg-half-column rublon-apireg-image"><img src="' . RUBLON2FACTOR_PLUGIN_URL . '/assets/images/rublon_visual.gif" class="rublon-apireg-visual rublon-image" /></div>';
            $content .= $this->_apireg_form;
            $options = array('content' => $content, 'position' => array('edge' => 'top', 'align' => 'center'), 'pointerClass' => 'wp-pointer rublon-apireg-pointer', 'pointerClassSelector' => '.wp-pointer.rublon-apireg-pointer', 'showFunction' => 'showApiRegPointer');
            $dismiss_nonce = wp_create_nonce(self::API_REGISTRATION_DISMISSED);
            $buttons = array('button1' => array('text' => __('Cancel', 'rublon'), 'function' => 'RublonWP.pointers.apiReg.answer("no", ' . json_encode($dismiss_nonce) . ')', 'id' => 'rublon-apireg-button-cancel', 'close_on_click' => true), 'button2' => array('text' => __('Activate', 'rublon'), 'function' => 'RublonWP.pointers.apiReg.answer("yes", ' . json_encode($dismiss_nonce) . ')', 'additional_class' => 'disabled', 'id' => 'rublon-apireg-button-activate'), 'placement' => array('additional_class' => 'rublon-apireg-buttons', 'append_to' => '.rublon-apireg-description'), 'appearance' => array('connection' => 'before'));
            $other_settings = RublonHelper::getSettings('other');
            if (!empty($other_settings[self::API_REGISTRATION_DISMISSED])) {
                $event_binding = '
			 		$(document).ready(function() {
						RublonWP.pointers.apiReg.show = showApiRegPointer;
						RublonWP.pointers.apiReg.prepareHidden();
					});
				';
            } else {
                $event_binding = '
					if (rublon_pointer_options.position && rublon_pointer_options.position.defer_loading) {
						$(window).bind("load.wp-pointers", function() {
							RublonWP.pointers.apiReg.show = showApiRegPointer;
							showApiRegPointer();
							RublonWP.pointers.apiReg.addBehaviour();
							RublonWP.pointers.disableClicks();
						});
					} else {
						$(document).ready(function() {
							RublonWP.pointers.apiReg.show = showApiRegPointer;
							showApiRegPointer();
							RublonWP.pointers.apiReg.addBehaviour();
							RublonWP.pointers.disableClicks();
						});
					}
				';
            }
            $constants_binding = '
				RublonWP.pointers.apiReg.DISMISSED_ACTION = ' . json_encode(self::AJAX_API_REGISTRATION_ACTION) . ';
				RublonWP.pointers.apiReg.BUTTON_ACTIVATE_SELECTOR = "#" + ' . json_encode($buttons['button2']['id']) . ';
			';
            $bindings = array($event_binding, $constants_binding);
            $this->_printPointer($selector, $options, $buttons, $bindings);
        }
 public static function getInstance()
 {
     if (empty(self::$instance)) {
         $additional_settings = RublonHelper::getSettings('additional');
         $current_user = wp_get_current_user();
         self::$instance = new self(RublonHelper::getRublon(), RublonHelper::getUserId($current_user), RublonHelper::getUserEmail($current_user), $logout_listener = RublonHelper::isLogoutListenerEnabled());
         // Embed consumer script
         if (RublonHelper::isSiteRegistered()) {
             add_action('wp_footer', array(self::$instance, 'renderConsumerScript'), PHP_INT_MAX);
             add_action('admin_footer', array(self::$instance, 'renderConsumerScript'), PHP_INT_MAX);
         }
     }
     return self::$instance;
 }
function rublon2factor_anonymous_stats_agreement()
{
    $post = $_POST;
    $other_settings = RublonHelper::getSettings('other');
    if (!empty($post['nonce']) && wp_verify_nonce($post['nonce'], Rublon_Pointers::ANONYMOUS_STATS_ALLOWED)) {
        $other_settings[Rublon_Pointers::ANONYMOUS_STATS_ALLOWED] = $post['answer'];
        RublonHelper::saveSettings($other_settings, 'other');
        if ($post['answer'] == RublonHelper::YES) {
            try {
                RublonHelper::notify(array('msg' => 'Preliminary statistics from a WordPress site.'), array('message-type' => RublonHelper::RUBLON_NOTIFY_TYPE_STATS));
            } catch (Exception $e) {
                // Do nothing.
            }
        }
    }
}
 /**
  * Retrieve auth cookie params (if they're set)
  *
  * @return array
  */
 private static function _getAuthCookieParams()
 {
     $cookie_params = array();
     $settings = RublonHelper::getSettings();
     if (!empty($settings['wp_cookie_params'])) {
         $cookie_params = $settings['wp_cookie_params'];
     }
     return $cookie_params;
 }
function rublon2factor_render_buffered_confirmation_time()
{
    $additional_settings = RublonHelper::getSettings('additional');
    $offSelected = '';
    $onSelected = '';
    echo '<p class="rublon-settings-desc">' . __('User\'s confirmations can be remembered for selected amount of time. Set 0 to disable.', 'rublon') . '</p>';
    $fieldName = RublonHelper::RUBLON_ADDITIONAL_SETTINGS_KEY . '[' . RublonFeature::BUFFERED_CONFIRMATION_OPTION_KEY . ']';
    printf('<input type="number" name="%s" value="%s" style="width:5em" /> %s', esc_attr($fieldName), esc_attr(RublonFeature::getBufferedConfirmationOptionValue()), __('minutes', 'rublon'));
}
 /**
  * Perform single site registration.
  * 
  * Register one of network's sites in Rublon and save
  * System Token and Secret Key into the site's individual
  * options table. 
  * 
  * @param WP_User $user WordPress user object
  * @return boolean True if registration was successful
  */
 public static function performSiteRegistration()
 {
     try {
         require_once dirname(__FILE__) . '/libs/RublonImplemented/RublonSubprojectRegistrationWordPress.php';
         // Create a RublonSubprojectRegistration instance
         // and register the site
         $site_registration = new RublonSubprojectRegistrationWordPress();
         $response = $site_registration->register();
         // Save the received settings upon success
         $settings = RublonHelper::getSettings();
         $settings['rublon_system_token'] = $response['system_token'];
         $settings['rublon_secret_key'] = $response['secret_key'];
         RublonHelper::saveSettings($settings);
     } catch (Exception $e) {
         // Cannot register the site
         return false;
     }
     return !empty($response);
 }