apply_filters('wu_current_get_site_param', 'site'), 'customer' => apply_filters('wu_current_get_customer_param', 'customer'), 'membership' => apply_filters('wu_current_get_membership_param', 'membership'), ); return wu_get_isset($params, $type, $type); } // end param_key; /** * Returns the URL to manage a site/customer on the front-end or back end. * * @since 2.0.0 * * @param int $id The site ID. * @param string $type The type. Can be either site or customer. * @return string */ public static function get_manage_url($id, $type = 'site') { // Uses hash instead of the ID. $site_hash = \WP_Ultimo\Helpers\Hash::encode($id, $type); if (!is_admin()) { $current_url = rtrim((string) wu_get_current_url(), '/'); $url_param = self::param_key($type); /* * Check if the current URL already has a site parameter and remove it. */ if (strpos($current_url, '/' . $url_param . '/') !== false) { $current_url = preg_replace('/\/' . $url_param . '\/(.+)/', '/', $current_url); } // end if; $pretty_url = $current_url . '/' . $url_param . '/' . $site_hash; $manage_site_url = get_option('permalink_structure') ? $pretty_url : add_query_arg($url_param, $site_hash); } else { $manage_site_url = get_admin_url($id); } // end if; /** * Allow developers to modify the manage site URL parameters. * * @since 2.0.9 * * @param string $manage_site_url The manage site URL. * @param int $id The site ID. * @param string $site_hash The site hash. * @return string The modified manage URL. */ return apply_filters("wu_current_{$type}_get_manage_url", $manage_site_url, $id, $site_hash); } // end get_manage_url; /** * Loads the current site and makes it available. * * @since 2.0.0 * @return void */ public function load_currents() { $site = false; /** * On the front-end, we need to check for url overrides. */ if (!is_admin()) { /* * By default, we'll use the `site` parameter. */ $site_url_param = self::param_key('site'); $site_hash = wu_request($site_url_param, get_query_var('site_hash')); $site_from_url = wu_get_site_by_hash($site_hash); if ($site_from_url) { $this->site_set_via_request = true; $site = $site_from_url; } // end if; } else { $site = wu_get_current_site(); } // end if; if ($site) { $this->set_site($site); } // end if; $customer = wu_get_current_customer(); /** * On the front-end, we need to check for url overrides. */ if (!is_admin()) { /* * By default, we'll use the `site` parameter. */ $customer_url_param = self::param_key('customer'); $customer_from_url = wu_get_customer(wu_request($customer_url_param, 0)); if ($customer_from_url) { $this->customer_set_via_request = true; $customer = $customer_from_url; } // end if; } // end if; $this->set_customer($customer); $membership = false; /* * By default, we'll use the `membership` parameter. */ $membership_url_param = self::param_key('membership'); $membership_hash = wu_request($membership_url_param, get_query_var('membership_hash')); if ($membership_hash) { $this->membership_set_via_request = true; $membership = wu_get_membership_by_hash($membership_hash); } elseif ($site) { $membership = $site->get_membership(); } // end if; if ($customer && !$membership) { $memberships = (array) $customer->get_memberships(); $membership = wu_get_isset($memberships, 0, false); } // end if; $this->set_membership($membership); } // end load_currents; /** * Get the current site instance. * * @since 2.0.0 * @return \WP_Ultimo\Models\Site */ public function get_site() { return $this->site; } // end get_site; /** * Set the current site instance. * * @since 2.0.0 * @param \WP_Ultimo\Models\Site $site The current site instance. * @return void */ public function set_site($site) { /** * Allow developers to modify the default behavior and set * the current site differently. * * @since 2.0.9 * * @param \WP_Ultimo\Models\Site $site The current site to set. * @param self The Current class instance. * @return \WP_Ultimo\Models\Site */ $site = apply_filters('wu_current_set_site', $site, $this); $this->site = $site; } // end set_site; /** * Get wether or not the site was set via request. * * @since 2.0.0 * @return boolean */ public function is_site_set_via_request() { return $this->site_set_via_request; } // end is_site_set_via_request; /** * Get the current customer instance. * * @since 2.0.0 * @return \WP_Ultimo\Models\Customer */ public function get_customer() { return $this->customer; } // end get_customer; /** * Set the current customer instance. * * @since 2.0.0 * @param \WP_Ultimo\Models\Customer $customer The current customer instance. * @return void */ public function set_customer($customer) { /** * Allow developers to modify the default behavior and set * the current customer differently. * * @since 2.0.9 * * @param \WP_Ultimo\Models\Customer $customer The current customer to set. * @param self The Current class instance. * @return \WP_Ultimo\Models\Customer */ $customer = apply_filters('wu_current_set_customer', $customer, $this); $this->customer = $customer; } // end set_customer; /** * Get the current membership instance. * * @since 2.0.18 * @return \WP_Ultimo\Models\Membership */ public function get_membership() { return $this->membership; } // end get_membership; /** * Set the current membership instance. * * @since 2.0.18 * @param \WP_Ultimo\Models\Membership $membership The current membership instance. * @return void */ public function set_membership($membership) { /** * Allow developers to modify the default behavior and set * the current membership differently. * * @since 2.0.18 * * @param \WP_Ultimo\Models\Membership $membership The current membership to set. * @param self The Current class instance. * @return \WP_Ultimo\Models\Membership */ $membership = apply_filters('wu_current_set_membership', $membership, $this); $this->membership = $membership; } // end set_membership; /** * Get wether or not the membership was set via request. * * @since 2.0.18 * @return boolean */ public function is_membership_set_via_request() { return $this->membership_set_via_request; } // end is_membership_set_via_request; } // end class Current;