name] = $r->value;
} // db results
if (strlen($results['theme_name']) > 0) {
$results['theme_path'] = "/themes/" . $results['theme_name'];
}
conf($results,1);
} // set_site_preferences
/*!
@function clean_preference_name
@discussion s/_/ /g & upper case first
*/
function clean_preference_name($name) {
$name = str_replace("_"," ",$name);
$name = ucwords($name);
return $name;
} // clean_preference_name
/*!
@function update_preferences
@discussion grabs the current keys that should be added
and then runs throught $_REQUEST looking for those
values and updates them for this user
*/
function update_preferences($pref_id=0) {
$pref_user = new User(0,$pref_id);
/* Get current keys */
$sql = "SELECT id,name,type FROM preferences";
if ($pref_id != '0') { $sql .= " WHERE type='user'"; }
$db_results = mysql_query($sql, dbh());
// Collect the current possible keys
while ($r = mysql_fetch_object($db_results)) {
$results[] = array('id' => $r->id, 'name' => $r->name,'type' => $r->type);
}
foreach ($results as $data) {
/* Get the Value from POST/GET var called $data */
//FIXME: Do this right....
$type = $data['type'];
$name = $data['name'];
$apply_to_all = "check_" . $data['name'];
$id = $data['id'];
$value = sql_escape(scrub_in($_REQUEST[$name]));
if (has_preference_access($name) AND isset($_REQUEST[$name])) {
$sql = "UPDATE user_preference SET `value`='$value' WHERE preference='$id' AND user='$pref_id'";
$db_results = mysql_query($sql, dbh());
/* Check to see if this is a theme, and if so run the theme updater */
if ($name == "theme_name" AND $pref_user->prefs['theme_name'] != $_REQUEST[$name]) {
set_theme_colors($value,$pref_id);
} // run theme updater
} // if access
if ($GLOBALS['user']->has_access(100) AND $_REQUEST[$apply_to_all] =='1') {
$sql = "UPDATE user_preference SET `value`='$value' WHERE preference='$id'";
$db_results = mysql_query($sql, dbh());
}
} // end foreach preferences
} // update_preferences
/*!
@function has_preference_access
@discussion makes sure that the user has sufficient
rights to actually set this preference, handle
as allow all, deny X
//FIXME:
// This is no longer needed, we just need to check against preferences.level
*/
function has_preference_access($name) {
global $user;
if (conf('demo_mode')) {
return false;
}
switch($name) {
case 'download':
case 'upload':
case 'quarantine':
case 'upload_dir':
case 'sample_rate':
case 'direct_link':
$level = 100;
break;
default:
$level = 1;
break;
} // end switch key
if ($user->has_access($level)) {
return true;
}
return false;
} // has_preference_access
/*!
@function create_preference_input
@discussion takes the key and then creates
the correct type of input for updating it
*/
function create_preference_input($name,$value) {
$len = strlen($value);
if ($len <= 1) { $len = 8; }
if (!has_preference_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 '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 'demo_mode':
case 'direct_link':
if ($value == '1') { $is_true = "selected=\"selected\""; }
else { $is_false = "selected=\"selected\""; }
echo "\n";
break;
case 'play_type':
if ($value == 'local_play') { $is_local = "selected=\"selected\""; }
elseif ($value == 'icecast2') { $is_ice = "selected=\"selected\""; }
elseif ($value == 'downsample') { $is_down = "selected=\"selected\""; }
elseif ($value == 'mpd') { $is_mpd = "selected=\"selected\""; }
elseif ($value == 'slim') { $is_slim = "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':
$var_name = $value . "_lang";
${$var_name} = "selected=\"selected\"";
echo "\n";
break;
case 'theme_name':
$themes = get_themes();
echo "\n";
break;
default:
echo "";
break;
}
} // create_preference_input
?>