xref: /dokuwiki/inc/Ui/Subscribe.php (revision 26dfc2323f8f70cb69aac4c8c51bf7997809f2ca)
1848cb786SSatoshi Sahara<?php
2848cb786SSatoshi Sahara
3848cb786SSatoshi Saharanamespace dokuwiki\Ui;
4848cb786SSatoshi Sahara
5848cb786SSatoshi Saharause dokuwiki\Form\Form;
6848cb786SSatoshi Sahara
7848cb786SSatoshi Sahara/**
8848cb786SSatoshi Sahara * DokuWiki Subscribe Interface
9848cb786SSatoshi Sahara *
10848cb786SSatoshi Sahara * @package dokuwiki\Ui
11848cb786SSatoshi Sahara */
12848cb786SSatoshi Saharaclass Subscribe extends Ui
13848cb786SSatoshi Sahara{
14848cb786SSatoshi Sahara    /**
15848cb786SSatoshi Sahara     * Display the subscribe form
16848cb786SSatoshi Sahara     *
17e2d055f5SAndreas Gohr     * @return void
18848cb786SSatoshi Sahara     * @author Adrian Lang <lang@cosmocode.de>
19848cb786SSatoshi Sahara     *
20848cb786SSatoshi Sahara     */
21feee32dcSSatoshi Sahara    public function show()
22848cb786SSatoshi Sahara    {
23848cb786SSatoshi Sahara        global $INPUT;
24848cb786SSatoshi Sahara        global $INFO;
25848cb786SSatoshi Sahara        global $ID;
26848cb786SSatoshi Sahara        global $lang;
27848cb786SSatoshi Sahara        global $conf;
28848cb786SSatoshi Sahara        $stime_days = $conf['subscribe_time'] / 60 / 60 / 24;
29848cb786SSatoshi Sahara
30848cb786SSatoshi Sahara        // print intro
31848cb786SSatoshi Sahara        echo p_locale_xhtml('subscr_form');
32848cb786SSatoshi Sahara
33848cb786SSatoshi Sahara        // list up current subscriptions
34848cb786SSatoshi Sahara        echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>';
35848cb786SSatoshi Sahara        echo '<div class="level2">';
36848cb786SSatoshi Sahara        if ($INFO['subscribed'] === false) {
37848cb786SSatoshi Sahara            echo '<p>' . $lang['subscr_m_not_subscribed'] . '</p>';
38848cb786SSatoshi Sahara        } else {
39848cb786SSatoshi Sahara            echo '<ul>';
40848cb786SSatoshi Sahara            foreach ($INFO['subscribed'] as $sub) {
41848cb786SSatoshi Sahara                echo '<li><div class="li">';
42848cb786SSatoshi Sahara                if ($sub['target'] !== $ID) {
43848cb786SSatoshi Sahara                    echo '<code class="ns">' . hsc(prettyprint_id($sub['target'])) . '</code>';
44848cb786SSatoshi Sahara                } else {
45848cb786SSatoshi Sahara                    echo '<code class="page">' . hsc(prettyprint_id($sub['target'])) . '</code>';
46848cb786SSatoshi Sahara                }
47848cb786SSatoshi Sahara                $sstl = sprintf($lang['subscr_style_' . $sub['style']], $stime_days);
48848cb786SSatoshi Sahara                if (!$sstl) $sstl = hsc($sub['style']);
49848cb786SSatoshi Sahara                echo ' (' . $sstl . ') ';
50848cb786SSatoshi Sahara
51848cb786SSatoshi Sahara                echo '<a href="' . wl(
52848cb786SSatoshi Sahara                    $ID,
53e2d055f5SAndreas Gohr                    [
54848cb786SSatoshi Sahara                            'do' => 'subscribe',
55848cb786SSatoshi Sahara                            'sub_target' => $sub['target'],
56848cb786SSatoshi Sahara                            'sub_style' => $sub['style'],
57848cb786SSatoshi Sahara                            'sub_action' => 'unsubscribe',
58848cb786SSatoshi Sahara                            'sectok' => getSecurityToken()
59e2d055f5SAndreas Gohr                        ]
60848cb786SSatoshi Sahara                ) .
61848cb786SSatoshi Sahara                    '" class="unsubscribe">' . $lang['subscr_m_unsubscribe'] .
62848cb786SSatoshi Sahara                    '</a></div></li>';
63848cb786SSatoshi Sahara            }
64848cb786SSatoshi Sahara            echo '</ul>';
65848cb786SSatoshi Sahara        }
66848cb786SSatoshi Sahara        echo '</div>';
67848cb786SSatoshi Sahara
68848cb786SSatoshi Sahara        // Add new subscription form
69848cb786SSatoshi Sahara        echo '<h2>' . $lang['subscr_m_new_header'] . '</h2>';
70848cb786SSatoshi Sahara        echo '<div class="level2">';
71848cb786SSatoshi Sahara        $ns = getNS($ID) . ':';
72848cb786SSatoshi Sahara        $targets = [
73848cb786SSatoshi Sahara            $ID => '<code class="page">' . prettyprint_id($ID) . '</code>',
74848cb786SSatoshi Sahara            $ns => '<code class="ns">' . prettyprint_id($ns) . '</code>',
75848cb786SSatoshi Sahara        ];
76848cb786SSatoshi Sahara        $styles = [
77848cb786SSatoshi Sahara            'every' => $lang['subscr_style_every'],
78848cb786SSatoshi Sahara            'digest' => sprintf($lang['subscr_style_digest'], $stime_days),
79848cb786SSatoshi Sahara            'list' => sprintf($lang['subscr_style_list'], $stime_days),
80848cb786SSatoshi Sahara        ];
81848cb786SSatoshi Sahara
82848cb786SSatoshi Sahara        // create the form
83848cb786SSatoshi Sahara        $form = new Form(['id' => 'subscribe__form']);
84848cb786SSatoshi Sahara        $form->addTagOpen('div')->addClass('no');
85848cb786SSatoshi Sahara        $form->setHiddenField('id', $ID);
86848cb786SSatoshi Sahara        $form->setHiddenField('do', 'subscribe');
87848cb786SSatoshi Sahara        $form->setHiddenField('sub_action', 'subscribe');
88848cb786SSatoshi Sahara
89848cb786SSatoshi Sahara        $form->addFieldsetOpen($lang['subscr_m_subscribe']);
90e2d055f5SAndreas Gohr
91848cb786SSatoshi Sahara        $value = (array_key_exists($INPUT->post->str('sub_target'), $targets)) ?
92848cb786SSatoshi Sahara            $INPUT->str('sub_target') : key($targets);
93848cb786SSatoshi Sahara        foreach ($targets as $val => $label) {
94848cb786SSatoshi Sahara            $data = ($value === $val) ? ['checked' => 'checked'] : [];
95848cb786SSatoshi Sahara            $form->addRadioButton('sub_target', $label)->val($val)->attrs($data);
96848cb786SSatoshi Sahara        }
97848cb786SSatoshi Sahara        $form->addFieldsetClose();
98848cb786SSatoshi Sahara
99848cb786SSatoshi Sahara        $form->addFieldsetOpen($lang['subscr_m_receive']);
100e2d055f5SAndreas Gohr
101848cb786SSatoshi Sahara        $value = (array_key_exists($INPUT->post->str('sub_style'), $styles)) ?
102848cb786SSatoshi Sahara            $INPUT->str('sub_style') : key($styles);
103848cb786SSatoshi Sahara        foreach ($styles as $val => $label) {
104848cb786SSatoshi Sahara            $data = ($value === $val) ? ['checked' => 'checked'] : [];
105848cb786SSatoshi Sahara            $form->addRadioButton('sub_style', $label)->val($val)->attrs($data);
106848cb786SSatoshi Sahara        }
107848cb786SSatoshi Sahara        $form->addFieldsetClose();
108848cb786SSatoshi Sahara
109848cb786SSatoshi Sahara        $form->addButton('do[subscribe]', $lang['subscr_m_subscribe'])->attr('type', 'submit');
110848cb786SSatoshi Sahara        $form->addTagClose('div');
111848cb786SSatoshi Sahara
112*26dfc232SAndreas Gohr        echo $form->toHTML('Subscribe');
113848cb786SSatoshi Sahara
114628d5475SSatoshi Sahara        echo '</div>';
115848cb786SSatoshi Sahara    }
116848cb786SSatoshi Sahara}
117