示例#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);
}
                    $tmprec = get_record('fmanager_folders', 'id', $c);
                    $tmplist .= $tmprec->name;
                    $list->thelist[] = $tmplist;
                }
            }
            if ($tmpcount > 0) {
                $list->inusemsg = get_string('msgfolderinuse', 'block_file_manager');
            }
        }
        $list->inusemsg .= get_string('msgsublinksdeleted', 'block_file_manager');
        if (isset($_POST['yesdel'])) {
            $chkdup = NULL;
            foreach ($cb as $c) {
                if ($c != 0 && $chkdup != $c) {
                    $tmppath = get_record('fmanager_folders', 'id', $c);
                    fm_delete_folder($tmppath, $groupid);
                }
                $chkdup = $c;
            }
            // ALl deletion handled by fm_delete_folder function
            //if (fm_process_del('fmanager_folders',$cb)) {
            print_simple_box(get_string('msgdeleteok', 'block_file_manager'), 'center', "", "#FFFFFF");
            redirect("view.php?id={$id}&groupid={$groupid}&rootdir={$rootdir}");
            //}
        }
        break;
    default:
        error(get_string('errwrongparam', 'block_file_manager'), "view.php?id={$id}&groupid={$groupid}&rootdir={$rootdir}");
        break;
}
print_heading(get_string('confdelete', 'block_file_manager'));