From 5a39b24b9a7cc6d76c9fbafad958c028ca59db1d Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Mon, 23 Feb 2015 14:25:21 +0800 Subject: [PATCH 1/2] MDL-48807 accesslib: table locking fix on all create_level_instance --- lib/accesslib.php | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index fb679a9b412..8350b37222e 100644 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -6447,14 +6447,17 @@ class context_user extends context { protected static function create_level_instances() { global $DB; - $sql = "INSERT INTO {context} (contextlevel, instanceid) - SELECT ".CONTEXT_USER.", u.id + $sql = "SELECT ".CONTEXT_USER.", u.id FROM {user} u WHERE u.deleted = 0 AND NOT EXISTS (SELECT 'x' FROM {context} cx WHERE u.id = cx.instanceid AND cx.contextlevel=".CONTEXT_USER.")"; - $DB->execute($sql); + if ($contextdata = $DB->get_records_sql($sql)) { + foreach ($contextdata as $context) { + context::insert_context_record(CONTEXT_USER, $context->id, null); + } + } } /** @@ -6655,13 +6658,16 @@ class context_coursecat extends context { protected static function create_level_instances() { global $DB; - $sql = "INSERT INTO {context} (contextlevel, instanceid) - SELECT ".CONTEXT_COURSECAT.", cc.id + $sql = "SELECT ".CONTEXT_COURSECAT.", cc.id FROM {course_categories} cc WHERE NOT EXISTS (SELECT 'x' FROM {context} cx WHERE cc.id = cx.instanceid AND cx.contextlevel=".CONTEXT_COURSECAT.")"; - $DB->execute($sql); + if ($contextdata = $DB->get_records_sql($sql)) { + foreach ($contextdata as $context) { + context::insert_context_record(CONTEXT_COURSECAT, $context->id, null); + } + } } /** @@ -6878,13 +6884,16 @@ class context_course extends context { protected static function create_level_instances() { global $DB; - $sql = "INSERT INTO {context} (contextlevel, instanceid) - SELECT ".CONTEXT_COURSE.", c.id + $sql = "SELECT ".CONTEXT_COURSE.", c.id FROM {course} c WHERE NOT EXISTS (SELECT 'x' FROM {context} cx WHERE c.id = cx.instanceid AND cx.contextlevel=".CONTEXT_COURSE.")"; - $DB->execute($sql); + if ($contextdata = $DB->get_records_sql($sql)) { + foreach ($contextdata as $context) { + context::insert_context_record(CONTEXT_COURSE, $context->id, null); + } + } } /** @@ -7132,13 +7141,16 @@ class context_module extends context { protected static function create_level_instances() { global $DB; - $sql = "INSERT INTO {context} (contextlevel, instanceid) - SELECT ".CONTEXT_MODULE.", cm.id + $sql = "SELECT ".CONTEXT_MODULE.", cm.id FROM {course_modules} cm WHERE NOT EXISTS (SELECT 'x' FROM {context} cx WHERE cm.id = cx.instanceid AND cx.contextlevel=".CONTEXT_MODULE.")"; - $DB->execute($sql); + if ($contextdata = $DB->get_records_sql($sql)) { + foreach ($contextdata as $context) { + context::insert_context_record(CONTEXT_MODULE, $context->id, null); + } + } } /** @@ -7349,13 +7361,16 @@ class context_block extends context { protected static function create_level_instances() { global $DB; - $sql = "INSERT INTO {context} (contextlevel, instanceid) - SELECT ".CONTEXT_BLOCK.", bi.id + $sql = "SELECT ".CONTEXT_BLOCK.", bi.id FROM {block_instances} bi WHERE NOT EXISTS (SELECT 'x' FROM {context} cx WHERE bi.id = cx.instanceid AND cx.contextlevel=".CONTEXT_BLOCK.")"; - $DB->execute($sql); + if ($contextdata = $DB->get_records_sql($sql)) { + foreach ($contextdata as $context) { + context::insert_context_record(CONTEXT_BLOCK, $context->id, null); + } + } } /** From 77df1778f26f93ca2c7c9189be43a0474643460d Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Mon, 23 Feb 2015 14:26:58 +0800 Subject: [PATCH 2/2] MDL-48807 core_task: change create_contexts_task to daily frequency --- lib/db/tasks.php | 4 ++-- version.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/db/tasks.php b/lib/db/tasks.php index 3526517ce10..8dc4f4e1cf0 100644 --- a/lib/db/tasks.php +++ b/lib/db/tasks.php @@ -125,8 +125,8 @@ $tasks = array( array( 'classname' => 'core\task\create_contexts_task', 'blocking' => 1, - 'minute' => '*', - 'hour' => '*', + 'minute' => '0', + 'hour' => '0', 'day' => '*', 'dayofweek' => '*', 'month' => '*' diff --git a/version.php b/version.php index 98b3972cd71..70ac5aa2d75 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2015021900.00; // YYYYMMDD = weekly release date of this DEV branch. +$version = 2015022300.00; // YYYYMMDD = weekly release date of this DEV branch. // RR = release increments - 00 in DEV branches. // .XX = incremental changes.