summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/class/error.class.php22
-rw-r--r--lib/class/preference.class.php155
-rw-r--r--login.php15
-rw-r--r--modules/plugins/Lastfm.plugin.php30
-rw-r--r--modules/plugins/OpenStrands.plugin.php10
5 files changed, 190 insertions, 42 deletions
diff --git a/lib/class/error.class.php b/lib/class/error.class.php
index bc839bdb..3ff9c126 100644
--- a/lib/class/error.class.php
+++ b/lib/class/error.class.php
@@ -1,4 +1,26 @@
<?php
+/*
+
+ Copyright (c) 2001 - 2007 Ampache.org
+ All Rights Reserved
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2
+ of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+
/**
* Error class
* This is the baic error class, its better now that we can use php5
diff --git a/lib/class/preference.class.php b/lib/class/preference.class.php
new file mode 100644
index 00000000..578302ff
--- /dev/null
+++ b/lib/class/preference.class.php
@@ -0,0 +1,155 @@
+<?php
+/*
+
+ Copyright (c) 2001 - 2007 Ampache.org
+ All Rights Reserved
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; version 2
+ of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+/**
+ * preference Class
+ * This handles all of the preference stuff for ampache it replaces
+ * /lib/preference.lib.php
+ */
+class Preference {
+
+ /**
+ * __constructor
+ * This does nothing... amazing isn't it!
+ */
+ private function __construct() {
+
+ // Rien a faire
+
+ } // __construct
+
+ /**
+ * update
+ * This updates a single preference from the given name or id
+ */
+ public static function update($preference,$user_id,$value) {
+
+ // First prepare
+ if (!is_numeric($preference)) {
+ $id = self::id_from_name($preference);
+ $name = $preference;
+ }
+ else {
+ $name = self::name_from_id($preference);
+ $id = $preference;
+ }
+
+ // Now do
+ if (self::has_access($name)) {
+ $value = Dba::escape($value);
+ $user_id = Dba::escape($user_id);
+ $sql = "UPDATE `user_preference` SET `value`='$value' " .
+ "WHERE `preference`='$id' AND `user`='$user_id'";
+ $db_results = Dba::query($sql);
+ return true;
+ }
+ else {
+ debug_event('denied',$GLOBALS['user']->username . ' attempted to update ' . $name . ' but does not have sufficient permissions','3');
+ }
+
+ return false;
+ } // update
+
+ /**
+ * has_access
+ * This checks to see if the current user has access to modify this preference
+ * as defined by the preference name
+ */
+ public static function has_access($preference) {
+
+ // Nothing for those demo thugs
+ if (Config::get('demo_mode')) { return false; }
+
+ $preference = Dba::escape($preference);
+
+ $sql = "SELECT `level` FROM `preference` WHERE `name`='$preference'";
+ $db_results = Dba::query($sql);
+
+ if ($GLOBALS['user']->has_access($data['level'])) {
+ return true;
+ }
+
+ return false;
+
+ } // has_access
+
+ /**
+ * id_from_name
+ * This takes a name and returns the id
+ */
+ public static function id_from_name($name) {
+
+ $name = Dba::escape($name);
+
+ $sql = "SELECT `id` FROM `preference` WHERE `name`='$name'";
+ $db_results = Dba::query($sql);
+
+ $row = Dba::fetch_assoc($db_results);
+
+ return $row['id'];
+
+ } // id_from_name
+
+ /**
+ * name_from_id
+ * This returns the name from an id, it's the exact opposite
+ * of the function above it, amazing!
+ */
+ public static function name_from_id($id) {
+
+ $id = Dba::escape($id);
+
+ $sql = "SELECT `name` FROM `preference` WHERE `id`='$id'";
+ $db_results = Dba::query($sql);
+
+ $row = Dba::fetch_assoc($db_results);
+
+ return $row['name'];
+
+ } // name_from_id
+
+ /**
+ * insert
+ * This inserts a new preference into the preference table
+ * it does NOT sync up the users, that should be done independtly
+ */
+ public static function insert($name,$description,$default,$level,$type,$catagory) {
+
+ // Clean em up
+ $name = Dba::escape($name);
+ $description = Dba::escape($description);
+ $default = Dba::escape($default);
+ $level = Dba::escape($level);
+ $type = Dba::escape($type);
+ $catagory = Dba::escape($catagory);
+
+ $sql = "INSERT INTO `preference` (`name`,`description`,`value`,`level`,`catagory`) " .
+ "VALUES ('$name','$description','$default','$level','$catagory')";
+ $db_results = Dba::query($sql);
+
+ if (!$db_results) { return false; }
+
+ return true;
+
+ } // insert
+
+} // end Preference class
diff --git a/login.php b/login.php
index 4b9fa991..94231a05 100644
--- a/login.php
+++ b/login.php
@@ -137,16 +137,11 @@ if ($auth['success']) {
debug_event('LastFM','Handshake Failed: ' . $lastfm->error_msg,'3');
}
- // Get the preference IDs
- $port_id = get_preference_id('lastfm_port');
- $url_id = get_preference_id('lastfm_url');
- $host_id = get_preference_id('lastfm_host');
- $challenge_id = get_preference_id('lastfm_challenge');
- update_preference($user->id,'lastfm_port',$port_id,$handshake['submit_port']);
- update_preference($user->id,'lastfm_host',$host_id,$handshake['submit_host']);
- update_preference($user->id,'lastfm_url',$url_id,$handshake['submit_url']);
- update_preference($user->id,'lastfm_challenge',$challenge_id,$handshake['challenge']);
-
+ // Update the preferences
+ Preference::update('lastfm_port',$user->id,$handshake['submit_port']);
+ Preference::update('lastfm_host',$user->id,$handshake['submit_host']);
+ Preference::update('lastfm_url',$user->id,$handshake['submit_url']);
+ Preference::update('lastfm_challenge',$challenge_id,$handshake['challenge']);
} // if LastFM
diff --git a/modules/plugins/Lastfm.plugin.php b/modules/plugins/Lastfm.plugin.php
index c0896b71..7407d7ba 100644
--- a/modules/plugins/Lastfm.plugin.php
+++ b/modules/plugins/Lastfm.plugin.php
@@ -45,30 +45,12 @@ class AmpacheLastfm {
*/
public function install() {
- /* We need to insert the new preferences */
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_user',' ','Last.FM Username','25','string','options')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_pass',' ','Last.FM Password','25','string','options')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_port',' ','Last.FM Submission port','5','string','internal')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_host',' ','Last.FM Submission host','5','string','internal')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_url',' ','Last.FM Submission url','5','string','internal')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('lastfm_challenge',' ','Last.FM Submission Challenge','5','string','internal')";
- $db_results = Dba::query($sql);
+ Preference::insert('lastfm_user','Last.FM Username',' ','25','string','options');
+ Preference::insert('lastfm_pass','Last.FM Password',' ','25','string','options');
+ Preference::insert('lastfm_port','Last.FM Submit Port',' ','25','string','internal');
+ Preference::insert('lastfm_host','Last.FM Submit Host',' ','25','string','internal');
+ Preference::insert('lastfm_url','Last.FM Submit URL',' ','25','string','internal');
+ Preference::insert('lastfm_challenge','Last.FM Submit Challenge',' ','25','string','internal');
} // install
diff --git a/modules/plugins/OpenStrands.plugin.php b/modules/plugins/OpenStrands.plugin.php
index 5fe6821e..1a7b1b78 100644
--- a/modules/plugins/OpenStrands.plugin.php
+++ b/modules/plugins/OpenStrands.plugin.php
@@ -45,14 +45,8 @@ class AmpacheOpenStrands {
*/
public function install() {
- /* We need to insert the new preferences */
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('mystrands_user',' ','MyStrands Username','25','string','options')";
- $db_results = Dba::query($sql);
-
- $sql = "INSERT INTO preference (`name`,`value`,`description`,`level`,`type`,`catagory`) " .
- "VALUES ('mystrands_pass',' ','MyStrands Password','25','string','options')";
- $db_results = Dba::query($sql);
+ Preference::insert('mystrands_user','MyStrands Login',' ','25','string','options');
+ Preference::insert('mystrands_pass','MyStrands Password',' ','25','string','options');
} // install