diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 0422d65cc9ad7db63af562a59a0b9d705480d232..b15b3aae9db61f30fcfc0acaf00cd090d41dde9d 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -160,6 +160,7 @@ $extrafields = new ExtraFields($db); // fetch optionals attributes and labels $extralabels = $extrafields->fetch_name_optionals_label('thirdparty'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // Do we click on purge search criteria ? if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers @@ -174,6 +175,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_datec=""; $search_categ=""; $search_status=""; + $search_array_options=array(); } if ($search_status=='') $search_status=1; // always display active customer first @@ -256,6 +258,18 @@ if ($socname) $sortfield = "s.nom"; $sortorder = "ASC"; } +// Extra fields +if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) +{ + foreach($extrafields->attribute_list as $key => $val) + { + $crit=GETPOST('search_options_'.$key); + if ($val && $crit != '') + { + $sql .= natural_search('ef.'.$key, $crit); + } + } +} // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -269,6 +283,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) } $sql.= " ORDER BY $sortfield $sortorder, s.nom ASC"; $sql.= $db->plimit($conf->liste_limit+1, $offset); +//print $sql; dol_syslog('comm/prospect/list.php', LOG_DEBUG); $resql = $db->query($sql); @@ -434,9 +449,10 @@ if ($resql) { if ($val) { - print '<td class="liste_titre">'; - //print $extrafields->showInputField($key, $array_options[$key], '', '', 'search_', 4); - print '</td>'; + $crit=$search_array_options['search_options_'.$key]; + print '<td class="liste_titre">'; + print $extrafields->showInputField($key, $crit, '', '', 'search_', 4); + print '</td>'; } } } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 5644b3c013740346bb753a0306983e2d9a6a7fb0..20a812335a17f874b24381b0c7a460093cda939c 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1425,11 +1425,12 @@ class ExtraFields /** * return array_options array for object by extrafields value (using for data send by forms) * - * @param array $extralabels $array of extrafields - * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) - * @return int 1 if array_options set / 0 if no value + * @param array $extralabels $array of extrafields + * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) + * @param string $keysuffix Suffix string to add into name and id of field (can be used to avoid duplicate names) + * @return int 1 if array_options set / 0 if no value */ - function getOptionalsFromPost($extralabels,$keyprefix='') + function getOptionalsFromPost($extralabels,$keyprefix='',$keysuffix='') { global $_POST; @@ -1444,24 +1445,24 @@ class ExtraFields if (in_array($key_type,array('date','datetime'))) { // Clean parameters - $value_key=dol_mktime($_POST["options_".$key.$keyprefix."hour"], $_POST["options_".$key.$keyprefix."min"], 0, $_POST["options_".$key.$keyprefix."month"], $_POST["options_".$key.$keyprefix."day"], $_POST["options_".$key.$keyprefix."year"]); + $value_key=dol_mktime($_POST[$keysuffix."options_".$key.$keyprefix."hour"], $_POST[$keysuffix."options_".$key.$keyprefix."min"], 0, $_POST[$keysuffix."options_".$key.$keyprefix."month"], $_POST[$keysuffix."options_".$key.$keyprefix."day"], $_POST[$keysuffix."options_".$key.$keyprefix."year"]); } else if (in_array($key_type,array('checkbox'))) { - $value_arr=GETPOST("options_".$key.$keyprefix); + $value_arr=GETPOST($keysuffix."options_".$key.$keyprefix); $value_key=implode($value_arr,','); } else if (in_array($key_type,array('price','double'))) { - $value_arr=GETPOST("options_".$key.$keyprefix); + $value_arr=GETPOST($keysuffix."options_".$key.$keyprefix); $value_key=price2num($value_arr); } else { - $value_key=GETPOST("options_".$key.$keyprefix); + $value_key=GETPOST($keysuffix."options_".$key.$keyprefix); } - $array_options["options_".$key]=$value_key; // No keyprefix here. keyprefix is used only for read. + $array_options[$keysuffix."options_".$key]=$value_key; // No keyprefix here. keyprefix is used only for read. } return $array_options;