summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-05-07 08:00:05 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-05-07 08:00:05 +0000
commitc0455678c1f6644801e5c25cb07510e49db7b28d (patch)
treec32edccb9386316c8b6ff1f885efa8a66ac0d067 /lib
parent0dcbad80cde204cfda078b5fc16a92c41d74c87d (diff)
downloadampache-c0455678c1f6644801e5c25cb07510e49db7b28d.tar.gz
ampache-c0455678c1f6644801e5c25cb07510e49db7b28d.tar.bz2
ampache-c0455678c1f6644801e5c25cb07510e49db7b28d.zip
started work on the sorting, and added in album viewing that kinda works
Diffstat (limited to 'lib')
-rw-r--r--lib/class/browse.class.php89
1 files changed, 82 insertions, 7 deletions
diff --git a/lib/class/browse.class.php b/lib/class/browse.class.php
index 531ccc26..8cfb27d6 100644
--- a/lib/class/browse.class.php
+++ b/lib/class/browse.class.php
@@ -65,6 +65,9 @@ class Browse {
$_SESSION['browse']['filter'][$key] = 1;
}
break;
+ case 'alpha_match':
+ $_SESSION['browse']['filter'][$key] = $value;
+ break;
default:
// Rien a faire
break;
@@ -95,6 +98,22 @@ class Browse {
} // set_type
/**
+ * set_sort
+ * This sets the current sort(s)
+ */
+ public static function set_sort($sort) {
+
+ if ($_SESSION['browse']['type'] == 'song') {
+ switch ($sort) {
+ case'title':
+ $_SESSION['browse']['sort']['title'] = 'ASC';
+ break;
+ }
+ }
+
+ } // set_sort
+
+ /**
* get_objects
* This gets an array of the ids of the objects that we are
* currently browsing by it applies the sql and logic based
@@ -134,13 +153,13 @@ class Browse {
// Get our base SQL must always return ID
switch ($_SESSION['browse']['type']) {
case 'album':
-
+ $sql = "SELECT `album`.`id` FROM `album` ";
break;
case 'artist':
-
+ $sql = "SELECT `artist`.`id` FROM `artist` ";
break;
case 'genre':
-
+ $sql = "SELECT `genre`.`id` FROM `genre` ";
break;
case 'song':
default:
@@ -163,7 +182,18 @@ class Browse {
$sql .= $where_sql;
- self::$sql = $sql;
+ // Now Add the Order
+ $order_sql = "ORDER BY ";
+
+ foreach ($_SESSION['browse']['sort'] as $key=>$value) {
+ $order_sql .= self::sql_sort($value);
+ }
+
+ // Clean her up
+ $order_sql = rtrim($order_sql,"ORDER BY ");
+ $order_sql = rtrim($order_sql,",");
+
+ self::$sql = $sql . $order_sql;
return $sql;
@@ -194,10 +224,17 @@ class Browse {
} // if it is a song
if ($_SESSION['browse']['type'] == 'album') {
+ switch($filter) {
+ case 'alpha_match':
+ $filter_sql = " `album`.`name` LIKE '" . Dba::escape($value) . "%' AND ";
+ break;
+ case 'min_count':
-
-
-
+ break;
+ default:
+ // Rien a faire
+ break;
+ }
} // end album
return $filter_sql;
@@ -218,6 +255,36 @@ class Browse {
} // logic_filter
/**
+ * sql_sort
+ * This builds any order bys we need to do
+ * to sort the results as best we can, there is also
+ * a logic based sort that will come later as that's
+ * a lot more complicated
+ */
+ private static function sql_sort($field,$order) {
+
+ if ($order != 'DESC') { $order == 'ASC'; }
+
+
+ if ($_SESSION['browse']['type'] == 'song') {
+ switch($field) {
+ case 'title';
+ $sql = "`song`.`title`";
+ break;
+ case 'year':
+ $sql = "`song`.`year`";
+ break;
+ default:
+ // Rien a faire
+ break;
+ } // end switch
+ } // end if song
+
+ return $sql . "$order,";
+
+ } // sql_sort
+
+ /**
* show_objects
* This takes an array of objects
* and requires the correct template based on the
@@ -231,6 +298,14 @@ class Browse {
require_once Config::get('prefix') . '/templates/show_songs.inc.php';
show_box_bottom();
break;
+ case 'album':
+ show_box_top();
+ require_once Config::get('prefix') . '/templates/show_albums.inc.php';
+ show_box_bottom();
+ break;
+ default:
+ // Rien a faire
+ break;
} // end switch on type
} // show_object