Allow purging multiple objects from category index table.

This commit is contained in:
Thomas Tanghus 2013-03-29 05:51:41 +01:00
parent df31ee5a90
commit d838a3b33f
1 changed files with 10 additions and 5 deletions

View File

@ -536,17 +536,22 @@ class OC_VCategories {
/**
* @brief Delete category/object relations from the db
* @param int $id The id of the object
* @param array $ids The ids of the objects
* @param string $type The type of object (event/contact/task/journal).
* Defaults to the type set in the instance
* @returns boolean Returns false on error.
*/
public function purgeObject($id, $type = null) {
public function purgeObjects($ids, $type = null) {
$type = is_null($type) ? $this->type : $type;
$updates = array();
try {
$stmt = OCP\DB::prepare('DELETE FROM `' . self::RELATION_TABLE . '` '
. 'WHERE `objid` = ? AND `type`= ?');
$result = $stmt->execute(array($id, $type));
$query = 'DELETE FROM `' . self::RELATION_TABLE . '` ';
$query .= 'WHERE `objid` IN (' . str_repeat('?,', count($ids)-1) . '?) ';
$updates = $ids;
$query .= 'AND `type`= ?';
$updates[] = $type;
$stmt = OCP\DB::prepare($query);
$result = $stmt->execute($updates);
if (OC_DB::isError($result)) {
OC_Log::write('core', __METHOD__. 'DB error: ' . OC_DB::getErrorMessage($result), OC_Log::ERROR);
return false;