diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index cd04b31fc4d..f0ab0b10909 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -139,7 +139,6 @@ $search_btn = GETPOST('button_search', 'alpha');
$search_remove_btn = GETPOST('button_removefilter', 'alpha');
$optioncss = GETPOST('optioncss', 'alpha');
-
$option = GETPOST('search_option');
if ($option == 'late') {
$search_status = '1';
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index 08e4503748f..a840dbd02b9 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -1065,35 +1065,56 @@ class ExtraFields
$out = ' ';
} elseif ($type == 'select') {
$out = '';
- if (!empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_EXTRAFIELDS_DISABLE_SELECT2)) {
- include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php';
- $out .= ajax_combobox($keyprefix.$key.$keysuffix, array(), 0);
- }
+ if ($mode) {
+ $options = array();
+ foreach ($param['options'] as $okey => $val) {
+ if ((string) $okey == '') {
+ continue;
+ }
- $out .= '';
} elseif ($type == 'sellist') {
$out = '';
if (!empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_EXTRAFIELDS_DISABLE_SELECT2)) {
@@ -2108,6 +2129,17 @@ class ExtraFields
} else {
continue; // Value was not provided, we should not set it.
}
+ } elseif ($key_type == 'select') {
+ // to detect if we are in search context
+ $value_arr_test = GETPOST($keysuffix."options_".$key.$keyprefix, 'none');
+ if (is_array($value_arr_test)) {
+ $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix, 'array:aZ09');
+ // Make sure we get an array even if there's only one selected
+ $value_arr = (array) $value_arr;
+ $value_key = implode(',', $value_arr);
+ } else {
+ $value_key = GETPOST($keysuffix."options_".$key.$keyprefix);
+ }
} elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) {
if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) {
continue; // Value was not provided, we should not set it.
diff --git a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php
index 4ba40384648..418ecd85522 100644
--- a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php
+++ b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php
@@ -48,7 +48,7 @@ if (!empty($extrafieldsobjectkey) && !empty($search_array_options) && is_array($
}
$sql .= ")";
}
- } elseif ($crit != '' && (!in_array($typ, array('select', 'sellist')) || $crit != '0') && (!in_array($typ, array('link')) || $crit != '-1')) {
+ } elseif ($crit != '' && (!in_array($typ, array('select', 'sellist', 'select')) || $crit != '0') && (!in_array($typ, array('link')) || $crit != '-1')) {
$mode_search = 0;
if (in_array($typ, array('int', 'double', 'real', 'price'))) {
$mode_search = 1; // Search on a numeric
@@ -59,13 +59,14 @@ if (!empty($extrafieldsobjectkey) && !empty($search_array_options) && is_array($
if (in_array($typ, array('sellist')) && !is_numeric($crit)) {
$mode_search = 0;// Search on a foreign key string
}
- if (in_array($typ, array('chkbxlst', 'checkbox'))) {
+ if (in_array($typ, array('chkbxlst', 'checkbox', 'select'))) {
$mode_search = 4; // Search on a multiselect field with sql type = text
}
if (is_array($crit)) {
$crit = implode(' ', $crit); // natural_search() expects a string
- } elseif ($typ === 'select' and is_string($crit) and strpos($crit, ' ') === false) {
- $sql .= " AND (".$extrafieldsobjectprefix.$tmpkey." = '".$db->escape($crit)."')";
+ } elseif ($typ === 'select' and is_string($crit) and strpos($crit, ',') === false) {
+ $critSelect = implode("','", array_map(array($db, 'escape'), explode(',', $crit)));
+ $sql .= " AND (".$extrafieldsobjectprefix.$tmpkey." IN ('".$critSelect."') )";
continue;
}
$sql .= natural_search($extrafieldsobjectprefix.$tmpkey, $crit, $mode_search);