$pageblocks = blocks_setup($PAGE, BLOCKS_PINNED_BOTH);
if (!empty($instanceid)) {
- $blockinstance = blocks_find_instance($instanceid, $pageblocks);
- if (!$blockinstance || $blockinstance->pageid != $course->id
- || $blockinstance->pagetype != 'course-view') {
- error_log('AJAX commands.php: Bad block ID '.$instanceid);
- die;
- }
+ throw new moodle_exception('ajax blocks editing currently broken. MDL-19010');
+// $blockinstance = blocks_find_instance($instanceid, $pageblocks);
+// if (!$blockinstance || $blockinstance->pageid != $course->id
+// || $blockinstance->pagetype != 'course-view') {
+// error_log('AJAX commands.php: Bad block ID '.$instanceid);
+// die;
+// }
}
$context = get_context_instance(CONTEXT_COURSE, $course->id);
require_once($CFG->libdir.'/pagelib.php');
+class block_not_on_page_exception extends moodle_exception {
+ public function __construct($instanceid, $page) {
+ $a = new stdClass;
+ $a->instanceid = $instanceid;
+ $a->url = $page->url;
+ parent::__construct('blockdoesnotexistonpage', '', $page->url, $a);
+ }
+}
+
/**
* This class keeps track of the block that should appear on a moodle_page.
* The page to work with as passed to the constructor.
}
}
+ /**
+ *
+ * @param integer $instanceid
+ * @return unknown_type
+ */
+ public function find_instance($instanceid) {
+ foreach ($this->regions as $region => $notused) {
+ $this->ensure_instances_exist($region);
+ foreach($this->blockinstances[$region] as $instance) {
+ if ($instance->instance->id == $instanceid) {
+ return $instance;
+ }
+ }
+ }
+ throw new block_not_on_page_exception($instanceid, $this->page);
+ }
+
/// Inner workings =============================================================
/**
* @param $skipblockstables for internal use only. Makes @see blocks_delete_all_for_context() more efficient.
*/
function blocks_delete_instance($instance, $nolongerused = false, $skipblockstables = false) {
- if ($block = block_instance($block->blockname, $instance)) {
+ global $DB;
+
+ if ($block = block_instance($instance->blockname, $instance)) {
$block->instance_delete();
}
delete_context(CONTEXT_BLOCK, $instance->id);
return false;
}
-function blocks_find_instance($instanceid, $blocksarray) {
- foreach($blocksarray as $subarray) {
- foreach($subarray as $instance) {
- if($instance->id == $instanceid) {
- return $instance;
- }
- }
- }
- return false;
-}
-
// Simple entry point for anyone that wants to use blocks
function blocks_setup(&$page, $pinned = BLOCKS_PINNED_FALSE) {
- // TODO deprecate.
- blocks_execute_url_action($page, $blockmanager,($pinned==BLOCKS_PINNED_TRUE));
$page->blocks->load_blocks();
+ blocks_execute_url_action($page, $page->blocks);
return $page->blocks;
}
if(empty($instance)) {
print_error('invalidblockinstance', '', '', $blockaction);
}
- blocks_delete_instance($instance, $pinned);
+ blocks_delete_instance($instance->instance, $pinned);
break;
case 'moveup':
if(empty($instance)) {
if (!empty($blockid)) {
blocks_execute_action($PAGE, $blockmanager, strtolower($blockaction), $blockid, $pinned);
-
- }
- else if (!empty($instanceid)) {
- $instance = blocks_find_instance($instanceid, $blockmanager);
+ } else if (!empty($instanceid)) {
+ $instance = $blockmanager->find_instance($instanceid);
blocks_execute_action($PAGE, $blockmanager, strtolower($blockaction), $instance, $pinned);
}
}