Fix escape the undescore on search in website module
This commit is contained in:
parent
cb964a3ab3
commit
d5d4b8d8e0
@ -177,6 +177,14 @@ interface Database
|
|||||||
*/
|
*/
|
||||||
public function escape($stringtoencode);
|
public function escape($stringtoencode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape a string to insert data
|
||||||
|
*
|
||||||
|
* @param string $stringtoencode String to escape
|
||||||
|
* @return string String escaped
|
||||||
|
*/
|
||||||
|
public function escapeunderscore($stringtoencode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sanitize a string for SQL forging
|
* Sanitize a string for SQL forging
|
||||||
*
|
*
|
||||||
|
|||||||
@ -430,6 +430,17 @@ class DoliDBMysqli extends DoliDB
|
|||||||
return $this->db->real_escape_string($stringtoencode);
|
return $this->db->real_escape_string($stringtoencode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape a string to insert data
|
||||||
|
*
|
||||||
|
* @param string $stringtoencode String to escape
|
||||||
|
* @return string String escaped
|
||||||
|
*/
|
||||||
|
public function escapeunderscore($stringtoencode)
|
||||||
|
{
|
||||||
|
return str_replace('_', '\_', $stringtoencode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return generic error code of last operation.
|
* Return generic error code of last operation.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -700,6 +700,17 @@ class DoliDBPgsql extends DoliDB
|
|||||||
return pg_escape_string($stringtoencode);
|
return pg_escape_string($stringtoencode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape a string to insert data
|
||||||
|
*
|
||||||
|
* @param string $stringtoencode String to escape
|
||||||
|
* @return string String escaped
|
||||||
|
*/
|
||||||
|
public function escapeunderscore($stringtoencode)
|
||||||
|
{
|
||||||
|
return str_replace('_', '\_', $stringtoencode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a SQL IF
|
* Format a SQL IF
|
||||||
*
|
*
|
||||||
|
|||||||
@ -635,6 +635,17 @@ class DoliDBSqlite3 extends DoliDB
|
|||||||
return Sqlite3::escapeString($stringtoencode);
|
return Sqlite3::escapeString($stringtoencode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape a string to insert data
|
||||||
|
*
|
||||||
|
* @param string $stringtoencode String to escape
|
||||||
|
* @return string String escaped
|
||||||
|
*/
|
||||||
|
public function escapeunderscore($stringtoencode)
|
||||||
|
{
|
||||||
|
return str_replace('_', '\_', $stringtoencode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renvoie le code erreur generique de l'operation precedente.
|
* Renvoie le code erreur generique de l'operation precedente.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -866,11 +866,11 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
|
|||||||
$sql .= " AND (";
|
$sql .= " AND (";
|
||||||
$searchalgo = '';
|
$searchalgo = '';
|
||||||
if (preg_match('/meta/', $algo)) {
|
if (preg_match('/meta/', $algo)) {
|
||||||
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.title LIKE '%".$db->escape($searchstring)."%' OR wp.description LIKE '%".$db->escape($searchstring)."%'";
|
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.title LIKE '%".$db->escapeunderscore($db->escape($searchstring))."%' OR wp.description LIKE '%".$db->escapeunderscore($db->escape($searchstring))."%'";
|
||||||
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.keywords LIKE '".$db->escape($searchstring).",%' OR wp.keywords LIKE '% ".$db->escape($searchstring)."%'"; // TODO Use a better way to scan keywords
|
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.keywords LIKE '".$db->escapeunderscore($db->escape($searchstring)).",%' OR wp.keywords LIKE '% ".$db->escapeunderscore($db->escape($searchstring))."%'"; // TODO Use a better way to scan keywords
|
||||||
}
|
}
|
||||||
if (preg_match('/content/', $algo)) {
|
if (preg_match('/content/', $algo)) {
|
||||||
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.content LIKE '%".$db->escape($searchstring)."%'";
|
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.content LIKE '%".$db->escapeunderscore($db->escape($searchstring))."%'";
|
||||||
}
|
}
|
||||||
$sql .= $searchalgo;
|
$sql .= $searchalgo;
|
||||||
if (is_array($otherfilters) && !empty($otherfilters['category'])) {
|
if (is_array($otherfilters) && !empty($otherfilters['category'])) {
|
||||||
@ -879,6 +879,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
|
|||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
$sql .= $db->plimit($max);
|
$sql .= $db->plimit($max);
|
||||||
|
//print $sql;
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
|
|||||||
@ -250,6 +250,17 @@ class TraceableDB extends DoliDB
|
|||||||
return $this->db->escape($stringtoencode);
|
return $this->db->escape($stringtoencode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape a string to insert data
|
||||||
|
*
|
||||||
|
* @param string $stringtoencode String to escape
|
||||||
|
* @return string String escaped
|
||||||
|
*/
|
||||||
|
public function escapeunderscore($stringtoencode)
|
||||||
|
{
|
||||||
|
return $this->db->escapeunderscore($stringtoencode);
|
||||||
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Get last ID after an insert INSERT
|
* Get last ID after an insert INSERT
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user