redaxo_xform
redaxo_xform copied to clipboard
Manager: select_sql Feld erscheint nicht als Such-/Filtermöglichkeit
Wenn ein Feld als select_sql Feld angelegt wird, so kann man nach diesem Feldinhalt in der Liste nicht suchen, obwohl das Feld "als Suchfeld aufnehmen" markiert wurde.
class.xform.select_sql.inc.php um diesen Code ergänzen:
public static function getSearchField($params)
{
$qry = $params['field']->getElement('query');
$sql = new rex_sql();
$sql->setQuery($qry);
$res = $sql->getArray();
$options = array('' => '---');
foreach ($res as $l) {
$options[$l['id']] = $l['name'];
}
$params['searchForm']->setValueField('select', array(
'name' => $params['field']->getName(),
'label' => $params['field']->getLabel(),
'options' => $options
));
}
public static function getSearchFilter($params)
{
$value = $params['value'];
$field = $params['field']->getName();
if ($value == '(empty)') {
return ' (`' . mysql_real_escape_string($field) . '` = "" or `' . mysql_real_escape_string($field) . '` IS NULL) ';
} elseif ($value == '!(empty)') {
return ' (`' . mysql_real_escape_string($field) . '` <> "" and `' . mysql_real_escape_string($field) . '` IS NOT NULL) ';
}
$pos = strpos($value, '*');
if ($pos !== false) {
$value = str_replace('%', '\%', $value);
$value = str_replace('*', '%', $value);
return ' `' . mysql_real_escape_string($field) . "` LIKE '" . mysql_real_escape_string($value) . "'";
} else {
return ' `' . mysql_real_escape_string($field) . "` = '" . mysql_real_escape_string($value) . "'";
}
}
Hat mir geholfen. Wäre dankbar, wenn so etwas eingebaut werden könnte.