From d27a5b2581dd226fd99e54f151acc70d4a35891f Mon Sep 17 00:00:00 2001 From: moodler Date: Tue, 21 Mar 2006 09:07:19 +0000 Subject: [PATCH] Christian's changes to update Resources when files are moved I've not checked this closely but it seems to work --- files/index.php | 64 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/files/index.php b/files/index.php index 2e3a2dcaea..cef37a0c06 100644 --- a/files/index.php +++ b/files/index.php @@ -216,12 +216,28 @@ } else { html_header($course, $wdir); + + echo '

'.get_string('deletecheckwarning').':

'; + + print_simple_box_start("center"); + printfilelist($USER->filelist); + print_simple_box_end(); + echo "
"; + print_simple_box_start("center"); + if (setfilelist($_POST)) { - echo "

".get_string("deletecheckwarning").":

"; - print_simple_box_start("center"); - printfilelist($USER->filelist); + foreach ($USER->filelist as $file) { + //if file is part of resource then update resource table as well + $clean_name = substr($file, 1); + if (record_exists('resource', 'reference', $clean_name)) { + $resource_id = files_get_cm_from_resource_name($clean_name); + echo '

'.get_string('warningdeleteresource', '', $file)." Update"; + } + } + print_simple_box_end(); echo "
"; + notice_yesno (get_string("deletecheckfiles"), "index.php?id=$id&wdir=$wdir&action=delete&confirm=1&sesskey=$USER->sesskey&choose=$choose", "index.php?id=$id&wdir=$wdir&action=cancel&choose=$choose"); @@ -267,12 +283,29 @@ html_header($course, $wdir); $name = clean_filename($name); if (file_exists($basedir.$wdir."/".$name)) { - echo "Error: $name already exists!"; + echo "

Error: $name already exists!
"; } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) { - echo "Error: could not rename $oldname to $name"; + echo "

Error: could not rename $oldname to $name

"; + } + + //if file is part of resource then update resource table as well + //this line only catch the root directory + if (record_exists('resource', 'reference', $oldname)) { + set_field('resource', 'reference', $name, 'reference', $oldname); + } + + if (get_dir_name_from_resource($oldname)) { + $resources = get_dir_name_from_resource($oldname); + print_simple_box_start("center"); + echo "The following files might be referenced as a resource :
"; + foreach ($resources as $resource) { + $resource_id = files_get_cm_from_resource_name($name); + echo '

'. "$resource->reference :"." ".get_string('update').""; + } + print_simple_box_end("center"); } displaydir($wdir); - + } else { $strrename = get_string("rename"); $strcancel = get_string("cancel"); @@ -839,4 +872,23 @@ function displaydir ($wdir) { } +function files_get_cm_from_resource_name($clean_name) { + global $CFG; + + $SQL = 'SELECT a.id FROM '.$CFG->prefix.'course_modules a, '.$CFG->prefix.'resource b + WHERE a.instance = b.id AND b.reference = "'.$clean_name.'"'; + $resource = get_record_sql($SQL); + return $resource->id; +} + +function get_dir_name_from_resource($clean_name) { + global $CFG; + + $LIKE = sql_ilike(); + + $SQL = 'SELECT * FROM '.$CFG->prefix.'resource WHERE reference '.$LIKE. "\"%$clean_name%\""; + $resource = get_records_sql($SQL); + return $resource; +} + ?> -- 2.39.5