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