Exemplo n.º 1
0
/**
 * Display the subscribe form
 *
 * @author Adrian Lang <*****@*****.**>
 */
function tpl_subscribe()
{
    global $INFO;
    global $ID;
    global $lang;
    global $conf;
    $stime_days = $conf['subscribe_time'] / 60 / 60 / 24;
    echo p_locale_xhtml('subscr_form');
    echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>';
    echo '<div class="level2">';
    if ($INFO['subscribed'] === false) {
        echo '<p>' . $lang['subscr_m_not_subscribed'] . '</p>';
    } else {
        echo '<ul>';
        foreach ($INFO['subscribed'] as $sub) {
            echo '<li><div class="li">';
            if ($sub['target'] !== $ID) {
                echo '<code class="ns">' . hsc(prettyprint_id($sub['target'])) . '</code>';
            } else {
                echo '<code class="page">' . hsc(prettyprint_id($sub['target'])) . '</code>';
            }
            $sstl = sprintf($lang['subscr_style_' . $sub['style']], $stime_days);
            if (!$sstl) {
                $sstl = hsc($sub['style']);
            }
            echo ' (' . $sstl . ') ';
            echo '<a href="' . wl($ID, array('do' => 'subscribe', 'sub_target' => $sub['target'], 'sub_style' => $sub['style'], 'sub_action' => 'unsubscribe', 'sectok' => getSecurityToken())) . '" class="unsubscribe">' . $lang['subscr_m_unsubscribe'] . '</a></div></li>';
        }
        echo '</ul>';
    }
    echo '</div>';
    // Add new subscription form
    echo '<h2>' . $lang['subscr_m_new_header'] . '</h2>';
    echo '<div class="level2">';
    $ns = getNS($ID) . ':';
    $targets = array($ID => '<code class="page">' . prettyprint_id($ID) . '</code>', $ns => '<code class="ns">' . prettyprint_id($ns) . '</code>');
    $styles = array('every' => $lang['subscr_style_every'], 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), 'list' => sprintf($lang['subscr_style_list'], $stime_days));
    $form = new Doku_Form(array('id' => 'subscribe__form'));
    $form->startFieldset($lang['subscr_m_subscribe']);
    $form->addRadioSet('sub_target', $targets);
    $form->startFieldset($lang['subscr_m_receive']);
    $form->addRadioSet('sub_style', $styles);
    $form->addHidden('sub_action', 'subscribe');
    $form->addHidden('do', 'subscribe');
    $form->addHidden('id', $ID);
    $form->endFieldset();
    $form->addElement(form_makeButton('submit', 'subscribe', $lang['subscr_m_subscribe']));
    html_form('SUBSCRIBE', $form);
    echo '</div>';
}
Exemplo n.º 2
0
 /**
  * Send a list mail
  *
  * Sends a list mail showing a list of changed pages.
  *
  * @author Adrian Lang <*****@*****.**>
  *
  * @param string $subscriber_mail The target mail address
  * @param array  $ids             Array of ids
  * @param string $ns_id           The id of the namespace
  * @return bool true if a mail was sent
  */
 protected function send_list($subscriber_mail, $ids, $ns_id)
 {
     if (count($ids) === 0) {
         return false;
     }
     $tlist = '';
     $hlist = '<ul>';
     foreach ($ids as $id) {
         $link = wl($id, array(), true);
         $tlist .= '* ' . $link . NL;
         $hlist .= '<li><a href="' . $link . '">' . hsc($id) . '</a></li>' . NL;
     }
     $hlist .= '</ul>';
     $id = prettyprint_id($ns_id);
     $trep = array('DIFF' => rtrim($tlist), 'PAGE' => $id, 'SUBSCRIBE' => wl($id, array('do' => 'subscribe'), true, '&'));
     $hrep = array('DIFF' => $hlist);
     return $this->send($subscriber_mail, 'subscribe_list', $ns_id, 'subscr_list', $trep, $hrep);
 }
Exemplo n.º 3
0
/**
 * 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 <*****@*****.**>
 */
function subscription_handle_post(&$params)
{
    global $INFO;
    global $lang;
    // 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'], $_SERVER['REMOTE_USER'], prettyprint_id($target)));
        }
        // subscription_set deletes a subscription if style = null.
        $style = null;
    }
    $data = in_array($style, array('list', 'digest')) ? time() : null;
    $params = compact('target', 'style', 'data', 'action');
}
Exemplo n.º 4
0
/**
 * Send a list mail
 *
 * Sends a list mail showing a list of changed pages.
 *
 * @param string $subscriber_mail The target mail address
 * @param array  $ids             Array of ids
 * @param string $ns_id           The id of the namespace
 *
 * @author Adrian Lang <*****@*****.**>
 */
function subscription_send_list($subscriber_mail, $ids, $ns_id)
{
    if (count($ids) === 0) {
        return;
    }
    global $conf;
    $list = '';
    foreach ($ids as $id) {
        $list .= '* ' . wl($id, array(), true) . NL;
    }
    subscription_send($subscriber_mail, array('DIFF' => rtrim($list), 'SUBSCRIBE' => wl($ns_id . $conf['start'], array('do' => 'subscribe'), true, '&')), 'subscribe_list', prettyprint_id($ns_id), 'subscr_list');
}
Exemplo n.º 5
0
/**
 * Send a list mail
 *
 * Sends a list mail showing a list of changed pages.
 *
 * @param string $subscriber_mail The target mail address
 * @param array  $changes         Array of changes
 * @param string $id              The id of the namespace
 *
 * @author Adrian Lang <*****@*****.**>
 */
function subscription_send_list($subscriber_mail, $changes, $id)
{
    global $conf;
    $list = '';
    foreach ($changes as $change) {
        $list .= '* ' . wl($change['id'], array(), true) . NL;
    }
    subscription_send($subscriber_mail, array('DIFF' => rtrim($list), 'SUBSCRIBE' => wl($id . $conf['start'], array('do' => 'subscribe'), true, '&')), 'subscribe_list', prettyprint_id($id), 'subscr_list');
}