[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/Ui/ -> Subscribe.php (source)

   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       * @return void
  18       * @author Adrian Lang <lang@cosmocode.de>
  19       *
  20       */
  21      public function show()
  22      {
  23          global $INPUT;
  24          global $INFO;
  25          global $ID;
  26          global $lang;
  27          global $conf;
  28          $stime_days = $conf['subscribe_time'] / 60 / 60 / 24;
  29  
  30          // print intro
  31          echo p_locale_xhtml('subscr_form');
  32  
  33          // list up current subscriptions
  34          echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>';
  35          echo '<div class="level2">';
  36          if ($INFO['subscribed'] === false) {
  37              echo '<p>' . $lang['subscr_m_not_subscribed'] . '</p>';
  38          } else {
  39              echo '<ul>';
  40              foreach ($INFO['subscribed'] as $sub) {
  41                  echo '<li><div class="li">';
  42                  if ($sub['target'] !== $ID) {
  43                      echo '<code class="ns">' . hsc(prettyprint_id($sub['target'])) . '</code>';
  44                  } else {
  45                      echo '<code class="page">' . hsc(prettyprint_id($sub['target'])) . '</code>';
  46                  }
  47                  $sstl = sprintf($lang['subscr_style_' . $sub['style']], $stime_days);
  48                  if (!$sstl) $sstl = hsc($sub['style']);
  49                  echo ' (' . $sstl . ') ';
  50  
  51                  echo '<a href="' . wl(
  52                      $ID,
  53                      [
  54                              'do' => 'subscribe',
  55                              'sub_target' => $sub['target'],
  56                              'sub_style' => $sub['style'],
  57                              'sub_action' => 'unsubscribe',
  58                              'sectok' => getSecurityToken()
  59                          ]
  60                  ) .
  61                      '" class="unsubscribe">' . $lang['subscr_m_unsubscribe'] .
  62                      '</a></div></li>';
  63              }
  64              echo '</ul>';
  65          }
  66          echo '</div>';
  67  
  68          // Add new subscription form
  69          echo '<h2>' . $lang['subscr_m_new_header'] . '</h2>';
  70          echo '<div class="level2">';
  71          $ns = getNS($ID) . ':';
  72          $targets = [
  73              $ID => '<code class="page">' . prettyprint_id($ID) . '</code>',
  74              $ns => '<code class="ns">' . prettyprint_id($ns) . '</code>',
  75          ];
  76          $styles = [
  77              'every' => $lang['subscr_style_every'],
  78              'digest' => sprintf($lang['subscr_style_digest'], $stime_days),
  79              'list' => sprintf($lang['subscr_style_list'], $stime_days),
  80          ];
  81  
  82          // create the form
  83          $form = new Form(['id' => 'subscribe__form']);
  84          $form->addTagOpen('div')->addClass('no');
  85          $form->setHiddenField('id', $ID);
  86          $form->setHiddenField('do', 'subscribe');
  87          $form->setHiddenField('sub_action', 'subscribe');
  88  
  89          $form->addFieldsetOpen($lang['subscr_m_subscribe']);
  90  
  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  
 101          $value = (array_key_exists($INPUT->post->str('sub_style'), $styles)) ?
 102              $INPUT->str('sub_style') : key($styles);
 103          foreach ($styles as $val => $label) {
 104              $data = ($value === $val) ? ['checked' => 'checked'] : [];
 105              $form->addRadioButton('sub_style', $label)->val($val)->attrs($data);
 106          }
 107          $form->addFieldsetClose();
 108  
 109          $form->addButton('do[subscribe]', $lang['subscr_m_subscribe'])->attr('type', 'submit');
 110          $form->addTagClose('div');
 111  
 112          echo $form->toHTML('Subscribe');
 113  
 114          echo '</div>';
 115      }
 116  }