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