Skip to content

Commit

Permalink
MDL-26847 new method file_storage::delete_area_files_select for effic…
Browse files Browse the repository at this point in the history
…ient bulk file deletion.
  • Loading branch information
timhunt committed Mar 21, 2011
1 parent 56babbc commit af7b367
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions lib/filestorage/file_storage.php
Expand Up @@ -434,13 +434,43 @@ public function delete_area_files($contextid, $component = false, $filearea = fa

$file_records = $DB->get_records('files', $conditions);
foreach ($file_records as $file_record) {
$stored_file = $this->get_file_instance($file_record);
$stored_file->delete();
$this->get_file_instance($file_record)->delete();
}

return true; // BC only
}

/**
* Delete all the files from certain areas where itemid is limited by an
* arbitrary bit of SQL.
*
* @param int $contextid the id of the context the files belong to. Must be given.
* @param string $component the owning component. Must be given.
* @param string $filearea the file area name. Must be given.
* @param string $itemidstest an SQL fragment that the itemid must match. Used
* in the query like WHERE itemid $itemidstest. Must used named parameters,
* and may not used named parameters called contextid, component or filearea.
* @param array $params any query params used by $itemidstest.
*/
public function delete_area_files_select($contextid, $component,
$filearea, $itemidstest, array $params = null) {
global $DB;

$where = "contextid = :contextid
AND component = :component
AND filearea = :filearea
AND itemid $itemidstest";
$params['contextid'] = $contextid;
$params['component'] = $component;
$params['filearea'] = $filearea;

$file_records = $DB->get_recordset_select('files', $where, $params);
foreach ($file_records as $file_record) {
$this->get_file_instance($file_record)->delete();
}
$file_records->close();
}

/**
* Move all the files in a file area from one context to another.
* @param integer $oldcontextid the context the files are being moved from.
Expand Down

0 comments on commit af7b367

Please sign in to comment.