/**
  * Prepares data for input field display and outputs HTML code
  *
  * @param Form   $form
  * @param string $field                 field name as it appears in $form
  * @param string $system_path           field path, eg. Servers/1/verbose
  * @param string $work_path             work path, eg. Servers/4/verbose
  * @param string $translated_path       work path changed so that it can be used as XHTML id
  * @param bool   $show_restore_default  whether show "restore default" button besides the input field
  * @param array  &$js_default           array which stores JavaScript code to be displayed
  */
 private function _displayFieldInput(Form $form, $field, $system_path, $work_path, $translated_path, $show_restore_default, array &$js_default)
 {
     $name = PMA_lang_name($system_path);
     $description = PMA_lang_desc($system_path);
     $cf = ConfigFile::getInstance();
     $value = $cf->get($work_path);
     $value_default = $cf->getDefault($system_path);
     $value_is_default = false;
     if ($value === null || $value === $value_default) {
         $value = $value_default;
         $value_is_default = true;
     }
     $opts = array('doc' => $this->getDocLink($system_path), 'wiki' => $this->getWikiLink($system_path), 'show_restore_default' => $show_restore_default);
     if (isset($form->default[$system_path])) {
         $opts['setvalue'] = $form->default[$system_path];
     }
     if (isset($this->errors[$work_path])) {
         $opts['errors'] = $this->errors[$work_path];
     }
     switch ($form->getOptionType($field)) {
         case 'string':
             $type = 'text';
             break;
         case 'double':
             $type = 'text';
             break;
         case 'integer':
             $type = 'text';
             break;
         case 'boolean':
             $type = 'checkbox';
             break;
         case 'select':
             $type = 'select';
             $opts['values'] = array();
             $values = $form->getOptionValueList($form->fields[$field]);
             foreach ($values as $v) {
                 $opts['values'][$v] = $v;
             }
             break;
         case 'array':
             $type = 'list';
             $value = (array) $value;
             $value_default = (array) $value_default;
             break;
         case 'NULL':
             trigger_error("Field {$system_path} has no type", E_USER_WARNING);
             return;
     }
     // TrustedProxies requires changes before displaying
     if ($system_path == 'TrustedProxies') {
         foreach ($value as $ip => &$v) {
             if (!preg_match('/^-\\d+$/', $ip)) {
                 $v = $ip . ': ' . $v;
             }
         }
     }
     // send default value to form's JS
     $js_line = '\'' . $translated_path . '\': ';
     switch ($type) {
         case 'text':
             $js_line .= '\'' . PMA_escapeJsString($value_default) . '\'';
             break;
         case 'checkbox':
             $js_line .= $value_default ? 'true' : 'false';
             break;
         case 'select':
             $value_default_js = is_bool($value_default) ? (int) $value_default : $value_default;
             $js_line .= '[\'' . PMA_escapeJsString($value_default_js) . '\']';
             break;
         case 'list':
             $js_line .= '\'' . PMA_escapeJsString(implode("\n", $value_default)) . '\'';
             break;
     }
     $js_default[] = $js_line;
     display_input($translated_path, $name, $description, $type, $value, $value_is_default, $opts);
 }
 /**
  * Prepares data for input field display and outputs HTML code
  *
  * @uses ConfigFile::get()
  * @uses ConfigFile::getDefault()
  * @uses ConfigFile::getInstance()
  * @uses display_group_footer()
  * @uses display_group_header()
  * @uses display_input()
  * @uses Form::getOptionType()
  * @uses Form::getOptionValueList()
  * @uses PMA_escapeJsString()
  * @uses PMA_lang_desc()
  * @uses PMA_lang_name()
  * @param Form   $form
  * @param string $field                 field name as it appears in $form
  * @param string $system_path           field path, eg. Servers/1/verbose
  * @param string $work_path             work path, eg. Servers/4/verbose
  * @param string $translated_path       work path changed so that it can be used as XHTML id
  * @param bool   $show_restore_default  whether show "restore default" button besides the input field
  * @param mixed  $userprefs_allow       whether user preferences are enabled for this field
  *                                      (null - no support, true/false - enabled/disabled)
  * @param array  &$js_default           array which stores JavaScript code to be displayed
  */
 private function _displayFieldInput(Form $form, $field, $system_path, $work_path, $translated_path, $show_restore_default, $userprefs_allow, array &$js_default)
 {
     $name = PMA_lang_name($system_path);
     $description = PMA_lang_name($system_path, 'desc', '');
     $cf = ConfigFile::getInstance();
     $value = $cf->get($work_path);
     $value_default = $cf->getDefault($system_path);
     $value_is_default = false;
     if ($value === null || $value === $value_default) {
         $value = $value_default;
         $value_is_default = true;
     }
     $opts = array('doc' => $this->getDocLink($system_path), 'wiki' => $this->getWikiLink($system_path), 'show_restore_default' => $show_restore_default, 'userprefs_allow' => $userprefs_allow, 'userprefs_comment' => PMA_lang_name($system_path, 'cmt', ''));
     if (isset($form->default[$system_path])) {
         $opts['setvalue'] = $form->default[$system_path];
     }
     if (isset($this->errors[$work_path])) {
         $opts['errors'] = $this->errors[$work_path];
     }
     switch ($form->getOptionType($field)) {
         case 'string':
             $type = 'text';
             break;
         case 'short_string':
             $type = 'short_text';
             break;
         case 'double':
         case 'integer':
             $type = 'number_text';
             break;
         case 'boolean':
             $type = 'checkbox';
             break;
         case 'select':
             $type = 'select';
             $opts['values'] = $form->getOptionValueList($form->fields[$field]);
             break;
         case 'array':
             $type = 'list';
             $value = (array) $value;
             $value_default = (array) $value_default;
             break;
         case 'group':
             if (substr($field, 7, 4) != 'end:') {
                 // :group:end is changed to :group:end:{unique id} in Form class
                 display_group_header(substr($field, 7));
             } else {
                 display_group_footer();
             }
             return;
         case 'NULL':
             trigger_error("Field {$system_path} has no type", E_USER_WARNING);
             return;
     }
     // TrustedProxies requires changes before displaying
     if ($system_path == 'TrustedProxies') {
         foreach ($value as $ip => &$v) {
             if (!preg_match('/^-\\d+$/', $ip)) {
                 $v = $ip . ': ' . $v;
             }
         }
     }
     $this->_setComments($system_path, $opts);
     // send default value to form's JS
     $js_line = '\'' . $translated_path . '\': ';
     switch ($type) {
         case 'text':
         case 'short_text':
         case 'number_text':
             $js_line .= '\'' . PMA_escapeJsString($value_default) . '\'';
             break;
         case 'checkbox':
             $js_line .= $value_default ? 'true' : 'false';
             break;
         case 'select':
             $value_default_js = is_bool($value_default) ? (int) $value_default : $value_default;
             $js_line .= '[\'' . PMA_escapeJsString($value_default_js) . '\']';
             break;
         case 'list':
             $js_line .= '\'' . PMA_escapeJsString(implode("\n", $value_default)) . '\'';
             break;
     }
     $js_default[] = $js_line;
     display_input($translated_path, $name, $description, $type, $value, $value_is_default, $opts);
 }
Example #3
0
 /**
  * Test for Form::getOptionValueList
  *
  * @return void
  */
 public function testGetOptionValueList()
 {
     $this->assertEquals(array('NHibernate C# DO', 'NHibernate XML'), $this->object->getOptionValueList("Export/codegen_format"));
     $this->assertEquals(array('auto' => 'auto', '1' => 1, '0' => 0), $this->object->getOptionValueList("OBGzip"));
     $this->assertEquals(array('none' => 'Nowhere', 'left' => 'Left', 'right' => 'Right', 'both' => "Both"), $this->object->getOptionValueList("RowActionLinks"));
 }