/**
  * Registers this site to the currently-configured account.
  *
  * @param string $type   The type of website.
  * @param string $sector The sector in which this website operates.
  *
  * @return void
  *
  * @throws Exception an exception triggered by AppEngine.
  *
  * @since 2.1.0
  */
 public static function register_this_site($type, $sector)
 {
     try {
         $params = array('url' => get_option('siteurl'), 'type' => $type, 'sector' => $sector);
         $json_data = NelioABBackend::remote_post(sprintf(NELIOAB_BACKEND_URL . '/customer/%s/site/activate', NelioABAccountSettings::get_customer_id()), $params, true);
         $json_data = json_decode($json_data['body']);
         self::update_nelioab_option('has_a_configured_site', true);
         NelioABAccountSettings::set_site_id($json_data->key->id);
     } catch (Exception $e) {
         self::update_nelioab_option('has_a_configured_site', false);
         throw $e;
     }
 }
 /**
  * PHPDOC
  *
  * @return array PHPDOC
  *
  * @since PHPDOC
  */
 public static function make_credential()
 {
     // Creating the credential
     $result = array();
     $aux = NelioABAccountSettings::get_customer_id();
     if ($aux) {
         $result['customerId'] = $aux;
     }
     $aux = NelioABAccountSettings::get_reg_num();
     if ($aux) {
         $result['registrationNumber'] = $aux;
     }
     $aux = NelioABAccountSettings::get_site_id();
     if ($aux) {
         $result['siteId'] = $aux;
     }
     $result['siteUrl'] = get_option('siteurl');
     return $result;
 }
 public static function generate_html_content()
 {
     require_once NELIOAB_ADMIN_DIR . '/views/account-page.php';
     // Check data against APPENGINE
     $email = NelioABAccountSettings::get_email();
     $reg_num = NelioABAccountSettings::get_reg_num();
     if (NelioABAccountSettings::is_using_free_trial()) {
         $email = '';
         $reg_num = '';
     }
     $sites = array();
     $max_sites = 1;
     try {
         NelioABAccountSettings::check_account_status('now');
     } catch (Exception $e) {
     }
     $current_site_status = NelioABSite::NOT_REGISTERED;
     $error_retrieving_registered_sites = false;
     try {
         $sites_info = NelioABAccountSettings::get_registered_sites_information();
         $max_sites = $sites_info->get_max_sites();
         $sites = $sites_info->get_registered_sites();
         // CHECKING WHETHER WE HAVE INFORMATION ABOUT THIS SITE BEING REGISTERED,
         // EITHER BY ID OR BY URL
         // 1. We check if this user has a registered site whose URL is this site's url
         $registered_site_based_on_url = false;
         foreach ($sites as $site) {
             if ($site->get_url() == get_option('siteurl')) {
                 $registered_site_based_on_url = $site->get_id();
             }
         }
         // 2. We check if the WP installation has a SITE_ID
         // If it does, but it's none of the user's regitered sites,
         // we have a problem, and we'll say the status is INVALID_ID.
         if (NelioABAccountSettings::has_a_configured_site()) {
             $site_id = NelioABAccountSettings::get_site_id();
             $current_site_status = NelioABSite::INVALID_ID;
             foreach ($sites as $site) {
                 if ($site->get_id() == $site_id) {
                     $current_site_status = NelioABSite::ACTIVE;
                 }
             }
         }
         // POSSIBLE RESULTS OF THE PREVIOUS CHECKS:
         // (a) The site is properly registered (== it has a valid ID)
         //if ( NelioABSite::ACTIVE == $current_site_status )
         //	Nothing to do here
         // (b) We have information about an ID that the user, in AE, does not have
         if (NelioABSite::INVALID_ID == $current_site_status) {
             $current_site_status = NelioABSite::NOT_REGISTERED;
             NelioABAccountSettings::fix_registration_info('not-registered');
         }
         // (c) The site is not registered
         if (NelioABSite::NOT_REGISTERED == $current_site_status) {
             if ($registered_site_based_on_url) {
                 $current_site_status = NelioABSite::ACTIVE;
                 NelioABAccountSettings::fix_registration_info('registered', $registered_site_based_on_url);
             }
         }
         // (d) Other scenarios are:
         //   - INACTIVE. We don't care.
         //   - NON_MATCHING_URLS. We no longer use it.
     } catch (Exception $e) {
         $error_retrieving_registered_sites = true;
     }
     // Querying account information
     $user_info = array();
     try {
         $customer_id = NelioABAccountSettings::get_customer_id();
         if (strlen($customer_id) > 0) {
             $url = sprintf(NELIOAB_BACKEND_URL . '/customer/%s', $customer_id);
             $json = NelioABBackend::remote_get($url, true);
             $json = json_decode($json['body']);
             if (isset($user_info['firstname'])) {
                 $user_info['firstname'] = $json->firstname;
             } else {
                 $user_info['firstname'] = '';
             }
             $user_info['subscription_url'] = $json->subscriptionUrl;
             $user_info['subscription_plan'] = $json->subscriptionPlan;
             $user_info['status'] = $json->status;
             $user_info['total_quota'] = intval($json->quotaPerMonth);
             $user_info['quota'] = intval($json->quota + $json->quotaExtra);
         }
         // Agency stuff
         if (isset($json->hasAgency) && $json->hasAgency) {
             $user_info['agency'] = true;
             $user_info['agencyname'] = $json->agencyName;
             $user_info['agencymail'] = $json->agencyEmail;
         } else {
             $user_info['agency'] = false;
             $user_info['agencyname'] = 'Agency Name';
             $user_info['agencymail'] = '*****@*****.**';
         }
     } catch (Exception $e) {
     }
     // Render content
     $title = __('My Account', 'nelioab');
     $view = new NelioABAccountPage($title);
     $view->set_email($email);
     $view->set_email_validity(NelioABAccountSettings::is_email_valid());
     $view->set_reg_num($reg_num);
     $view->set_reg_num_validity(NelioABAccountSettings::is_reg_num_valid());
     $view->set_tac_checked(NelioABAccountSettings::are_terms_and_conditions_accepted());
     $view->set_registered_sites($sites);
     $view->set_max_sites($max_sites);
     $view->set_current_site_status($current_site_status);
     $view->set_user_info($user_info);
     if ($error_retrieving_registered_sites) {
         $view->set_error_retrieving_registered_sites();
     }
     $view->render_content();
     die;
 }
 /**
  * This function registers Nelio tracking scripts.
  *
  * Our tracking scripts are:
  *
  * * `nelioab_appengine_script`: a script pointing to Google Cloud Storage,
  * with all the information about running experiments.
  * * `nelioab_tracking_script`: our tracking script.
  *
  * It also initializes some params that will be used by our tracking
  * script. They'll be available by means of the object `NelioABParams`.
  *
  * @return void
  *
  * @see self::load_tracking_script
  *
  * @since 3.3.2
  */
 public function register_tracking_script()
 {
     wp_register_script('nelioab_appengine_script', '//storage.googleapis.com/' . NELIOAB_BACKEND_NAME . '/' . NelioABAccountSettings::get_site_id() . '.js', array(), NELIOAB_PLUGIN_VERSION);
     wp_register_script('nelioab_tracking_script', nelioab_asset_link('/js/tracking.min.js', false), array('jquery', 'nelioab_appengine_script'), NELIOAB_PLUGIN_VERSION);
     // Prepare some information for our tracking script (such as the page we're in)
     /** @var $aux NelioABAlternativeExperimentController */
     $aux = $this->controllers['alt-exp'];
     $current_id = $this->get_queried_post_id();
     if ($aux->is_post_in_a_post_alt_exp($current_id)) {
         $current_actual_id = intval($aux->get_post_alternative($current_id));
     } elseif ($aux->is_post_in_a_headline_alt_exp($current_id)) {
         $headline_data = $aux->get_headline_experiment_and_alternative($current_id);
         /** @var NelioABAlternative $alternative */
         $alternative = $headline_data['alt'];
         $val = $alternative->get_value();
         $current_actual_id = $val['id'];
     } else {
         $current_actual_id = $current_id;
     }
     $current_page_ids = array('currentId' => $current_id, 'currentActualId' => $current_actual_id);
     // OUTWARDS NAVIGATIONS USING TARGET="_BLANK"
     $misc['useOutwardsNavigationsBlank'] = NelioABSettings::use_outwards_navigations_blank();
     $this->tracking_script_params = array('ajaxurl' => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http'), 'version' => NELIOAB_PLUGIN_VERSION, 'customer' => NelioABAccountSettings::get_customer_id(), 'site' => NelioABAccountSettings::get_site_id(), 'backend' => array('domain' => NELIOAB_BACKEND_DOMAIN, 'version' => NELIOAB_BACKEND_VERSION), 'misc' => $misc, 'sync' => array('headlines' => array()), 'info' => $current_page_ids, 'ieUrl' => preg_replace('/^https?:/', '', NELIOAB_URL . '/ajax/iesupport.php'), 'wasPostRequest' => 'POST' === $_SERVER['REQUEST_METHOD']);
 }