libdir.'/adminlib.php'); $adminroot = admin_get_root(); admin_externalpage_setup('managemodules', $adminroot); require_once('../course/lib.php'); $show = optional_param('show', '', PARAM_SAFEDIR); $hide = optional_param('hide', '', PARAM_SAFEDIR); $delete = optional_param('delete', '', PARAM_SAFEDIR); $confirm = optional_param('confirm', '', PARAM_BOOL); /// Print headings $stractivities = get_string("activities"); $strdelete = get_string("delete"); $strversion = get_string("version"); $strhide = get_string("hide"); $strshow = get_string("show"); $strsettings = get_string("settings"); $stractivities = get_string("activities"); $stractivitymodule = get_string("activitymodule"); admin_externalpage_print_header($adminroot); print_heading($stractivities); $coursesaffected = false; /// If data submitted, then process and store. if (!empty($hide) and confirm_sesskey()) { if (!$module = get_record("modules", "name", $hide)) { error("Module doesn't exist!"); } set_field("modules", "visible", "0", "id", $module->id); // Hide main module set_field('course_modules', 'visibleold', '1', 'visible' ,'1', 'module', $module->id); // Remember the previous visible state so we can toggle this back if the module is unhidden. set_field('course_modules', 'visibleold', '0', 'visible' ,'0', 'module', $module->id); set_field("course_modules", "visible", "0", "module", $module->id); // Hide all related activity modules $coursesaffected = true; } if (!empty($show) and confirm_sesskey()) { if (!$module = get_record("modules", "name", $show)) { error("Module doesn't exist!"); } set_field("modules", "visible", "1", "id", $module->id); // Show main module set_field('course_modules', 'visible', '1', 'visibleold', '1', 'module', $module->id); // Get the previous saved visible state for the course module. $coursesaffected = true; } if (!empty($delete) and confirm_sesskey()) { $strmodulename = get_string("modulename", "$delete"); if (!$confirm) { notice_yesno(get_string("moduledeleteconfirm", "", $strmodulename), "modules.php?delete=$delete&confirm=1&sesskey=$USER->sesskey", "modules.php"); admin_externalpage_print_footer($adminroot); exit; } else { // Delete everything!! if ($delete == "forum") { error("You can not delete the forum module!!"); } if (!$module = get_record("modules", "name", $delete)) { error("Module doesn't exist!"); } // OK, first delete all the relevant instances from all course sections if ($coursemods = get_records("course_modules", "module", $module->id)) { foreach ($coursemods as $coursemod) { if (! delete_mod_from_section($coursemod->id, $coursemod->section)) { notify("Could not delete the $strmodulename with id = $coursemod->id from section $coursemod->section"); } } } // Now delete all the course module records if (!delete_records("course_modules", "module", $module->id)) { notify("Error occurred while deleting all $strmodulename records in course_modules table"); } // Then delete all the logs if (!delete_records("log", "module", $module->name)) { notify("Error occurred while deleting all $strmodulename records in log table"); } // And log_display information if (!delete_records("log_display", "module", $module->name)) { notify("Error occurred while deleting all $strmodulename records in log_display table"); } // And the module entry itself if (!delete_records("modules", "name", $module->name)) { notify("Error occurred while deleting the $strmodulename record from modules table"); } // Then the tables themselves if ($tables = $db->Metatables()) { $prefix = $CFG->prefix.$module->name; foreach ($tables as $table) { if (strpos($table, $prefix) === 0) { if (!execute_sql("DROP TABLE $table", false)) { notify("ERROR: while trying to drop table $table"); } } } } // Delete the capabilities that were defined by this module capabilities_cleanup('mod/'.$module->name); // rebuild_course_cache(); // Because things have changed $coursesaffected = true; $a->module = $strmodulename; $a->directory = "$CFG->dirroot/mod/$delete"; notice(get_string("moduledeletefiles", "", $a), "modules.php"); } } if ($coursesaffected) { rebuild_course_cache(); // Because things have changed } /// Get and sort the existing modules if (!$modules = get_records("modules")) { error("No modules found!!"); // Should never happen } foreach ($modules as $module) { $strmodulename = get_string("modulename", "$module->name"); // Deal with modules which are lacking the language string if ($strmodulename == '[[modulename]]') { $strmodulename = $module->name; } $modulebyname[$strmodulename] = $module; } ksort($modulebyname); /// Print the table of all modules $table->head = array ($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $strdelete, $strsettings); $table->align = array ("left", "right", "left", "center", "center", "center"); $table->wrap = array ("nowrap", "", "", "", "",""); $table->size = array ("100%", "10", "10", "10", "10","12"); $table->width = "100"; foreach ($modulebyname as $modulename => $module) { $icon = "modpixpath/$module->name/icon.gif\" hspace=\"10\" class=\"icon\" alt=\"\" />"; $delete = "name&sesskey=$USER->sesskey\">$strdelete"; if (file_exists("$CFG->dirroot/mod/$module->name/config.html")) { $settings = "name\">$strsettings"; } else { $settings = ""; } $count = count_records("$module->name"); if ($module->visible) { $visible = "name&sesskey=$USER->sesskey\" title=\"$strhide\">". "pixpath/i/hide.gif\" class=\"icon\" alt=\"$strhide\" />"; $class = ""; } else { $visible = "name&sesskey=$USER->sesskey\" title=\"$strshow\">". "pixpath/i/show.gif\" class=\"icon\" alt=\"$strshow\" />"; $class = "class=\"dimmed_text\""; } if ($module->name == "forum") { $delete = ""; $visible = ""; $class = ""; } $table->data[] = array ("$icon $modulename", $count, $module->version, $visible, $delete, $settings); } print_table($table); echo "

"; admin_externalpage_print_footer($adminroot); ?>