/** * Process parameters and remove the subscription. * * @return void * @access public */ public function launch() { global $interface; global $configArray; if (!isset($_REQUEST['id']) || !isset($_REQUEST['key']) || !isset($_REQUEST['type'])) { PEAR::raiseError('Can\'t unsubscribe'); return; } $id = $_REQUEST['id']; $key = $_REQUEST['key']; $type = $_REQUEST['type']; // display confirm dialog if (!isset($_REQUEST['confirm']) || !$_REQUEST['confirm']) { $params = array('id' => $id, 'type' => $type, 'key' => $key, 'confirm' => true); $unsubscribeUrl = $configArray['Site']['url'] . '/MyResearch/Unsubscribe?' . http_build_query($params); $interface->assign('unsubscribeUrl', $unsubscribeUrl); $interface->setTemplate('unsubscribe.tpl'); $interface->display('layout.tpl'); } else { $success = false; // scheduled alert if ($type == 'alert') { $search = new SearchEntry(); if ($search->get($id)) { $user = new User(); if ($user->get($search->user_id)) { $secret = $this->_getSecret($user, $id); if ($key === $secret) { $search->schedule = 0; $search->update(); $success = true; } } } } else { if ($type == 'reminder') { // due date reminder $user = new User(); if ($user->get($id)) { $secret = $this->_getSecret($user, $id); if ($key === $secret) { $user->due_date_reminder = 0; $user->update(); $success = true; } } } } if ($success) { $interface->assign('success', true); $interface->setTemplate('unsubscribe.tpl'); $interface->display('layout.tpl'); } else { PEAR::raiseError('Can\'t unsubscribe'); } } }