Merge branch 'MDL-37562-master' of git://github.com/ankitagarwal/moodle

This commit is contained in:
Damyon Wiese 2013-04-08 15:42:36 +08:00
commit 4fd1861c8f
3 changed files with 106 additions and 14 deletions

View file

@ -2801,8 +2801,6 @@ function calendar_add_subscription($sub) {
$sub->pollinterval = 0;
}
$cache = cache::make('core', 'calendar_subscriptions');
if (!empty($sub->name)) {
if (empty($sub->id)) {
$id = $DB->insert_record('event_subscriptions', $sub);
@ -2810,9 +2808,7 @@ function calendar_add_subscription($sub) {
return $id;
} else {
// Why are we doing an update here?
$DB->update_record('event_subscriptions', $sub);
// update cache.
$cache->set($sub->id, $sub);
calendar_update_subscription($sub);
return $sub->id;
}
} else {
@ -2920,11 +2916,7 @@ function calendar_process_subscription_row($subscriptionid, $pollinterval, $acti
break;
}
$sub->pollinterval = $pollinterval;
$DB->update_record('event_subscriptions', $sub);
// update the cache.
$cache = cache::make('core', 'calendar_subscriptions');
$cache->set($sub->id, $sub);
calendar_update_subscription($sub);
// Update the events.
return "<p>".get_string('subscriptionupdated', 'calendar', $sub->name)."</p>" . calendar_update_subscription_events($subscriptionid);
@ -3049,13 +3041,33 @@ function calendar_update_subscription_events($subscriptionid) {
$ical = calendar_get_icalendar($sub->url);
$return = calendar_import_icalendar_events($ical, $sub->courseid, $subscriptionid);
$sub->lastupdated = time();
$DB->update_record('event_subscriptions', $sub);
// Update the cache.
$cache = cache::make('core', 'calendar_subscriptions');
$cache->set($subscriptionid, $sub);
calendar_update_subscription($sub);
return $return;
}
/**
* Update a calendar subscription. Also updates the associated cache.
*
* @param stdClass|array $subscription Subscription record.
* @throws coding_exception If something goes wrong
* @since Moodle 2.5
*/
function calendar_update_subscription($subscription) {
global $DB;
if (is_array($subscription)) {
$subscription = (object)$subscription;
}
if (empty($subscription->id) || !$DB->record_exists('event_subscriptions', array('id' => $subscription->id))) {
throw new coding_exception('Cannot update a subscription without a valid id');
}
$DB->update_record('event_subscriptions', $subscription);
// Update cache.
$cache = cache::make('core', 'calendar_subscriptions');
$cache->set($subscription->id, $subscription);
}
/**
* Checks to see if the user can edit a given subscription feed.
*

View file

@ -0,0 +1,77 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Calendar Ical unit tests
*
* @package core_calendar
* @copyright 2013 Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
/**
* Unit tests for ical APIs.
*
* @package core_calendar
* @copyright 2013 Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @since Moodle 2.5
*/
class core_calendar_ical_testcase extends advanced_testcase {
/**
* Tests set up
*/
protected function setUp() {
global $CFG;
require_once($CFG->dirroot . '/calendar/lib.php');
}
public function test_calendar_update_subscription() {
$this->resetAfterTest(true);
$subscription = new stdClass();
$subscription->eventtype = 'site';
$subscription->name = 'test';
$id = calendar_add_subscription($subscription);
$subscription = new stdClass();
$subscription->id = $id;
$subscription->name = 'awesome';
calendar_update_subscription($subscription);
$sub = calendar_get_subscription($id);
$this->assertEquals($subscription->name, $sub->name);
$subscription = new stdClass();
$subscription->id = $id;
$subscription->name = 'awesome2';
$subscription->pollinterval = 604800;
calendar_update_subscription($subscription);
$sub = calendar_get_subscription($id);
$this->assertEquals($subscription->name, $sub->name);
$this->assertEquals($subscription->pollinterval, $sub->pollinterval);
$subscription = new stdClass();
$subscription->name = 'awesome4';
$this->setExpectedException('coding_exception');
calendar_update_subscription($subscription);
}
}

View file

@ -8,6 +8,9 @@ required changes in code:
* calendar_update_subscription_events() now throws a dml_exception instead of moodle_exception for bad subscriptions
* calendar_get_mini() function now has optional $placement and $courseid paramaters.
optional - no changes needed:
* calendar_update_subscription() should now be used to update Ical subscriptions.
=== 2.4 ===
required changes in code: