116 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace dokuwiki\Ui;
 | |
| 
 | |
| use dokuwiki\Form\Form;
 | |
| 
 | |
| /**
 | |
|  * DokuWiki Subscribe Interface
 | |
|  *
 | |
|  * @package dokuwiki\Ui
 | |
|  */
 | |
| class Subscribe extends Ui
 | |
| {
 | |
|     /**
 | |
|      * Display the subscribe form
 | |
|      *
 | |
|      * @author Adrian Lang <lang@cosmocode.de>
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function show()
 | |
|     {
 | |
|         global $INPUT;
 | |
|         global $INFO;
 | |
|         global $ID;
 | |
|         global $lang;
 | |
|         global $conf;
 | |
|         $stime_days = $conf['subscribe_time'] / 60 / 60 / 24;
 | |
| 
 | |
|         // print intro
 | |
|         echo p_locale_xhtml('subscr_form');
 | |
| 
 | |
|         // list up current subscriptions
 | |
|         echo '<h2>'.$lang['subscr_m_current_header'].'</h2>';
 | |
|         echo '<div class="level2">';
 | |
|         if ($INFO['subscribed'] === false) {
 | |
|             echo '<p>'.$lang['subscr_m_not_subscribed'].'</p>';
 | |
|         } else {
 | |
|             echo '<ul>';
 | |
|             foreach ($INFO['subscribed'] as $sub) {
 | |
|                 echo '<li><div class="li">';
 | |
|                 if ($sub['target'] !== $ID) {
 | |
|                     echo '<code class="ns">'.hsc(prettyprint_id($sub['target'])).'</code>';
 | |
|                 } else {
 | |
|                     echo '<code class="page">'.hsc(prettyprint_id($sub['target'])).'</code>';
 | |
|                 }
 | |
|                 $sstl = sprintf($lang['subscr_style_'.$sub['style']], $stime_days);
 | |
|                 if (!$sstl) $sstl = hsc($sub['style']);
 | |
|                 echo ' ('.$sstl.') ';
 | |
| 
 | |
|                 echo '<a href="'.wl(
 | |
|                     $ID,
 | |
|                     array(
 | |
|                          'do'        => 'subscribe',
 | |
|                          'sub_target'=> $sub['target'],
 | |
|                          'sub_style' => $sub['style'],
 | |
|                          'sub_action'=> 'unsubscribe',
 | |
|                          'sectok'    => getSecurityToken()
 | |
|                     )
 | |
|                 ).
 | |
|                     '" class="unsubscribe">'.$lang['subscr_m_unsubscribe'].
 | |
|                     '</a></div></li>';
 | |
|             }
 | |
|             echo '</ul>';
 | |
|         }
 | |
|         echo '</div>';
 | |
| 
 | |
|         // Add new subscription form
 | |
|         echo '<h2>'.$lang['subscr_m_new_header'].'</h2>';
 | |
|         echo '<div class="level2">';
 | |
|         $ns      = getNS($ID).':';
 | |
|         $targets = [
 | |
|             $ID => '<code class="page">'.prettyprint_id($ID).'</code>',
 | |
|             $ns => '<code class="ns">'.prettyprint_id($ns).'</code>',
 | |
|         ];
 | |
|         $styles = [
 | |
|             'every'  => $lang['subscr_style_every'],
 | |
|             'digest' => sprintf($lang['subscr_style_digest'], $stime_days),
 | |
|             'list'   => sprintf($lang['subscr_style_list'], $stime_days),
 | |
|         ];
 | |
| 
 | |
|         // create the form
 | |
|         $form = new Form(['id' => 'subscribe__form']);
 | |
|         $form->addTagOpen('div')->addClass('no');
 | |
|         $form->setHiddenField('id', $ID);
 | |
|         $form->setHiddenField('do', 'subscribe');
 | |
|         $form->setHiddenField('sub_action', 'subscribe');
 | |
| 
 | |
|         $form->addFieldsetOpen($lang['subscr_m_subscribe']);
 | |
|         $value = (array_key_exists($INPUT->post->str('sub_target'), $targets)) ?
 | |
|                  $INPUT->str('sub_target') : key($targets);
 | |
|         foreach ($targets as $val => $label) {
 | |
|             $data = ($value === $val) ? ['checked' => 'checked'] : [];
 | |
|             $form->addRadioButton('sub_target', $label)->val($val)->attrs($data);
 | |
|         }
 | |
|         $form->addFieldsetClose();
 | |
| 
 | |
|         $form->addFieldsetOpen($lang['subscr_m_receive']);
 | |
|         $value = (array_key_exists($INPUT->post->str('sub_style'), $styles)) ?
 | |
|                  $INPUT->str('sub_style') : key($styles);
 | |
|         foreach ($styles as $val => $label) {
 | |
|             $data = ($value === $val) ? ['checked' => 'checked'] : [];
 | |
|             $form->addRadioButton('sub_style', $label)->val($val)->attrs($data);
 | |
|         }
 | |
|         $form->addFieldsetClose();
 | |
| 
 | |
|         $form->addButton('do[subscribe]', $lang['subscr_m_subscribe'])->attr('type', 'submit');
 | |
|         $form->addTagClose('div');
 | |
| 
 | |
|         print $form->toHTML('Subscribe');
 | |
| 
 | |
|         echo '</div>';
 | |
|     }
 | |
| 
 | |
| }
 |