| | 9 | |
|---|
| | 10 | /** |
|---|
| | 11 | * Deletes a file |
|---|
| | 12 | * #281 |
|---|
| | 13 | * @param file - The file to delete. Get this from get_record(s) |
|---|
| | 14 | */ |
|---|
| | 15 | function deleteFile($file) { |
|---|
| | 16 | if (!empty($file) && (permissions_check("files:edit",$file->files_owner)) || permissions_check("files:edit",$file->owner)) { |
|---|
| | 17 | @unlink(stripslashes($CFG->dataroot.$file->location)); //TODO maybe some error reporting here!?! Penny |
|---|
| | 18 | delete_records('files','ident',$file->ident); |
|---|
| | 19 | delete_records('tags','tagtype','file','ref',$file->ident); |
|---|
| | 20 | } |
|---|
| | 21 | } |
|---|
| | 22 | |
|---|
| | 23 | /** |
|---|
| | 24 | * Deletes a folder and all its sub folders |
|---|
| | 25 | * #281 |
|---|
| | 26 | * @param file - The folder to delete. Get this from get_record(s) |
|---|
| | 27 | */ |
|---|
| | 28 | function deleteFolder($folder) { |
|---|
| | 29 | if (!empty($folder) && (permissions_check("files:edit",$folder->files_owner) || permissions_check("files:edit",$folder->owner))) { |
|---|
| | 30 | $files = get_records('files', 'folder', $folder->ident); |
|---|
| | 31 | if (!empty($files)) { |
|---|
| | 32 | foreach($files as $file) { |
|---|
| | 33 | deleteFile($file); |
|---|
| | 34 | } |
|---|
| | 35 | } |
|---|
| | 36 | |
|---|
| | 37 | $childFolders = get_records('file_folders', 'parent', $folder->ident); |
|---|
| | 38 | if (!empty($childFolders)) { |
|---|
| | 39 | foreach($childFolders as $childFolder) { |
|---|
| | 40 | deleteFolder($childFolder); |
|---|
| | 41 | } |
|---|
| | 42 | } |
|---|
| | 43 | |
|---|
| | 44 | set_field('file_folders','parent',$folder->parent,'parent',$folder->ident); |
|---|
| | 45 | delete_records('file_folders','ident',$folder->ident); |
|---|
| | 46 | delete_records('tags','tagtype','folder','ref',$folder->ident); |
|---|
| | 47 | } |
|---|
| | 48 | } |
|---|
| | 49 | |
|---|
| | 50 | /** |
|---|
| | 51 | * Returns the total number of sub folders of a folder, including all sub folders of sub filders an infinitum... |
|---|
| | 52 | * #281 |
|---|
| | 53 | * @param file - The ident of the top level folder |
|---|
| | 54 | */ |
|---|
| | 55 | function getNumberOfChildFolders($id) { |
|---|
| | 56 | $count = 0; |
|---|
| | 57 | |
|---|
| | 58 | $childFolders = get_records('file_folders', 'parent', $id); |
|---|
| | 59 | if (!empty($childFolders)) { |
|---|
| | 60 | foreach($childFolders as $childFolder) { |
|---|
| | 61 | $count++; |
|---|
| | 62 | $count += getNumberOfChildFolders($childFolder->ident); |
|---|
| | 63 | } |
|---|
| | 64 | } |
|---|
| | 65 | |
|---|
| | 66 | return $count; |
|---|
| | 67 | } |
|---|
| | 68 | |
|---|
| 197 | | set_field('file_folders','parent',$folder->parent,'parent',$id); |
|---|
| 198 | | set_field('files','folder',$folder->parent,'folder',$id); |
|---|
| 199 | | delete_records('file_folders','ident',$id); |
|---|
| 200 | | delete_records('tags','tagtype','folder','ref',$id); |
|---|
| | 260 | deleteFolder($folder); |
|---|