Allow complex queries for kolab_storage_folder::count(); fix row counting from SQL
This commit is contained in:
parent
f5824e32b4
commit
6d1f67ad92
2 changed files with 13 additions and 6 deletions
|
@ -352,13 +352,13 @@ class kolab_storage_cache
|
||||||
// cache is in sync, we can count records in local DB
|
// cache is in sync, we can count records in local DB
|
||||||
if ($this->synched) {
|
if ($this->synched) {
|
||||||
$sql_result = $this->db->query(
|
$sql_result = $this->db->query(
|
||||||
"SELECT COUNT(*) AS NUMROWS FROM kolab_cache ".
|
"SELECT COUNT(*) AS numrows FROM kolab_cache ".
|
||||||
"WHERE resource=? " . $this->_sql_where($query),
|
"WHERE resource=? " . $this->_sql_where($query),
|
||||||
$this->resource_uri
|
$this->resource_uri
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql_arr = $this->db->fetch_assoc($sql_result);
|
$sql_arr = $this->db->fetch_assoc($sql_result);
|
||||||
$count = intval($sql_arr['NUMROWS']);
|
$count = intval($sql_arr['numrows']);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// search IMAP by object type
|
// search IMAP by object type
|
||||||
|
|
|
@ -272,17 +272,24 @@ class kolab_storage_folder
|
||||||
/**
|
/**
|
||||||
* Get number of objects stored in this folder
|
* Get number of objects stored in this folder
|
||||||
*
|
*
|
||||||
* @param string $type Object type (e.g. contact, event, todo, journal, note, configuration)
|
* @param mixed Pseudo-SQL query as list of filter parameter triplets
|
||||||
|
* or string with object type (e.g. contact, event, todo, journal, note, configuration)
|
||||||
* @return integer The number of objects of the given type
|
* @return integer The number of objects of the given type
|
||||||
|
* @see self::select()
|
||||||
*/
|
*/
|
||||||
public function count($type = null)
|
public function count($type_or_query = null)
|
||||||
{
|
{
|
||||||
if (!$type) $type = $this->type;
|
if (!$type_or_query)
|
||||||
|
$query = array(array('type','=',$this->type));
|
||||||
|
else if (is_string($type_or_query))
|
||||||
|
$query = array(array('type','=',$type_or_query));
|
||||||
|
else
|
||||||
|
$query = (array)$type_or_query;
|
||||||
|
|
||||||
// synchronize cache first
|
// synchronize cache first
|
||||||
$this->cache->synchronize();
|
$this->cache->synchronize();
|
||||||
|
|
||||||
return $this->cache->count(array(array('type','=',$type)));
|
return $this->cache->count($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue