/**
 * Checks if there exists a record above that has the locked flag set to true
 * @param $categoryid
 * @param $pluginname
 * @return bool true if locked, false if not locked
 *
 */
function is_block_locked($categoryid, $pluginname)
{
    return is_plugin_locked($categoryid, $pluginname, 'block');
}
$stractivities = get_string("activities");
$strhide = get_string("hide");
$strshow = get_string("show");
$strclearheading = get_string('clear_title', 'local_contextadmin');
$stroverrideheading = get_string('override_title', 'local_contextadmin');
$strlockedheading = get_string('locked_title', 'local_contextadmin');
$stroverridevalueheading = get_string('override_value_title', 'local_contextadmin');
$strsettings = get_string("settings");
$stractivitymodule = get_string("activitymodule");
$strshowmodulecourse = get_string('showmodulecourse');
$haseditsettingscapability = has_capability('local/contextadmin:editowncatsettings', $context);
$haseditvisibilitycapability = has_capability('local/contextadmin:changevisibilty', $context);
// If data submitted, then process and store.
if (!empty($parammodulename) and confirm_sesskey() && ($haseditvisibilitycapability or $haseditsettingscapability) && !is_plugin_locked($catid, $parammodulename, 'modules')) {
    if ($DB->record_exists("modules", array("name" => $parammodulename))) {
        if (!is_plugin_locked($catid, $parammodulename, 'modules')) {
            if ($paramvisible !== null) {
                set_context_module_settings($catid, $parammodulename, array('visible' => $paramvisible, 'search' => ''));
            }
            if ($paramoverride !== null) {
                set_context_module_settings($catid, $parammodulename, array('override' => $paramoverride, 'search' => ''));
            }
            if ($paramlocked !== null) {
                set_context_module_settings($catid, $parammodulename, array('locked' => $paramlocked, 'search' => ''));
            }
            if ($paramclear !== null) {
                remove_category_module_values($catid, $parammodulename);
            }
        } else {
            print_error('modulelocked', 'local_contextadmin');
        }
 public function test_cascade_locked_set_module_settings()
 {
     global $COURSE;
     // Setup.
     // Test Set.
     $COURSE->category = 2;
     set_context_module_settings($COURSE->category, 'assignment', array('visible' => 1));
     $COURSE->category = 3;
     set_context_module_settings($COURSE->category, 'assignment', array('visible' => 0, 'locked' => 1));
     $COURSE->category = 2;
     $this->assertFalse((bool) is_plugin_locked($COURSE->category, 'assignment', 'modules'));
     $COURSE->category = 3;
     $this->assertFalse((bool) is_plugin_locked($COURSE->category, 'assignment', 'modules'));
     $COURSE->category = 4;
     $this->assertTrue((bool) is_plugin_locked($COURSE->category, 'assignment', 'modules'));
     $COURSE->category = 5;
     $this->assertTrue((bool) is_module_locked($COURSE->category, 'assignment'));
     // Teardown.
 }