MDL-37432 Calendar: If Calendar url is invalid then remove invalid subscription
This commit is contained in:
+16
-2
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user