/**
  * Test for PMA_arrayWrite
  *
  * @return void
  */
 function testWrite()
 {
     $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)));
     PMA_arrayWrite('int', $arr, 5);
     $this->assertEquals($arr['int'], 5);
     PMA_arrayWrite('str', $arr, '_str');
     $this->assertEquals($arr['str'], '_str');
     PMA_arrayWrite('arr/0', $arr, 'val_arr_0');
     $this->assertEquals($arr['arr'][0], 'val_arr_0');
     PMA_arrayWrite('arr/1', $arr, 'val_arr_1');
     $this->assertEquals($arr['arr'][1], 'val_arr_1');
     PMA_arrayWrite('arr/2', $arr, 'val_arr_2');
     $this->assertEquals($arr['arr'][2], 'val_arr_2');
     PMA_arrayWrite('sarr/arr1/0', $arr, 'val_sarr_arr_0');
     $this->assertEquals($arr['sarr']['arr1'][0], 'val_sarr_arr_0');
     PMA_arrayWrite('sarr/arr1/1', $arr, 'val_sarr_arr_1');
     $this->assertEquals($arr['sarr']['arr1'][1], 'val_sarr_arr_1');
     PMA_arrayWrite('sarr/arr1/2', $arr, 'val_sarr_arr_2');
     $this->assertEquals($arr['sarr']['arr1'][2], 'val_sarr_arr_2');
     PMA_arrayWrite('sarr/0/0', $arr, 5);
     $this->assertEquals($arr['sarr'][0][0], 5);
     PMA_arrayWrite('sarr/0/1/0', $arr, 'e');
     $this->assertEquals($arr['sarr'][0][1][0], 'e');
     PMA_arrayWrite('sarr/not_existing/1', $arr, 'some_val');
     $this->assertEquals($arr['sarr']['not_existing'][1], 'some_val');
     PMA_arrayWrite('sarr/0/2', $arr, null);
     $this->assertNull($arr['sarr'][0][2]);
 }
Example #2
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 a user preferences array filtered by $cfg['UserprefsDisallow']
 * (blacklist) and keys from user preferences form (whitelist)
 *
 * @param array $config_data path => value pairs
 *
 * @return array
 */
function PMA_applyUserprefs(array $config_data)
{
    $cfg = array();
    $blacklist = array_flip($GLOBALS['cfg']['UserprefsDisallow']);
    if (!$GLOBALS['cfg']['UserprefsDeveloperTab']) {
        // disallow everything in the Developers tab
        $blacklist['DBG/sql'] = true;
    }
    $whitelist = array_flip(PMA_readUserprefsFieldNames());
    // whitelist some additional fields which are custom handled
    $whitelist['ThemeDefault'] = true;
    $whitelist['fontsize'] = true;
    $whitelist['lang'] = true;
    $whitelist['collation_connection'] = true;
    $whitelist['Server/hide_db'] = true;
    $whitelist['Server/only_db'] = true;
    foreach ($config_data as $path => $value) {
        if (!isset($whitelist[$path]) || isset($blacklist[$path])) {
            continue;
        }
        PMA_arrayWrite($path, $cfg, $value);
    }
    return $cfg;
}
 /**
  * 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;
 }
Example #5
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;
 }