diff --git a/lib/Alchemy/Phrasea/Helper/Prod.php b/lib/Alchemy/Phrasea/Helper/Prod.php index 162a895090..a681f48dda 100644 --- a/lib/Alchemy/Phrasea/Helper/Prod.php +++ b/lib/Alchemy/Phrasea/Helper/Prod.php @@ -21,82 +21,78 @@ class Prod extends Helper public function get_search_datas() { - $search_datas = array( - 'bases' => array(), - 'dates' => array(), - 'fields' => array() - ); + $searchData = array('bases' => array(), 'dates' => array(), 'fields' => array(), 'sort' => array(),); - $bases = $fields = $dates = array(); + $bases = $fields = $dates = $sort = array(); - if (! $this->app['authentication']->getUser() instanceof \User_Adapter) { - return $search_datas; + if (!$this->app['authentication']->getUser() instanceof \User_Adapter) { + return $searchData; } $searchSet = json_decode($this->app['authentication']->getUser()->getPrefs('search'), true); $saveSettings = $this->app['authentication']->getUser()->getPrefs('advanced_search_reload'); foreach ($this->app['authentication']->getUser()->ACL()->get_granted_sbas() as $databox) { - $sbas_id = $databox->get_sbas_id(); + $sbasId = $databox->get_sbas_id(); - $bases[$sbas_id] = array( - 'thesaurus' => (trim($databox->get_thesaurus()) != ""), - 'cterms' => false, - 'collections' => array(), - 'sbas_id' => $sbas_id - ); + $bases[$sbasId] = array('thesaurus' => (trim($databox->get_thesaurus()) !== ""), 'cterms' => false, 'collections' => array(), 'sbas_id' => $sbasId); - foreach ($this->app['authentication']->getUser()->ACL()->get_granted_base(array(), array($databox->get_sbas_id())) as $coll) { - $selected = $saveSettings ? ((isset($searchSet['bases']) && isset($searchSet['bases'][$sbas_id])) ? (in_array($coll->get_base_id(), $searchSet['bases'][$sbas_id])) : true) : true; - $bases[$sbas_id]['collections'][] = - array( - 'selected' => $selected, - 'base_id' => $coll->get_base_id() - ); + foreach ($this->app['authentication']->getUser()->ACL()->get_granted_base(array(), array($sbasId)) as $coll) { + $selected = $saveSettings ? ((isset($searchSet['bases']) && isset($searchSet['bases'][$sbasId])) ? (in_array($coll->get_base_id(), $searchSet['bases'][$sbasId])) : true) : true; + $bases[$sbasId]['collections'][] = array('selected' => $selected, 'base_id' => $coll->get_base_id()); } - $meta_struct = $databox->get_meta_structure(); - foreach ($meta_struct as $meta) { - if ( ! $meta->is_indexable()) + foreach ($databox->get_meta_structure() as $fieldMeta) { + if (!$fieldMeta->is_indexable()) { continue; - $id = $meta->get_id(); - $name = $meta->get_name(); - if ($meta->get_type() == 'date') { - if (isset($dates[$id])) - $dates[$id]['sbas'][] = $sbas_id; - else - $dates[$id] = array('sbas' => array($sbas_id), 'fieldname' => $name); + } + $id = $fieldMeta->get_id(); + $name = $fieldMeta->get_name(); + $type = $fieldMeta->get_type(); + + $data = array('sbas' => array($sbasId), 'fieldname' => $name, 'type' => $type, 'id' => $id); + + if ($fieldMeta->get_type() === \databox_field::TYPE_DATE) { + if (isset($dates[$id])) { + $dates[$id]['sbas'][] = $sbasId; + } else { + $dates[$id] = $data; + } + } + + if ($fieldMeta->get_type() == \databox_field::TYPE_NUMBER || $fieldMeta->get_type() === \databox_field::TYPE_DATE) { + if (isset($sort[$id])) { + $sort[$id]['sbas'][] = $sbasId; + } else { + $sort[$id] = $data; + } } if (isset($fields[$name])) { - $fields[$name]['sbas'][] = $sbas_id; + $fields[$name]['sbas'][] = $sbasId; } else { - $fields[$name] = array( - 'sbas' => array($sbas_id) - , 'fieldname' => $name - , 'type' => $meta->get_type() - , 'id' => $id - ); + $fields[$name] = $data; } } - if (! $bases[$sbas_id]['thesaurus']) { + if (!$bases[$sbasId]['thesaurus']) { continue; } - if ( ! $this->app['authentication']->getUser()->ACL()->has_right_on_sbas($sbas_id, 'bas_modif_th')) { + if (!$this->app['authentication']->getUser()->ACL()->has_right_on_sbas($sbasId, 'bas_modif_th')) { continue; } if (false !== simplexml_load_string($databox->get_cterms())) { - $bases[$sbas_id]['cterms'] = true; + $bases[$sbasId]['cterms'] = true; } } - $search_datas['fields'] = $fields; - $search_datas['dates'] = $dates; - $search_datas['bases'] = $bases; + $searchData['fields'] = $fields; + $searchData['dates'] = $dates; + $searchData['bases'] = $bases; + $searchData['sort'] = $sort; - return $search_datas; + return $searchData; } public function getRandom() diff --git a/templates/web/prod/index.html.twig b/templates/web/prod/index.html.twig index fbfc329628..5863696882 100644 --- a/templates/web/prod/index.html.twig +++ b/templates/web/prod/index.html.twig @@ -334,8 +334,8 @@ {% trans 'Trier par ' %} - {% for field in app['phraseanet.SE'].getAvailableDateFields() %} + {% for date in search_datas['dates'] %} + class="" value="{{ date.fieldname }}">{{ date.fieldname }} {% endfor %} -