1848cb786SSatoshi Sahara<?php 2848cb786SSatoshi Sahara 3848cb786SSatoshi Saharanamespace dokuwiki\Ui; 4848cb786SSatoshi Sahara 5848cb786SSatoshi Saharause dokuwiki\Extension\Event; 6848cb786SSatoshi Saharause dokuwiki\Form\Form; 7848cb786SSatoshi Sahara 8848cb786SSatoshi Sahara/** 9848cb786SSatoshi Sahara * DokuWiki Subscribe Interface 10848cb786SSatoshi Sahara * 11848cb786SSatoshi Sahara * @package dokuwiki\Ui 12848cb786SSatoshi Sahara */ 13848cb786SSatoshi Saharaclass Subscribe extends Ui 14848cb786SSatoshi Sahara{ 15848cb786SSatoshi Sahara /** 16848cb786SSatoshi Sahara * Display the subscribe form 17848cb786SSatoshi Sahara * 18848cb786SSatoshi Sahara * @author Adrian Lang <lang@cosmocode.de> 19848cb786SSatoshi Sahara * 20848cb786SSatoshi Sahara * @triggers HTML_SUBSCRIBEFORM_OUTPUT 21848cb786SSatoshi Sahara * @return void 22848cb786SSatoshi Sahara */ 23*feee32dcSSatoshi Sahara public function show() 24848cb786SSatoshi Sahara { 25848cb786SSatoshi Sahara global $INPUT; 26848cb786SSatoshi Sahara global $INFO; 27848cb786SSatoshi Sahara global $ID; 28848cb786SSatoshi Sahara global $lang; 29848cb786SSatoshi Sahara global $conf; 30848cb786SSatoshi Sahara $stime_days = $conf['subscribe_time'] / 60 / 60 / 24; 31848cb786SSatoshi Sahara 32848cb786SSatoshi Sahara // print intro 33848cb786SSatoshi Sahara echo p_locale_xhtml('subscr_form'); 34848cb786SSatoshi Sahara 35848cb786SSatoshi Sahara // list up current subscriptions 36848cb786SSatoshi Sahara echo '<h2>'.$lang['subscr_m_current_header'].'</h2>'; 37848cb786SSatoshi Sahara echo '<div class="level2">'; 38848cb786SSatoshi Sahara if ($INFO['subscribed'] === false) { 39848cb786SSatoshi Sahara echo '<p>'.$lang['subscr_m_not_subscribed'].'</p>'; 40848cb786SSatoshi Sahara } else { 41848cb786SSatoshi Sahara echo '<ul>'; 42848cb786SSatoshi Sahara foreach ($INFO['subscribed'] as $sub) { 43848cb786SSatoshi Sahara echo '<li><div class="li">'; 44848cb786SSatoshi Sahara if ($sub['target'] !== $ID) { 45848cb786SSatoshi Sahara echo '<code class="ns">'.hsc(prettyprint_id($sub['target'])).'</code>'; 46848cb786SSatoshi Sahara } else { 47848cb786SSatoshi Sahara echo '<code class="page">'.hsc(prettyprint_id($sub['target'])).'</code>'; 48848cb786SSatoshi Sahara } 49848cb786SSatoshi Sahara $sstl = sprintf($lang['subscr_style_'.$sub['style']], $stime_days); 50848cb786SSatoshi Sahara if (!$sstl) $sstl = hsc($sub['style']); 51848cb786SSatoshi Sahara echo ' ('.$sstl.') '; 52848cb786SSatoshi Sahara 53848cb786SSatoshi Sahara echo '<a href="'.wl( 54848cb786SSatoshi Sahara $ID, 55848cb786SSatoshi Sahara array( 56848cb786SSatoshi Sahara 'do' => 'subscribe', 57848cb786SSatoshi Sahara 'sub_target'=> $sub['target'], 58848cb786SSatoshi Sahara 'sub_style' => $sub['style'], 59848cb786SSatoshi Sahara 'sub_action'=> 'unsubscribe', 60848cb786SSatoshi Sahara 'sectok' => getSecurityToken() 61848cb786SSatoshi Sahara ) 62848cb786SSatoshi Sahara ). 63848cb786SSatoshi Sahara '" class="unsubscribe">'.$lang['subscr_m_unsubscribe']. 64848cb786SSatoshi Sahara '</a></div></li>'; 65848cb786SSatoshi Sahara } 66848cb786SSatoshi Sahara echo '</ul>'; 67848cb786SSatoshi Sahara } 68848cb786SSatoshi Sahara echo '</div>'; 69848cb786SSatoshi Sahara 70848cb786SSatoshi Sahara // Add new subscription form 71848cb786SSatoshi Sahara echo '<h2>'.$lang['subscr_m_new_header'].'</h2>'; 72848cb786SSatoshi Sahara echo '<div class="level2">'; 73848cb786SSatoshi Sahara $ns = getNS($ID).':'; 74848cb786SSatoshi Sahara $targets = [ 75848cb786SSatoshi Sahara $ID => '<code class="page">'.prettyprint_id($ID).'</code>', 76848cb786SSatoshi Sahara $ns => '<code class="ns">'.prettyprint_id($ns).'</code>', 77848cb786SSatoshi Sahara ]; 78848cb786SSatoshi Sahara $styles = [ 79848cb786SSatoshi Sahara 'every' => $lang['subscr_style_every'], 80848cb786SSatoshi Sahara 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), 81848cb786SSatoshi Sahara 'list' => sprintf($lang['subscr_style_list'], $stime_days), 82848cb786SSatoshi Sahara ]; 83848cb786SSatoshi Sahara 84848cb786SSatoshi Sahara // create the form 85848cb786SSatoshi Sahara $form = new Form(['id' => 'subscribe__form']); 86848cb786SSatoshi Sahara $form->addTagOpen('div')->addClass('no'); 87848cb786SSatoshi Sahara $form->setHiddenField('id', $ID); 88848cb786SSatoshi Sahara $form->setHiddenField('do', 'subscribe'); 89848cb786SSatoshi Sahara $form->setHiddenField('sub_action', 'subscribe'); 90848cb786SSatoshi Sahara 91848cb786SSatoshi Sahara $form->addFieldsetOpen($lang['subscr_m_subscribe']); 92848cb786SSatoshi Sahara $value = (array_key_exists($INPUT->post->str('sub_target'), $targets)) ? 93848cb786SSatoshi Sahara $INPUT->str('sub_target') : key($targets); 94848cb786SSatoshi Sahara foreach ($targets as $val => $label) { 95848cb786SSatoshi Sahara $data = ($value === $val) ? ['checked' => 'checked'] : []; 96848cb786SSatoshi Sahara $form->addRadioButton('sub_target', $label)->val($val)->attrs($data); 97848cb786SSatoshi Sahara } 98848cb786SSatoshi Sahara $form->addFieldsetClose(); 99848cb786SSatoshi Sahara 100848cb786SSatoshi Sahara $form->addFieldsetOpen($lang['subscr_m_receive']); 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 112848cb786SSatoshi Sahara // emit HTML_SUBSCRIBEFORM_OUTPUT event 113848cb786SSatoshi Sahara Event::createAndTrigger('HTML_SUBSCRIBEFORM_OUTPUT', $form, null, false); 114848cb786SSatoshi Sahara print $form->toHTML(); 115848cb786SSatoshi Sahara 116848cb786SSatoshi Sahara echo '</div>'.DOKU_LF; 117848cb786SSatoshi Sahara } 118848cb786SSatoshi Sahara 119848cb786SSatoshi Sahara} 120