/**
  * Returns validator list
  *
  * @param ConfigFile $cf Config file instance
  *
  * @return array
  */
 public static function getValidators(ConfigFile $cf)
 {
     static $validators = null;
     if ($validators !== null) {
         return $validators;
     }
     $validators = $cf->getDbEntry('_validators', array());
     if (defined('PMA_SETUP')) {
         return $validators;
     }
     // not in setup script: load additional validators for user
     // preferences we need original config values not overwritten
     // by user preferences, creating a new PMA\libraries\Config instance is a
     // better idea than hacking into its code
     $uvs = $cf->getDbEntry('_userValidators', array());
     foreach ($uvs as $field => $uv_list) {
         $uv_list = (array) $uv_list;
         foreach ($uv_list as &$uv) {
             if (!is_array($uv)) {
                 continue;
             }
             for ($i = 1, $nb = count($uv); $i < $nb; $i++) {
                 if (mb_substr($uv[$i], 0, 6) == 'value:') {
                     $uv[$i] = PMA_arrayRead(mb_substr($uv[$i], 6), $GLOBALS['PMA_Config']->base_settings);
                 }
             }
         }
         $validators[$field] = isset($validators[$field]) ? array_merge((array) $validators[$field], $uv_list) : $uv_list;
     }
     return $validators;
 }
示例#2
0
/**
 * Returns validator list
 *
 * @return array
 */
function PMA_config_get_validators()
{
    static $validators = null;
    if ($validators === null) {
        $cf = ConfigFile::getInstance();
        $validators = $cf->getDbEntry('_validators', array());
        if (!defined('PMA_SETUP')) {
            // not in setup script: load additional validators for user
            // preferences we need original config values not overwritten
            // by user preferences, creating a new PMA_Config instance is a
            // better idea than hacking into its code
            $org_cfg = $cf->getOrgConfigObj();
            $uvs = $cf->getDbEntry('_userValidators', array());
            foreach ($uvs as $field => $uv_list) {
                $uv_list = (array) $uv_list;
                foreach ($uv_list as &$uv) {
                    if (!is_array($uv)) {
                        continue;
                    }
                    for ($i = 1; $i < count($uv); $i++) {
                        if (substr($uv[$i], 0, 6) == 'value:') {
                            $uv[$i] = PMA_arrayRead(substr($uv[$i], 6), $org_cfg->settings);
                        }
                    }
                }
                $validators[$field] = isset($validators[$field]) ? array_merge((array) $validators[$field], $uv_list) : $uv_list;
            }
        }
    }
    return $validators;
}
示例#3
0
 /**
  * Test for PMA_arrayRead
  *
  * @return void
  */
 function testRead()
 {
     $arr = array("int" => 1, "str" => "str_val", "arr" => array('val1', 'val2', 'val3'), "sarr" => array('arr1' => array(1, 2, 3), array(3, array('a', 'b', 'c'), 4)));
     $this->assertEquals(PMA_arrayRead('int', $arr), $arr['int']);
     $this->assertEquals(PMA_arrayRead('str', $arr), $arr['str']);
     $this->assertEquals(PMA_arrayRead('arr/0', $arr), $arr['arr'][0]);
     $this->assertEquals(PMA_arrayRead('arr/1', $arr), $arr['arr'][1]);
     $this->assertEquals(PMA_arrayRead('arr/2', $arr), $arr['arr'][2]);
     $this->assertEquals(PMA_arrayRead('sarr/arr1/0', $arr), $arr['sarr']['arr1'][0]);
     $this->assertEquals(PMA_arrayRead('sarr/arr1/1', $arr), $arr['sarr']['arr1'][1]);
     $this->assertEquals(PMA_arrayRead('sarr/arr1/2', $arr), $arr['sarr']['arr1'][2]);
     $this->assertEquals(PMA_arrayRead('sarr/0/0', $arr), $arr['sarr'][0][0]);
     $this->assertEquals(PMA_arrayRead('sarr/0/1', $arr), $arr['sarr'][0][1]);
     $this->assertEquals(PMA_arrayRead('sarr/0/1/2', $arr), $arr['sarr'][0][1][2]);
     $this->assertEquals(PMA_arrayRead('sarr/not_exiting/1', $arr), null);
     $this->assertEquals(PMA_arrayRead('sarr/not_exiting/1', $arr, 0), 0);
     $this->assertEquals(PMA_arrayRead('sarr/not_exiting/1', $arr, 'default_val'), 'default_val');
 }
示例#4
0
 /**
  * Sets config value which is stored in user preferences (if available)
  * or in a cookie.
  *
  * If user preferences are not yet initialized, option is applied to
  * global config and added to a update queue, which is processed
  * by {@link loadUserPreferences()}
  *
  * @param string $cookie_name   can be null
  * @param string $cfg_path      configuration path
  * @param mixed  $new_cfg_value new value
  * @param mixed  $default_value default value
  *
  * @return void
  */
 function setUserValue($cookie_name, $cfg_path, $new_cfg_value, $default_value = null)
 {
     // use permanent user preferences if possible
     $prefs_type = $this->get('user_preferences');
     if ($prefs_type) {
         include_once './libraries/user_preferences.lib.php';
         if ($default_value === null) {
             $default_value = PMA_arrayRead($cfg_path, $this->default);
         }
         PMA_persistOption($cfg_path, $new_cfg_value, $default_value);
     }
     if ($prefs_type != 'db' && $cookie_name) {
         // fall back to cookies
         if ($default_value === null) {
             $default_value = PMA_arrayRead($cfg_path, $this->settings);
         }
         $this->setCookie($cookie_name, $new_cfg_value, $default_value);
     }
     PMA_arrayWrite($cfg_path, $GLOBALS['cfg'], $new_cfg_value);
     PMA_arrayWrite($cfg_path, $this->settings, $new_cfg_value);
 }
 /**
  * Returns configuration array (full, multidimensional format)
  *
  * @return array
  */
 public function getConfig()
 {
     $c = $_SESSION[$this->_id];
     foreach ($this->_cfgUpdateReadMapping as $map_to => $map_from) {
         PMA_arrayWrite($map_to, $c, PMA_arrayRead($map_from, $c));
         PMA_arrayRemove($map_from, $c);
     }
     return $c;
 }
示例#6
0
 /**
  * Returns configuration array (full, multidimensional format)
  *
  * @return array
  */
 public function getConfig()
 {
     $c = $_SESSION[$this->_id];
     foreach ($this->_cfgUpdateReadMapping as $map_to => $map_from) {
         // if the key $c exists in $map_to
         if (PMA_arrayRead($map_to, $c) !== null) {
             PMA_arrayWrite($map_to, $c, PMA_arrayRead($map_from, $c));
             PMA_arrayRemove($map_from, $c);
         }
     }
     return $c;
 }