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