MDL-37432 Calendar: If Calendar url is invalid then remove invalid subscription

This commit is contained in:
Rajesh Taneja
2013-01-21 10:48:30 +08:00
parent 76657ed83c
commit a19a913d7d
2 changed files with 29 additions and 4 deletions
+16 -2
View File
@@ -2866,8 +2866,7 @@ function calendar_process_subscription_row($subscriptionid, $pollinterval, $acti
return "<p>".get_string('subscriptionupdated', 'calendar', $sub->name)."</p>" . calendar_update_subscription_events($subscriptionid);
case $strremove:
$DB->delete_records('event', array('subscriptionid' => $subscriptionid));
$DB->delete_records('event_subscriptions', array('id' => $subscriptionid));
calendar_delete_subscription($subscriptionid);
return get_string('subscriptionremoved', 'calendar', $sub->name);
break;
@@ -2877,6 +2876,21 @@ function calendar_process_subscription_row($subscriptionid, $pollinterval, $acti
return '';
}
/**
* Delete subscription and all related events.
*
* @param int|stdClass $subscription subscription or it's id, which needs to be deleted.
*/
function calendar_delete_subscription($subscription) {
global $DB;
if (is_object($subscription)) {
$subscription = $subscription->id;
}
// Delete subscription and related events.
$DB->delete_records('event', array('subscriptionid' => $subscription));
$DB->delete_records('event_subscriptions', array('id' => $subscription));
}
/**
* From a URL, fetch the calendar and return an iCalendar object.
*
+13 -2
View File
@@ -75,7 +75,13 @@ if (!empty($formdata)) {
$ical->unserialize($calendar);
$importresults = calendar_import_icalendar_events($ical, $courseid, $subscriptionid);
} else {
$importresults = calendar_update_subscription_events($subscriptionid);
try {
$importresults = calendar_update_subscription_events($subscriptionid);
} catch (moodle_exception $e) {
// Delete newly added subscription and show invalid url error.
calendar_delete_subscription($subscriptionid);
print_error($e->errorcode, $e->module, $PAGE->url);
}
}
// Redirect to prevent refresh issues.
redirect($PAGE->url, $importresults);
@@ -83,7 +89,12 @@ if (!empty($formdata)) {
// The user is wanting to perform an action upon an existing subscription.
require_sesskey(); // Must have sesskey for all actions.
if (calendar_can_edit_subscription($subscriptionid)) {
$importresults = calendar_process_subscription_row($subscriptionid, $pollinterval, $action);
try {
$importresults = calendar_process_subscription_row($subscriptionid, $pollinterval, $action);
} catch (moodle_exception $e) {
// If exception caught, then user should be redirected to page where he/she came from.
print_error($e->errorcode, $e->module, $PAGE->url);
}
} else {
print_error('nopermissions', 'error', $PAGE->url, get_string('managesubscriptions', 'calendar'));
}