FIX Several fixes in fetchAll
This commit is contained in:
parent
0b6aaccfcc
commit
bb565d33f9
@ -321,7 +321,7 @@ class MyObject extends CommonObject
|
|||||||
* @param string $sortfield Sort field
|
* @param string $sortfield Sort field
|
||||||
* @param int $limit limit
|
* @param int $limit limit
|
||||||
* @param int $offset Offset
|
* @param int $offset Offset
|
||||||
* @param array $filter Filter array
|
* @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...)
|
||||||
* @param string $filtermode Filter mode (AND or OR)
|
* @param string $filtermode Filter mode (AND or OR)
|
||||||
* @return array|int int <0 if KO, array of pages if OK
|
* @return array|int int <0 if KO, array of pages if OK
|
||||||
*/
|
*/
|
||||||
@ -335,7 +335,7 @@ class MyObject extends CommonObject
|
|||||||
|
|
||||||
$sql = 'SELECT';
|
$sql = 'SELECT';
|
||||||
$sql .= ' t.rowid';
|
$sql .= ' t.rowid';
|
||||||
// TODO Gett all fields
|
// TODO Get all fields
|
||||||
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t';
|
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t';
|
||||||
$sql .= ' WHERE t.entity = '.$conf->entity;
|
$sql .= ' WHERE t.entity = '.$conf->entity;
|
||||||
// Manage filter
|
// Manage filter
|
||||||
@ -344,7 +344,14 @@ class MyObject extends CommonObject
|
|||||||
foreach ($filter as $key => $value) {
|
foreach ($filter as $key => $value) {
|
||||||
if ($key=='t.rowid') {
|
if ($key=='t.rowid') {
|
||||||
$sqlwhere[] = $key . '='. $value;
|
$sqlwhere[] = $key . '='. $value;
|
||||||
} else {
|
}
|
||||||
|
elseif (strpos($key,'date') !== false) {
|
||||||
|
$sqlwhere[] = $key.' = \''.$this->db->idate($value).'\'';
|
||||||
|
}
|
||||||
|
elseif ($key=='customsql') {
|
||||||
|
$sqlwhere[] = $value;
|
||||||
|
}
|
||||||
|
else {
|
||||||
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3179,14 +3179,15 @@ class User extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Load all objects into $this->users
|
* Load all objects into $this->users
|
||||||
*
|
*
|
||||||
* @param string $sortorder sort order
|
* @param string $sortorder sort order
|
||||||
* @param string $sortfield sort field
|
* @param string $sortfield sort field
|
||||||
* @param int $limit limit page
|
* @param int $limit limit page
|
||||||
* @param int $offset page
|
* @param int $offset page
|
||||||
* @param array $filter filter output
|
* @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...)
|
||||||
* @return int <0 if KO, >0 if OK
|
* @param string $filtermode Filter mode (AND or OR)
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter=array())
|
function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter=array(), $filtermode='AND')
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
@ -3194,19 +3195,27 @@ class User extends CommonObject
|
|||||||
$sql.= ' FROM '.MAIN_DB_PREFIX .$this->table_element.' as t ';
|
$sql.= ' FROM '.MAIN_DB_PREFIX .$this->table_element.' as t ';
|
||||||
$sql.= " WHERE 1";
|
$sql.= " WHERE 1";
|
||||||
|
|
||||||
//Manage filter
|
// Manage filter
|
||||||
|
$sqlwhere = array();
|
||||||
if (!empty($filter)){
|
if (!empty($filter)){
|
||||||
foreach($filter as $key => $value) {
|
foreach($filter as $key => $value) {
|
||||||
if (strpos($key,'date')) {
|
if ($key=='t.rowid') {
|
||||||
$sql.= ' AND '.$key.' = \''.$this->db->idate($value).'\'';
|
$sqlwhere[] = $key . '='. $value;
|
||||||
|
}
|
||||||
|
elseif (strpos($key,'date') !== false) {
|
||||||
|
$sqlwhere[] = $key.' = \''.$this->db->idate($value).'\'';
|
||||||
}
|
}
|
||||||
elseif ($key=='customsql') {
|
elseif ($key=='customsql') {
|
||||||
$sql.= ' AND '.$value;
|
$sqlwhere[] = $value;
|
||||||
} else {
|
}
|
||||||
$sql.= ' AND '.$key.' LIKE \'%'.$value.'%\'';
|
else {
|
||||||
|
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (count($sqlwhere) > 0) {
|
||||||
|
$sql .= ' AND (' . implode(' '.$filtermode.' ', $sqlwhere).')';
|
||||||
|
}
|
||||||
$sql.= $this->db->order($sortfield,$sortorder);
|
$sql.= $this->db->order($sortfield,$sortorder);
|
||||||
if ($limit) $sql.= $this->db->plimit($limit+1,$offset);
|
if ($limit) $sql.= $this->db->plimit($limit+1,$offset);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user