You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.0 KiB
87 lines
2.0 KiB
2 years ago
|
<?php
|
||
|
/**
|
||
|
* Base class for preferences.
|
||
|
*/
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace PhpMyAdmin\Config\Forms;
|
||
|
|
||
|
use PhpMyAdmin\Config\ConfigFile;
|
||
|
use PhpMyAdmin\Config\FormDisplay;
|
||
|
|
||
|
use function is_int;
|
||
|
|
||
|
/**
|
||
|
* Base form for user preferences
|
||
|
*/
|
||
|
abstract class BaseForm extends FormDisplay
|
||
|
{
|
||
|
/**
|
||
|
* @param ConfigFile $cf Config file instance
|
||
|
* @param int|null $serverId 0 if new server, validation; >= 1 if editing a server
|
||
|
*/
|
||
|
final public function __construct(ConfigFile $cf, $serverId = null)
|
||
|
{
|
||
|
parent::__construct($cf);
|
||
|
foreach (static::getForms() as $formName => $form) {
|
||
|
$this->registerForm($formName, $form, $serverId);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* List of available forms, each form is described as an array of fields to display.
|
||
|
* Fields MUST have their counterparts in the $cfg array.
|
||
|
*
|
||
|
* To define form field, use the notation below:
|
||
|
* $forms['Form group']['Form name'] = array('Option/path');
|
||
|
*
|
||
|
* You can assign default values set by special button ("set value: ..."), eg.:
|
||
|
* 'Servers/1/pmadb' => 'phpmyadmin'
|
||
|
*
|
||
|
* To group options, use:
|
||
|
* ':group:' . __('group name') // just define a group
|
||
|
* or
|
||
|
* 'option' => ':group' // group starting from this option
|
||
|
* End group blocks with:
|
||
|
* ':group:end'
|
||
|
*
|
||
|
* @return array
|
||
|
*
|
||
|
* @todo This should be abstract, but that does not work in PHP 5
|
||
|
*/
|
||
|
public static function getForms()
|
||
|
{
|
||
|
return [];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns list of fields used in the form.
|
||
|
*
|
||
|
* @return string[]
|
||
|
*/
|
||
|
public static function getFields()
|
||
|
{
|
||
|
$names = [];
|
||
|
foreach (static::getForms() as $form) {
|
||
|
foreach ($form as $k => $v) {
|
||
|
$names[] = is_int($k) ? $v : $k;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $names;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns name of the form
|
||
|
*
|
||
|
* @return string
|
||
|
*
|
||
|
* @todo This should be abstract, but that does not work in PHP 5
|
||
|
*/
|
||
|
public static function getName()
|
||
|
{
|
||
|
return '';
|
||
|
}
|
||
|
}
|