123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * Page-related settings
- *
- * @package PhpMyAdmin
- */
- namespace PhpMyAdmin\Config;
- use PhpMyAdmin\Config\ConfigFile;
- use PhpMyAdmin\Config\FormDisplay;
- use PhpMyAdmin\Config\Forms\Page\PageFormList;
- use PhpMyAdmin\Core;
- use PhpMyAdmin\Message;
- use PhpMyAdmin\Response;
- use PhpMyAdmin\UserPreferences;
- /**
- * Page-related settings
- *
- * @package PhpMyAdmin
- */
- class PageSettings
- {
- /**
- * Contains id of the form element
- * @var string
- */
- private $_elemId = 'page_settings_modal';
- /**
- * Name of the group to show
- * @var string
- */
- private $_groupName = '';
- /**
- * Contains HTML of errors
- * @var string
- */
- private $_errorHTML = '';
- /**
- * Contains HTML of settings
- * @var string
- */
- private $_HTML = '';
- /**
- * @var UserPreferences
- */
- private $userPreferences;
- /**
- * Constructor
- *
- * @param string $formGroupName The name of config form group to display
- * @param string $elemId Id of the div containing settings
- */
- public function __construct($formGroupName, $elemId = null)
- {
- $this->userPreferences = new UserPreferences();
- $form_class = PageFormList::get($formGroupName);
- if (is_null($form_class)) {
- return;
- }
- if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') {
- return;
- }
- if (!empty($elemId)) {
- $this->_elemId = $elemId;
- }
- $this->_groupName = $formGroupName;
- $cf = new ConfigFile($GLOBALS['PMA_Config']->base_settings);
- $this->userPreferences->pageInit($cf);
- $form_display = new $form_class($cf);
- // Process form
- $error = null;
- if (isset($_POST['submit_save'])
- && $_POST['submit_save'] == $formGroupName
- ) {
- $this->_processPageSettings($form_display, $cf, $error);
- }
- // Display forms
- $this->_HTML = $this->_getPageSettingsDisplay($form_display, $error);
- }
- /**
- * Process response to form
- *
- * @param FormDisplay &$form_display Form
- * @param ConfigFile &$cf Configuration file
- * @param Message|null &$error Error message
- *
- * @return void
- */
- private function _processPageSettings(&$form_display, &$cf, &$error)
- {
- if ($form_display->process(false) && !$form_display->hasErrors()) {
- // save settings
- $result = $this->userPreferences->save($cf->getConfigArray());
- if ($result === true) {
- // reload page
- $response = Response::getInstance();
- Core::sendHeaderLocation(
- $response->getFooter()->getSelfUrl('unencoded')
- );
- exit();
- } else {
- $error = $result;
- }
- }
- }
- /**
- * Store errors in _errorHTML
- *
- * @param FormDisplay &$form_display Form
- * @param Message|null &$error Error message
- *
- * @return void
- */
- private function _storeError(&$form_display, &$error)
- {
- $retval = '';
- if ($error) {
- $retval .= $error->getDisplay();
- }
- if ($form_display->hasErrors()) {
- // form has errors
- $retval .= '<div class="error config-form">'
- . '<b>' . __(
- 'Cannot save settings, submitted configuration form contains '
- . 'errors!'
- ) . '</b>'
- . $form_display->displayErrors()
- . '</div>';
- }
- $this->_errorHTML = $retval;
- }
- /**
- * Display page-related settings
- *
- * @param FormDisplay &$form_display Form
- * @param Message &$error Error message
- *
- * @return string
- */
- private function _getPageSettingsDisplay(&$form_display, &$error)
- {
- $response = Response::getInstance();
- $retval = '';
- $this->_storeError($form_display, $error);
- $retval .= '<div id="' . $this->_elemId . '">';
- $retval .= '<div class="page_settings">';
- $retval .= $form_display->getDisplay(
- true,
- true,
- false,
- $response->getFooter()->getSelfUrl(),
- array(
- 'submit_save' => $this->_groupName
- )
- );
- $retval .= '</div>';
- $retval .= '</div>';
- return $retval;
- }
- /**
- * Get HTML output
- *
- * @return string
- */
- public function getHTML()
- {
- return $this->_HTML;
- }
- /**
- * Get error HTML output
- *
- * @return string
- */
- public function getErrorHTML()
- {
- return $this->_errorHTML;
- }
- /**
- * Group to show for Page-related settings
- * @param string $formGroupName The name of config form group to display
- * @return PageSettings
- */
- public static function showGroup($formGroupName)
- {
- $object = new PageSettings($formGroupName);
- $response = Response::getInstance();
- $response->addHTML($object->getErrorHTML());
- $response->addHTML($object->getHTML());
- return $object;
- }
- /**
- * Get HTML for navigation settings
- * @return string
- */
- public static function getNaviSettings()
- {
- $object = new PageSettings('Navi', 'pma_navigation_settings');
- $response = Response::getInstance();
- $response->addHTML($object->getErrorHTML());
- return $object->getHTML();
- }
- }
|