. /** * Move/order course functionality for course_overview block. * * @package block_course_overview * @copyright 2012 Adam Olley * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once(dirname(__FILE__) . '/../../config.php'); require_once(dirname(__FILE__) . '/locallib.php'); require_sesskey(); require_login(); $source = required_param('source', PARAM_INT); $move = required_param('move', PARAM_INT); list($courses_sorted, $sitecourses, $coursecount) = block_course_overview_get_sorted_courses(); $sortorder = array_keys($courses_sorted); // Now resort based on new weight for chosen course. $neworder = array(); $sourcekey = array_search($source, $sortorder); if ($sourcekey === false) { print_error("invalidcourseid", null, null, $source); } $destination = $sourcekey + $move; if ($destination < 0) { print_error("listcantmoveup"); } else if ($destination >= count($courses_sorted)) { print_error("listcantmovedown"); } // Create neworder list for courses. unset($sortorder[$sourcekey]); if ($move == -1) { if ($destination > 0) { $neworder = array_slice($sortorder, 0, $destination, true); } $neworder[] = $source; $remaningcourses = array_slice($sortorder, $destination); foreach ($remaningcourses as $courseid) { $neworder[] = $courseid; } } else if (($move == 1)) { $neworder = array_slice($sortorder, 0, $destination); $neworder[] = $source; if (($destination) < count($courses_sorted)) { $remaningcourses = array_slice($sortorder, $destination); foreach ($remaningcourses as $courseid) { $neworder[] = $courseid; } } } block_course_overview_update_myorder($neworder); redirect(new moodle_url('/my/index.php'));