FIX #23139
This commit is contained in:
parent
b1b8380015
commit
f52a242159
@ -43,6 +43,7 @@ $objectdesc = GETPOST('objectdesc', 'alpha');
|
|||||||
$htmlname = GETPOST('htmlname', 'aZ09');
|
$htmlname = GETPOST('htmlname', 'aZ09');
|
||||||
$outjson = (GETPOST('outjson', 'int') ? GETPOST('outjson', 'int') : 0);
|
$outjson = (GETPOST('outjson', 'int') ? GETPOST('outjson', 'int') : 0);
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
|
$filter = GETPOST('filter', 'alphanohtml');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -84,7 +85,7 @@ $searchkey = (($id && GETPOST($id, 'alpha')) ? GETPOST($id, 'alpha') : (($htmlna
|
|||||||
// Add a security test to avoid to get content of all tables
|
// Add a security test to avoid to get content of all tables
|
||||||
restrictedArea($user, $objecttmp->element, $id);
|
restrictedArea($user, $objecttmp->element, $id);
|
||||||
|
|
||||||
$arrayresult = $form->selectForFormsList($objecttmp, $htmlname, '', 0, $searchkey, '', '', '', 0, 1);
|
$arrayresult = $form->selectForFormsList($objecttmp, $htmlname, '', 0, $searchkey, '', '', '', 0, 1, 0, '', $filter);
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|
||||||
|
|||||||
@ -7692,9 +7692,10 @@ class Form
|
|||||||
|
|
||||||
if ($classname && class_exists($classname)) {
|
if ($classname && class_exists($classname)) {
|
||||||
$objecttmp = new $classname($this->db);
|
$objecttmp = new $classname($this->db);
|
||||||
|
|
||||||
// Make some replacement
|
// Make some replacement
|
||||||
$sharedentities = getEntity(strtolower($classname));
|
$sharedentities = getEntity(strtolower($classname));
|
||||||
$objecttmp->filter = str_replace(
|
$filter = str_replace(
|
||||||
array('__ENTITY__', '__SHARED_ENTITIES__', '__USER_ID__'),
|
array('__ENTITY__', '__SHARED_ENTITIES__', '__USER_ID__'),
|
||||||
array($conf->entity, $sharedentities, $user->id),
|
array($conf->entity, $sharedentities, $user->id),
|
||||||
$filter
|
$filter
|
||||||
@ -7706,7 +7707,7 @@ class Form
|
|||||||
return 'Error bad setup of type for field '.join(',', $InfoFieldList);
|
return 'Error bad setup of type for field '.join(',', $InfoFieldList);
|
||||||
}
|
}
|
||||||
|
|
||||||
//var_dump($objecttmp->filter);
|
//var_dump($filter);
|
||||||
$prefixforautocompletemode = $objecttmp->element;
|
$prefixforautocompletemode = $objecttmp->element;
|
||||||
if ($prefixforautocompletemode == 'societe') {
|
if ($prefixforautocompletemode == 'societe') {
|
||||||
$prefixforautocompletemode = 'company';
|
$prefixforautocompletemode = 'company';
|
||||||
@ -7716,7 +7717,7 @@ class Form
|
|||||||
}
|
}
|
||||||
$confkeyforautocompletemode = strtoupper($prefixforautocompletemode).'_USE_SEARCH_TO_SELECT'; // For example COMPANY_USE_SEARCH_TO_SELECT
|
$confkeyforautocompletemode = strtoupper($prefixforautocompletemode).'_USE_SEARCH_TO_SELECT'; // For example COMPANY_USE_SEARCH_TO_SELECT
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::selectForForms object->filter=".$objecttmp->filter, LOG_DEBUG);
|
dol_syslog(get_class($this)."::selectForForms filter=".$filter, LOG_DEBUG);
|
||||||
$out = '';
|
$out = '';
|
||||||
if (!empty($conf->use_javascript_ajax) && !empty($conf->global->$confkeyforautocompletemode) && !$forcecombo) {
|
if (!empty($conf->use_javascript_ajax) && !empty($conf->global->$confkeyforautocompletemode) && !$forcecombo) {
|
||||||
// No immediate load of all database
|
// No immediate load of all database
|
||||||
@ -7731,14 +7732,14 @@ class Form
|
|||||||
$urlforajaxcall = DOL_URL_ROOT.'/core/ajax/selectobject.php';
|
$urlforajaxcall = DOL_URL_ROOT.'/core/ajax/selectobject.php';
|
||||||
|
|
||||||
// No immediate load of all database
|
// No immediate load of all database
|
||||||
$urloption = 'htmlname='.urlencode($htmlname).'&outjson=1&objectdesc='.urlencode($objectdesc).'&filter='.urlencode($objecttmp->filter).($sortfield ? '&sortfield='.urlencode($sortfield) : '');
|
$urloption = 'htmlname='.urlencode($htmlname).'&outjson=1&objectdesc='.urlencode($objectdesc).'&filter='.urlencode($filter).($sortfield ? '&sortfield='.urlencode($sortfield) : '');
|
||||||
// Activate the auto complete using ajax call.
|
// Activate the auto complete using ajax call.
|
||||||
$out .= ajax_autocompleter($preselectedvalue, $htmlname, $urlforajaxcall, $urloption, $conf->global->$confkeyforautocompletemode, 0, array());
|
$out .= ajax_autocompleter($preselectedvalue, $htmlname, $urlforajaxcall, $urloption, $conf->global->$confkeyforautocompletemode, 0, array());
|
||||||
$out .= '<style type="text/css">.ui-autocomplete { z-index: 1003; }</style>';
|
$out .= '<style type="text/css">.ui-autocomplete { z-index: 1003; }</style>';
|
||||||
$out .= '<input type="text" class="'.$morecss.'"'.($disabled ? ' disabled="disabled"' : '').' name="search_'.$htmlname.'" id="search_'.$htmlname.'" value="'.$selected_input_value.'"'.($placeholder ? ' placeholder="'.dol_escape_htmltag($placeholder).'"' : '') .' />';
|
$out .= '<input type="text" class="'.$morecss.'"'.($disabled ? ' disabled="disabled"' : '').' name="search_'.$htmlname.'" id="search_'.$htmlname.'" value="'.$selected_input_value.'"'.($placeholder ? ' placeholder="'.dol_escape_htmltag($placeholder).'"' : '') .' />';
|
||||||
} else {
|
} else {
|
||||||
// Immediate load of table record. Note: filter is inside $objecttmp->filter
|
// Immediate load of table record.
|
||||||
$out .= $this->selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, 0, $disabled, $sortfield);
|
$out .= $this->selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, 0, $disabled, $sortfield, $filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
@ -7789,14 +7790,15 @@ class Form
|
|||||||
* @param int $outputmode 0=HTML select string, 1=Array
|
* @param int $outputmode 0=HTML select string, 1=Array
|
||||||
* @param int $disabled 1=Html component is disabled
|
* @param int $disabled 1=Html component is disabled
|
||||||
* @param string $sortfield Sort field
|
* @param string $sortfield Sort field
|
||||||
|
* @param string $filter Add more filter
|
||||||
* @return string|array Return HTML string
|
* @return string|array Return HTML string
|
||||||
* @see selectForForms()
|
* @see selectForForms()
|
||||||
*/
|
*/
|
||||||
public function selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty = '', $searchkey = '', $placeholder = '', $morecss = '', $moreparams = '', $forcecombo = 0, $outputmode = 0, $disabled = 0, $sortfield = '')
|
public function selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty = '', $searchkey = '', $placeholder = '', $morecss = '', $moreparams = '', $forcecombo = 0, $outputmode = 0, $disabled = 0, $sortfield = '', $filter = '')
|
||||||
{
|
{
|
||||||
global $conf, $langs, $user, $hookmanager;
|
global $conf, $langs, $user, $hookmanager;
|
||||||
|
|
||||||
//print "$objecttmp->filter, $htmlname, $preselectedvalue, $showempty = '', $searchkey = '', $placeholder = '', $morecss = '', $moreparams = '', $forcecombo = 0, $outputmode = 0, $disabled";
|
//print "$htmlname, $preselectedvalue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, $outputmode, $disabled";
|
||||||
|
|
||||||
$prefixforautocompletemode = $objecttmp->element;
|
$prefixforautocompletemode = $objecttmp->element;
|
||||||
if ($prefixforautocompletemode == 'societe') {
|
if ($prefixforautocompletemode == 'societe') {
|
||||||
@ -7882,13 +7884,14 @@ class Form
|
|||||||
if ($searchkey != '') {
|
if ($searchkey != '') {
|
||||||
$sql .= natural_search(explode(',', $fieldstoshow), $searchkey);
|
$sql .= natural_search(explode(',', $fieldstoshow), $searchkey);
|
||||||
}
|
}
|
||||||
if ($objecttmp->filter) { // Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
|
||||||
/*if (! DolibarrApi::_checkFilters($objecttmp->filter))
|
if ($filter) { // Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
||||||
|
/*if (! DolibarrApi::_checkFilters($filter))
|
||||||
{
|
{
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$objecttmp->filter);
|
throw new RestException(503, 'Error when validating parameter sqlfilters '.$filter);
|
||||||
}*/
|
}*/
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'Form::forgeCriteriaCallback', $objecttmp->filter).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'Form::forgeCriteriaCallback', $filter).")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sql .= $this->db->order($sortfield ? $sortfield : $fieldstoshow, "ASC");
|
$sql .= $this->db->order($sortfield ? $sortfield : $fieldstoshow, "ASC");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user