From 796a41b52e4c274ba80c809eb6f62e901d998d05 Mon Sep 17 00:00:00 2001 From: skodak Date: Sun, 17 Feb 2008 19:12:11 +0000 Subject: [PATCH] MDL-13445 linked activity deleting improvements; merged from MOODLE_19_STABLE --- grade/edit/tree/index.php | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/grade/edit/tree/index.php b/grade/edit/tree/index.php index a19bd48ff7..17aa4aafa1 100644 --- a/grade/edit/tree/index.php +++ b/grade/edit/tree/index.php @@ -77,9 +77,9 @@ $moving = false; switch ($action) { case 'delete': if ($eid) { - if ($element['type'] == 'item' and $object->is_external_item() and !$object->is_outcome_item() and $object->gradetype != GRADE_TYPE_NONE) { + if (!element_deletable($element)) { // no deleting of external activities - they would be recreated anyway! - // exception is activity without grading + // exception is activity without grading or misconfigured activities break; } $confirm = optional_param('confirm', 0, PARAM_BOOL); @@ -190,7 +190,7 @@ function print_grade_tree(&$gtree, $element, $moving, &$gpr, $switch, $switchedl $actions .= $gtree->get_calculation_icon($element, $gpr); if ($element['type'] == 'item' or ($element['type'] == 'category' and $element['depth'] > 1)) { - if (!($element['type'] == 'item' and $object->is_external_item() and !$object->is_outcome_item() and $object->gradetype != GRADE_TYPE_NONE)) { + if (element_deletable($element)) { $actions .= ''
                      . $strdelete.''; @@ -250,5 +250,26 @@ function print_grade_tree(&$gtree, $element, $moving, &$gpr, $switch, $switchedl } } +function element_deletable($element) { + global $COURSE; + + if ($element['type'] != 'item') { + return true; + } + + $grade_item = $element['object']; + + if ($grade_item->itemtype != 'mod' or $grade_item->is_outcome_item() or $grade_item->gradetype == GRADE_TYPE_NONE) { + return true; + } + + $modinfo = get_fast_modinfo($COURSE); + if (!isset($modinfo->instances[$grade_item->itemmodule][$grade_item->iteminstance])) { + // module does not exist + return true; + } + + return false; +} ?> -- 2.39.5