Exemplo n.º 1
0
/**
* recursively deletes a folder in database and physically
* @param object $dir folder database object
* @param $groupid
* @uses $CFG
* @uses $USER
*/
function fm_delete_folder($dir, $groupid)
{
    global $CFG, $USER;
    // if the dir being deleted is a root dir (eg. has some dir's under it)
    if ($child = get_record('fmanager_folders', 'pathid', $dir->id)) {
        fm_delete_folder($child, $groupid);
    }
    // Deletes all files/url links under folder
    if ($allrecs = get_records('fmanager_link', 'folder', $dir->id)) {
        foreach ($allrecs as $ar) {
            // a file
            if ($ar->type == TYPE_FILE || $ar->type == TYPE_ZIP) {
                fm_remove_file($ar, $groupid);
            }
            // removes shared aspect
            delete_records('fmanager_shared', 'sharedlink', $ar->id);
            // Delete link
            delete_records('fmanager_link', 'id', $ar->id);
        }
    }
    // delete shared to folder
    delete_records('fmanager_shared', 'sharedlink', $dir->id);
    if ($groupid == 0) {
        if (!@rmdir($CFG->dataroot . "/file_manager/users/" . $USER->id . $dir->path . $dir->name . "/")) {
            error(get_string('errnodeletefolder', 'block_file_manager'));
        }
    } else {
        if (!@rmdir($CFG->dataroot . "/file_manager/groups/" . $groupid . $dir->path . $dir->name . "/")) {
            error(get_string('errnodeletefolder', 'block_file_manager'));
        }
    }
    delete_records('fmanager_folders', 'id', $dir->id);
}
         $list->thelist[] = $tmplist;
     }
     // delete confirmed
     if (isset($_POST['yesdel'])) {
         $linkshared = count_records('fmanager_shared', 'sharedlink', $c);
         if ($linkshared > 0) {
             fm_update_shared_links($c);
         }
         $linkshared = 0;
         if ($groupid == 0) {
             $file = fm_get_user_link($c);
         } else {
             $file = fm_get_group_link($c, $groupid);
         }
         if ($file->type == TYPE_FILE || $file->type == TYPE_ZIP) {
             $warnmsg .= fm_remove_file($file, $groupid);
         }
     }
     // Means that multiple types were selected (folders/links) and these are folders
 } else {
     if (substr($c, 0, 2) == 'f-') {
         $foldid = substr($c, 2);
         $tmplist = "";
         if ($groupid == 0) {
             fm_user_owns_folder($foldid);
         } else {
             fm_group_owns_folder($foldid, $groupid);
         }
         if (!isset($_POST['yesdel']) && !isset($_POST['nodel'])) {
             $foldname = get_record('fmanager_folders', 'id', $foldid);
             $tmpcount = count_records('fmanager_shared', 'sharedlink', $foldid, 'type', STYPE_FOLD);