Failed Conditions
Pull Request — master (#3198)
by
unknown
03:07
created

Subscribe   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 0
Metric Value
dl 0
loc 106
rs 10
c 0
b 0
f 0
wmc 11
lcom 0
cbo 5

1 Method

Rating   Name   Duplication   Size   Complexity  
C show() 0 94 11
1
<?php
2
3
namespace dokuwiki\Ui;
4
5
use dokuwiki\Form\Form;
6
7
/**
8
 * DokuWiki Subscribe Interface
9
 *
10
 * @package dokuwiki\Ui
11
 */
12
class Subscribe extends Ui
13
{
14
    /**
15
     * Display the subscribe form
16
     *
17
     * @author Adrian Lang <[email protected]>
18
     *
19
     * @triggers HTMLFORM_SUBSCRIBE_OUTPUT
20
     * @return void
21
     */
22
    public function show()
23
    {
24
        global $INPUT;
25
        global $INFO;
26
        global $ID;
27
        global $lang;
28
        global $conf;
29
        $stime_days = $conf['subscribe_time'] / 60 / 60 / 24;
30
31
        // print intro
32
        echo p_locale_xhtml('subscr_form');
33
34
        // list up current subscriptions
35
        echo '<h2>'.$lang['subscr_m_current_header'].'</h2>';
36
        echo '<div class="level2">';
37
        if ($INFO['subscribed'] === false) {
38
            echo '<p>'.$lang['subscr_m_not_subscribed'].'</p>';
39
        } else {
40
            echo '<ul>';
41
            foreach ($INFO['subscribed'] as $sub) {
42
                echo '<li><div class="li">';
43
                if ($sub['target'] !== $ID) {
44
                    echo '<code class="ns">'.hsc(prettyprint_id($sub['target'])).'</code>';
45
                } else {
46
                    echo '<code class="page">'.hsc(prettyprint_id($sub['target'])).'</code>';
47
                }
48
                $sstl = sprintf($lang['subscr_style_'.$sub['style']], $stime_days);
49
                if (!$sstl) $sstl = hsc($sub['style']);
50
                echo ' ('.$sstl.') ';
51
52
                echo '<a href="'.wl(
53
                    $ID,
54
                    array(
55
                         'do'        => 'subscribe',
56
                         'sub_target'=> $sub['target'],
57
                         'sub_style' => $sub['style'],
58
                         'sub_action'=> 'unsubscribe',
59
                         'sectok'    => getSecurityToken()
60
                    )
61
                ).
62
                    '" class="unsubscribe">'.$lang['subscr_m_unsubscribe'].
63
                    '</a></div></li>';
64
            }
65
            echo '</ul>';
66
        }
67
        echo '</div>';
68
69
        // Add new subscription form
70
        echo '<h2>'.$lang['subscr_m_new_header'].'</h2>';
71
        echo '<div class="level2">';
72
        $ns      = getNS($ID).':';
73
        $targets = [
74
            $ID => '<code class="page">'.prettyprint_id($ID).'</code>',
75
            $ns => '<code class="ns">'.prettyprint_id($ns).'</code>',
76
        ];
77
        $styles = [
78
            'every'  => $lang['subscr_style_every'],
79
            'digest' => sprintf($lang['subscr_style_digest'], $stime_days),
80
            'list'   => sprintf($lang['subscr_style_list'], $stime_days),
81
        ];
82
83
        // create the form
84
        $form = new Form(['id' => 'subscribe__form']);
85
        $form->addTagOpen('div')->addClass('no');
86
        $form->setHiddenField('id', $ID);
87
        $form->setHiddenField('do', 'subscribe');
88
        $form->setHiddenField('sub_action', 'subscribe');
89
90
        $form->addFieldsetOpen($lang['subscr_m_subscribe']);
91
        $value = (array_key_exists($INPUT->post->str('sub_target'), $targets)) ?
92
                 $INPUT->str('sub_target') : key($targets);
93
        foreach ($targets as $val => $label) {
94
            $data = ($value === $val) ? ['checked' => 'checked'] : [];
95
            $form->addRadioButton('sub_target', $label)->val($val)->attrs($data);
96
        }
97
        $form->addFieldsetClose();
98
99
        $form->addFieldsetOpen($lang['subscr_m_receive']);
100
        $value = (array_key_exists($INPUT->post->str('sub_style'), $styles)) ?
101
                 $INPUT->str('sub_style') : key($styles);
102
        foreach ($styles as $val => $label) {
103
            $data = ($value === $val) ? ['checked' => 'checked'] : [];
104
            $form->addRadioButton('sub_style', $label)->val($val)->attrs($data);
105
        }
106
        $form->addFieldsetClose();
107
108
        $form->addButton('do[subscribe]', $lang['subscr_m_subscribe'])->attr('type', 'submit');
109
        $form->addTagClose('div');
110
111
        // print form that might be modified by HTMLFORM_SUBSCRIBE_OUTPUT event handlers
112
        print $form->toHTML('subscribe');
113
114
        echo '</div>';
115
    }
116
117
}
118