public function getPersistentParameters()
{
if (!$this->hasRequest()) {
return array();
}
$filterParameters = $this->getFilterParameters();
$context = $this->getRequest()->get('context');
$provider = $this->getRequest()->get('provider');
if (is_array($context) && array_key_exists('value', $context)) {
$context = $context['value'];
}
if (!$provider && array_key_exists('providerName', $filterParameters)) {
if (!$provider && !$context) {
$provider = $filterParameters['providerName']['value'];
}
}
if (!$context && array_key_exists('context', $filterParameters)) {
$context = $filterParameters['context']['value'];
} elseif (!$context) {
$context = $this->pool->getDefaultContext();
}
$providers = $this->pool->getProvidersByContext($context);
// if the context has only one provider, set it into the request
// so the intermediate provider selection is skipped
if (count($providers) == 1 && null === $provider) {
$provider = array_shift($providers)->getName();
$this->getRequest()->query->set('provider', $provider);
}
return array('provider' => $provider, 'context' => $context);
}