providers[$provider_id] = $provider; $this->providerOrders[$priority][$provider_id] = $provider; // Force the providers to be re-sorted. $this->sortedProviders = NULL; if ($global) { $this->globalProviders[$provider_id] = TRUE; } } /** * {@inheritdoc} */ public function isGlobal($provider_id) { return isset($this->globalProviders[$provider_id]); } /** * {@inheritdoc} */ public function getProvider($provider_id) { return isset($this->providers[$provider_id]) ? $this->providers[$provider_id] : NULL; } /** * {@inheritdoc} */ public function getSortedProviders() { if (!isset($this->sortedProviders)) { // Sort the providers according to priority. krsort($this->providerOrders); // Merge nested providers from $this->providers into $this->sortedProviders. $this->sortedProviders = []; foreach ($this->providerOrders as $providers) { $this->sortedProviders = array_merge($this->sortedProviders, $providers); } } return $this->sortedProviders; } }