$r['id'], 'name' => $r['name'],'type' => $r['type']);
} // end collecting keys
/* Foreach through possible keys and assign them */
foreach ($results as $data) {
/* Get the Value from POST/GET var called $data */
$type = $data['type'];
$name = $data['name'];
$apply_to_all = 'check_' . $data['name'];
$new_level = 'level_' . $data['name'];
$id = $data['id'];
$value = scrub_in($_REQUEST[$name]);
/* Some preferences require some extra checks to be performed */
switch ($name) {
case 'sample_rate':
$value = Stream::validate_bitrate($value);
break;
/* MD5 the LastFM & MyStrands so it's not plainTXT */
case 'librefm_pass':
case 'lastfm_pass':
/* If it's our default blanking thing then don't use it */
if ($value == '******') { unset($_REQUEST[$name]); break; }
$value = md5($value);
break;
default:
break;
}
/* Run the update for this preference only if it's set */
if (isset($_REQUEST[$name])) {
Preference::update($id,$pref_id,$value,$_REQUEST[$apply_to_all]);
if (Access::check('interface','100') AND $_REQUEST[$new_level]) {
Preference::update_level($id,$_REQUEST[$new_level]);
}
}
} // end foreach preferences
// Now that we've done that we need to invalidate the cached preverences
Preference::clear_from_session();
} // update_preferences
/**
* update_preference
* This function updates a single preference and is called by the update_preferences function
*/
function update_preference($user_id,$name,$pref_id,$value) {
$apply_check = "check_" . $name;
$level_check = "level_" . $name;
/* First see if they are an administrator and we are applying this to everything */
if ($GLOBALS['user']->has_access(100) AND make_bool($_REQUEST[$apply_check])) {
Preference::update_all($pref_id,$value);
return true;
}
/* Check and see if they are an admin and the level def is set */
if ($GLOBALS['user']->has_access(100) AND make_bool($_REQUEST[$level_check])) {
Preference::update_level($pref_id,$_REQUEST[$level_check]);
}
/* Else make sure that the current users has the right to do this */
if (Preference::has_access($name)) {
$sql = "UPDATE `user_preference` SET `value`='$value' WHERE `preference`='$pref_id' AND `user`='$user_id'";
$db_results = Dba::query($sql);
return true;
}
return false;
} // update_preference
/**
* create_preference_input
* takes the key and then creates the correct type of input for updating it
*/
function create_preference_input($name,$value) {
// Escape it for output
$value = scrub_out($value);
$len = strlen($value);
if ($len <= 1) { $len = 8; }
if (!Preference::has_access($name)) {
if ($value == '1') {
echo "Enabled";
}
elseif ($value == '0') {
echo "Disabled";
}
else {
echo $value;
}
return;
} // if we don't have access to it
switch($name) {
case 'display_menu':
case 'download':
case 'quarantine':
case 'upload':
case 'access_list':
case 'lock_songs':
case 'xml_rpc':
case 'force_http_play':
case 'no_symlinks':
case 'use_auth':
case 'access_control':
case 'allow_stream_playback':
case 'allow_democratic_playback':
case 'allow_localplay_playback':
case 'demo_mode':
case 'condPL':
case 'rio_track_stats':
case 'rio_global_stats':
case 'embed_xspf':
case 'direct_link':
if ($value == '1') { $is_true = "selected=\"selected\""; }
else { $is_false = "selected=\"selected\""; }
echo "\n";
break;
case 'play_type':
if ($value == 'localplay') { $is_local = 'selected="selected"'; }
elseif ($value == 'democratic') { $is_vote = 'selected="selected"'; }
elseif ($value == 'xspf_player') { $is_xspf_player = 'selected="selected"'; }
else { $is_stream = "selected=\"selected\""; }
echo "\n";
break;
case 'playlist_type':
$var_name = $value . "_type";
${$var_name} = "selected=\"selected\"";
echo "\n";
break;
case 'lang':
$languages = get_languages();
$var_name = $value . "_lang";
${$var_name} = "selected=\"selected\"";
echo "\n";
break;
case 'localplay_controller':
$controllers = Localplay::get_controllers();
echo "\n";
break;
case 'localplay_level':
if ($value == '25') { $is_user = 'selected="selected"'; }
elseif ($value == '100') { $is_admin = 'selected="selected"'; }
elseif ($value == '50') { $is_manager = 'selected="selected"'; }
echo "\n";
break;
case 'theme_name':
$themes = get_themes();
echo "\n";
break;
case 'lastfm_pass':
case 'librefm_pass':
echo "";
break;
case 'playlist_method':
${$value} = ' selected="selected"';
echo "\n";
break;
case 'transcode':
${$value} = ' selected="selected"';
echo "\n";
break;
case 'show_lyrics':
if ($value == '1') { $is_true = "selected=\"selected\""; }
else { $is_false = "selected=\"selected\""; }
echo "\n";
break;
default:
echo "";
break;
}
} // create_preference_input
?>