From bcc834d7fdabd0f52873a4f7696e065e3cf0f281 Mon Sep 17 00:00:00 2001 From: Karl 'vollmerk' Vollmer Date: Mon, 17 Mar 2008 03:29:49 +0000 Subject: flush out the democratic mojo, make the cooldown work --- lib/class/democratic.class.php | 27 +++++++++++++++++++++++++-- lib/class/stats.class.php | 27 +++++++++++++++++++++++++++ lib/class/update.class.php | 2 +- 3 files changed, 53 insertions(+), 3 deletions(-) (limited to 'lib/class') diff --git a/lib/class/democratic.class.php b/lib/class/democratic.class.php index cebb3272..e91abb45 100644 --- a/lib/class/democratic.class.php +++ b/lib/class/democratic.class.php @@ -26,6 +26,13 @@ */ class Democratic extends tmpPlaylist { + public $name; + public $cooldown; + public $level; + public $user; + public $primary; + public $base_playlist; + // Build local, buy local public $tmp_playlist; @@ -248,7 +255,7 @@ class Democratic extends tmpPlaylist { // We have to get all because of the pysco sorting $items = self::get_items(); - if (count($items)) { + if (count($items) > $offset) { $array = array_slice($items,$offset,1); $item = array_shift($array); $results['object_id'] = $item['0']; @@ -283,7 +290,7 @@ class Democratic extends tmpPlaylist { $object_id = Dba::escape($object_id); $object_type = $object_type ? Dba::escape($object_type) : 'song'; - $tmp_id = Dba::escape($this->id); + $tmp_id = Dba::escape($this->tmp_playlist); $sql = "SELECT `tmp_playlist_data`.`id` FROM `tmp_playlist_data` WHERE `object_type`='$object_type' AND " . "`tmp_playlist`='$tmp_id' AND `object_id`='$object_id'"; @@ -295,6 +302,22 @@ class Democratic extends tmpPlaylist { } // get_uid_from_object_id + /** + * get_cool_songs + * This returns all of the song_ids for songs that have happened within the last 'cooldown' + * for this user. + */ + public function get_cool_songs() { + + // Convert cooldown time to a timestamp in the past + $cool_time = time() - ($this->cooldown * 60); + + $song_ids = Stats::get_object_history($GLOBALS['user']->id,$cool_time); + + return $song_ids; + + } // get_cool_songs + /** * vote * This function is called by users to vote on a system wide playlist diff --git a/lib/class/stats.class.php b/lib/class/stats.class.php index 0c8a69cd..9f5cfdae 100644 --- a/lib/class/stats.class.php +++ b/lib/class/stats.class.php @@ -89,6 +89,33 @@ class Stats { } // get_last_song + /** + * get_object_history + * This returns the objects that have happened for $user_id sometime after $time + * used primarly by the democratic cooldown code + */ + public static function get_object_history($user_id='',$time) { + + $user_id = $user_id ? $user_id : $GLOBALS['user']->id; + + $user_id = Dba::escape($user_id); + + $time = Dba::escape($time); + + $sql = "SELECT * FROM `object_count` WHERE `user`='$user_id' AND `object_type`='song' AND `date`>='$time' " . + "ORDER BY `date` DESC"; + $db_results = Dba::query($sql); + + $results = array(); + + while ($row = Dba::fetch_assoc($db_results)) { + $results[] = $row['object_id']; + } + + return $results; + + } // get_object_history + /** * get_top * This returns the top X for type Y from the diff --git a/lib/class/update.class.php b/lib/class/update.class.php index 4d21c958..7127f1d5 100644 --- a/lib/class/update.class.php +++ b/lib/class/update.class.php @@ -267,7 +267,7 @@ class Update { '- Alter tmp_playlist to account for Democratic changes.
' . '- Cleared Existing Democratic playlists due to changes.
'; -// $version[] = array('version' => '340016','description'=>$update_string); + $version[] = array('version' => '340016','description'=>$update_string); return $version; -- cgit