$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 ?>