moodle/blocks/rss_client/db/postgres7.php

133 lines
5.9 KiB
PHP

<?php //$Id$
function rss_client_upgrade($oldversion) {
/// This function does anything necessary to upgrade
/// older versions to match current functionality
global $CFG;
if ($oldversion < 2005111400) {
// title and description should be TEXT as we don't have control over their length.
table_column('block_rss_client','title','title','text');
table_column('block_rss_client','description','description','text');
}
if ($oldversion < 2005090201) {
modify_database('', 'ALTER TABLE prefix_block_rss_client
ALTER COLUMN title SET DEFAULT \'\',
ALTER COLUMN description SET DEFAULT \'\'');
}
if ($oldversion < 2006091100) {
// We need a new field to store whether an RSS feed is shared or private.
table_column('block_rss_client', '', 'shared', 'integer');
// Admin feeds used to be displayed to everybody (shared feeds).
$admins = get_admins();
if (!empty($admins)) {
$count = 0;
foreach($admins as $admin) {
if (!$count) {
$adminsql = 'userid = '.$admin->id;
} else {
$adminsql .= ' OR userid = '.$admin->id;
}
$count++;
}
if ($rssfeeds = get_records_select('block_rss_client', $adminsql)) {
foreach ($rssfeeds as $rssfeed) {
if (!set_field('block_rss_client', 'shared', 1)) {
notice('Could not set '.$rssfeed->title.' as a shared RSS feed.');
}
}
}
}
// Upgrade block to use the Roles System.
$block = get_record('block', 'name', 'rss_client');
if ($blockinstances = get_records('block_instance', 'blockid', $block->id)) {
if (!$adminroles = get_roles_with_capability('moodle/legacy:admin', CAP_ALLOW)) {
notice('Default student role was not found. Roles and permissions '.
'for all your Remote RSS Feed blocks will have to be '.
'manually set after this upgrade.');
}
if (!$teacherroles = get_roles_with_capability('moodle/legacy:teacher', CAP_ALLOW)) {
notice('Default teacher role was not found. Roles and permissions '.
'for all your Remote RSS Feed blocks will have to be '.
'manually set after this upgrade.');
}
if (!$studentroles = get_roles_with_capability('moodle/legacy:student', CAP_ALLOW)) {
notice('Default student role was not found. Roles and permissions '.
'for all your Remote RSS Feed blocks will have to be '.
'manually set after this upgrade.');
}
foreach ($blockinstances as $bi) {
$context = get_context_instance(CONTEXT_MODULE, $bi->id);
if ($bi->pagetype == 'course-view' && $bi->pageid == SITEID) {
// Only the admin was allowed to manage the RSS feed block
// on the site home page.
// Since this is already the default behavior set in
// blocks/rss_client/db/access.php, we don't need to
// specifically assign the capabilities here.
} else {
// Who can add shared feeds? This was defined in lib/rsslib.php
// for config var block_rss_client_submitters.
switch ($CFG->block_rss_client_submitters) {
case 0:
// SUBMITTERS_ALL_ACCOUNT_HOLDERS
foreach ($adminroles as $adminrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_ALLOW, $adminrole->id, $context->id);
}
foreach ($teacherroles as $teacherrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_ALLOW, $teacherrole->id, $context->id);
}
foreach ($studentroles as $studentrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_ALLOW, $studentrole->id, $context->id);
}
break;
case 1:
// SUBMITTERS_ADMIN_ONLY
// Since this is already the default behavior set in
// blocks/rss_client/db/access.php, we don't need to
// specifically assign the capabilities here.
break;
case 2:
// SUBMITTERS_ADMIN_AND_TEACHER
foreach ($adminroles as $adminrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_ALLOW, $adminrole->id, $context->id);
}
foreach ($teacherroles as $teacherrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_ALLOW, $teacherrole->id, $context->id);
}
foreach ($studentroles as $studentrole) {
assign_capability('block/rss_client:createsharedfeeds', CAP_PREVENT, $studentrole->id, $context->id);
}
break;
} // End switch.
}
}
}
}
return true;
}
?>