public function getCurrentAdminLocale(\Sonata\AdminBundle\Admin\AdminInterface $admin)
{
$locale = '';
if (!$admin->hasRequest()) {
$admin->setRequest($this->getService('request'));
}
if ($subject = $admin->getSubject()) {
return $this->getFieldValue($subject, 'locale');
} elseif ($filter = $admin->getDatagrid()->getFilter('locale')) {
/** @var \Sonata\AdminBundle\Filter\Filter $filter */
$data = $filter->getValue();
if (!$data || !is_array($data) || !array_key_exists('value', $data)) {
$locale = $this->getCurrentLocale();
}
$data['value'] = trim($data['value']);
if (strlen($data['value']) > 0) {
$locale = $data['value'];
}
if (!$locale && method_exists($admin, 'getDefaultLocale')) {
$locale = $admin->getDefaultLocale();
}
}
return $locale;
}