Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
   1  <?php
   2  /* vim: set expandtab tabstop=4 shiftwidth=4: */
   3  // +----------------------------------------------------------------------+
   4  // | PHP version 4.0                                                      |
   5  // +----------------------------------------------------------------------+
   6  // | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group             |
   7  // +----------------------------------------------------------------------+
   8  // | This source file is subject to version 2.0 of the PHP license,       |
   9  // | that is bundled with this package in the file LICENSE, and is        |
  10  // | available at through the world-wide-web at                           |
  11  // | http://www.php.net/license/2_02.txt.                                 |
  12  // | If you did not receive a copy of the PHP license and are unable to   |
  13  // | obtain it through the world-wide-web, please send a note to          |
  14  // | license@php.net so we can mail you a copy immediately.               |
  15  // +----------------------------------------------------------------------+
  16  // | Authors: Adam Daniel <adaniel1@eesus.jnj.com>                        |
  17  // |          Bertrand Mansion <bmansion@mamasam.com>                     |
  18  // +----------------------------------------------------------------------+
  19  //
  20  // $Id$
  21  
  22  require_once('HTML/QuickForm/select.php');
  23  
  24  /**
  25   * This class takes the same arguments as a select element, but instead
  26   * of creating a select ring it creates hidden elements for all values
  27   * already selected with setDefault or setConstant.  This is useful if
  28   * you have a select ring that you don't want visible, but you need all
  29   * selected values to be passed.
  30   *
  31   * @author       Isaac Shepard <ishepard@bsiweb.com>
  32   *
  33   * @version      1.0
  34   * @since        2.1
  35   * @access       public
  36   */
  37  class HTML_QuickForm_hiddenselect extends HTML_QuickForm_select
  38  {
  39      // {{{ constructor
  40  
  41      /**
  42       * Class constructor
  43       *
  44       * @param     string    Select name attribute
  45       * @param     mixed     Label(s) for the select (not used)
  46       * @param     mixed     Data to be used to populate options
  47       * @param     mixed     Either a typical HTML attribute string or an associative array (not used)
  48       * @since     1.0
  49       * @access    public
  50       * @return    void
  51       */
  52      public function __construct($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
  53          // TODO MDL-52313 Replace with the call to parent::__construct().
  54          HTML_QuickForm_element::__construct($elementName, $elementLabel, $attributes);
  55          $this->_persistantFreeze = true;
  56          $this->_type = 'hiddenselect';
  57          if (isset($options)) {
  58              $this->load($options);
  59          }
  60      } //end constructor
  61  
  62      /**
  63       * Old syntax of class constructor. Deprecated in PHP7.
  64       *
  65       * @deprecated since Moodle 3.1
  66       */
  67      public function HTML_QuickForm_hiddenselect($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
  68          debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
  69          self::__construct($elementName, $elementLabel, $options, $attributes);
  70      }
  71  
  72      // }}}
  73      // {{{ toHtml()
  74  
  75      /**
  76       * Returns the SELECT in HTML
  77       *
  78       * @since     1.0
  79       * @access    public
  80       * @return    string
  81       * @throws
  82       */
  83      function toHtml()
  84      {
  85          $tabs    = $this->_getTabs();
  86          $name    = $this->getPrivateName();
  87          $strHtml = '';
  88  
  89          foreach ($this->_values as $key => $val) {
  90              for ($i = 0, $optCount = count($this->_options); $i < $optCount; $i++) {
  91                  if ($val == $this->_options[$i]['attr']['value']) {
  92                      $strHtml .= $tabs . '<input' . $this->_getAttrString(array(
  93                          'type'  => 'hidden',
  94                          'name'  => $name,
  95                          'value' => $val
  96                      )) . " />\n" ;
  97                  }
  98              }
  99          }
 100  
 101          return $strHtml;
 102      } //end func toHtml
 103  
 104      // }}}
 105      // {{{ accept()
 106  
 107     /**
 108      * This is essentially a hidden element and should be rendered as one
 109      */
 110      function accept(&$renderer, $required=false, $error=null)
 111      {
 112          $renderer->renderHidden($this);
 113      }
 114  
 115      // }}}
 116  } //end class HTML_QuickForm_hiddenselect
 117  ?>