diff options
Diffstat (limited to 'wiki/inc/Action/Subscribe.php')
-rw-r--r-- | wiki/inc/Action/Subscribe.php | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/wiki/inc/Action/Subscribe.php b/wiki/inc/Action/Subscribe.php deleted file mode 100644 index c165710..0000000 --- a/wiki/inc/Action/Subscribe.php +++ /dev/null @@ -1,166 +0,0 @@ -<?php - -namespace dokuwiki\Action; - -use dokuwiki\Action\Exception\ActionAbort; -use dokuwiki\Action\Exception\ActionDisabledException; - -/** - * Class Subscribe - * - * E-Mail subscription handling - * - * @package dokuwiki\Action - */ -class Subscribe extends AbstractUserAction { - - /** @inheritdoc */ - public function minimumPermission() { - return AUTH_READ; - } - - /** @inheritdoc */ - public function checkPreconditions() { - parent::checkPreconditions(); - - global $conf; - if(isset($conf['subscribers']) && !$conf['subscribers']) throw new ActionDisabledException(); - } - - /** @inheritdoc */ - public function preProcess() { - try { - $this->handleSubscribeData(); - } catch(ActionAbort $e) { - throw $e; - } catch(\Exception $e) { - msg($e->getMessage(), -1); - } - } - - /** @inheritdoc */ - public function tplContent() { - tpl_subscribe(); - } - - /** - * Handle page 'subscribe' - * - * @author Adrian Lang <lang@cosmocode.de> - * @throws \Exception if (un)subscribing fails - * @throws ActionAbort when (un)subscribing worked - */ - protected function handleSubscribeData() { - global $lang; - global $INFO; - global $INPUT; - - // get and preprocess data. - $params = array(); - foreach(array('target', 'style', 'action') as $param) { - if($INPUT->has("sub_$param")) { - $params[$param] = $INPUT->str("sub_$param"); - } - } - - // any action given? if not just return and show the subscription page - if(empty($params['action']) || !checkSecurityToken()) return; - - // Handle POST data, may throw exception. - trigger_event('ACTION_HANDLE_SUBSCRIBE', $params, array($this, 'handlePostData')); - - $target = $params['target']; - $style = $params['style']; - $action = $params['action']; - - // Perform action. - $sub = new \Subscription(); - if($action == 'unsubscribe') { - $ok = $sub->remove($target, $INPUT->server->str('REMOTE_USER'), $style); - } else { - $ok = $sub->add($target, $INPUT->server->str('REMOTE_USER'), $style); - } - - if($ok) { - msg( - sprintf( - $lang["subscr_{$action}_success"], hsc($INFO['userinfo']['name']), - prettyprint_id($target) - ), 1 - ); - throw new ActionAbort('redirect'); - } else { - throw new \Exception( - sprintf( - $lang["subscr_{$action}_error"], - hsc($INFO['userinfo']['name']), - prettyprint_id($target) - ) - ); - } - } - - /** - * Validate POST data - * - * Validates POST data for a subscribe or unsubscribe request. This is the - * default action for the event ACTION_HANDLE_SUBSCRIBE. - * - * @author Adrian Lang <lang@cosmocode.de> - * - * @param array &$params the parameters: target, style and action - * @throws \Exception - */ - public function handlePostData(&$params) { - global $INFO; - global $lang; - global $INPUT; - - // Get and validate parameters. - if(!isset($params['target'])) { - throw new \Exception('no subscription target given'); - } - $target = $params['target']; - $valid_styles = array('every', 'digest'); - if(substr($target, -1, 1) === ':') { - // Allow “list” subscribe style since the target is a namespace. - $valid_styles[] = 'list'; - } - $style = valid_input_set( - 'style', $valid_styles, $params, - 'invalid subscription style given' - ); - $action = valid_input_set( - 'action', array('subscribe', 'unsubscribe'), - $params, 'invalid subscription action given' - ); - - // Check other conditions. - if($action === 'subscribe') { - if($INFO['userinfo']['mail'] === '') { - throw new \Exception($lang['subscr_subscribe_noaddress']); - } - } elseif($action === 'unsubscribe') { - $is = false; - foreach($INFO['subscribed'] as $subscr) { - if($subscr['target'] === $target) { - $is = true; - } - } - if($is === false) { - throw new \Exception( - sprintf( - $lang['subscr_not_subscribed'], - $INPUT->server->str('REMOTE_USER'), - prettyprint_id($target) - ) - ); - } - // subscription_set deletes a subscription if style = null. - $style = null; - } - - $params = compact('target', 'style', 'action'); - } - -} |