diff options
Diffstat (limited to 'modules/class/view.php')
-rw-r--r-- | modules/class/view.php | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/modules/class/view.php b/modules/class/view.php new file mode 100644 index 00000000..f9de4ee6 --- /dev/null +++ b/modules/class/view.php @@ -0,0 +1,229 @@ +<? +/* + + Copyright (c) 2004 Ampache.org + All rights reserved. + + $CVSHeader: ampache/modules/class/artist.php,v 1.1 2004/03/25 09:12:57 vollmerk Exp $ + $Source: /data/cvsroot/ampache/modules/class/artist.php,v $ + + 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; either version 2 + of the License, or (at your option) any later version. + + 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. + +*/ + +/*! + @header View Object of crappyness + View object that is thrown into their session + +*/ + + +class View { + + //Basic Componets + var $base_sql; + var $offset; + var $offset_limit; + var $sort_order; //asc or desc + var $sort_type; + var $action; + var $total_items; + + //generate a new view + function View($base_sql=0,$script=0,$sort_type=0,$total_items=0,$offset_limit=0) { + global $conf; + + // If we don't have a base sql, stop here + if (!is_string($base_sql)) { + return true; + } + + //Convert all 's into "s + $base_sql = str_replace("'",'"',$base_sql); + + $this->base_sql = $base_sql; + if ($offset_limit) { $this->offset_limit = $offset_limit; } + else { $this->offset_limit = $_SESSION['offset_limit']; } + if ($this->offset_limit < '1') { $this->offset_limit = '50'; } + $this->script = $script; + $this->sort_type = $sort_type; + $this->sort_order = "ASC"; + $this->offset = 0; + $this->total_items = $total_items; + + // Set the session + $_SESSION['view_offset_limit'] = $this->offset_limit; + $_SESSION['view_sort_type'] = $this->sort_type; + $_SESSION['view_offset'] = $this->offset; + $_SESSION['view_base_sql'] = $this->base_sql; + $_SESSION['view_sort_order'] = $this->sort_order; + $_SESSION['view_script'] = $this->script; + $_SESSION['view_total_items'] = $this->total_items; + $this->sql = $this->generate_sql(); + + } //constructor + + //takes all the parts and makes a full blown sql statement + function generate_sql() { + global $conf; + + $sql = $this->base_sql . " ORDER BY " . $this->sort_type ." ". $this->sort_order ." LIMIT " . $this->offset . "," . $this->offset_limit; + + return $sql; + + } //generate_sql + + //change the sort order from asc to desc or vise versa + function change_sort($new_sort=0) { + global $conf; + + if ($new_sort) { + $this->sort_order = $new_sort; + } + elseif ($this->sort_order == "DESC") { + $this->sort_order = "ASC"; + } + else { + $this->sort_order = "DESC"; + } + + $_SESSION['view_sort_order'] = $this->sort_order; + + $this->sql = $this->generate_sql(); + + return; + + } //change_sort + + //change the base sql + function change_sql($base_sql) { + global $conf; + + //Convert all 's into "s + $base_sql = str_replace("'",'"',$base_sql); + + $this->base_sql = $base_sql; + + $_SESSION['view_base_sql'] = $this->base_sql; + + $this->sql = $this->generate_sql(); + + } //change_sql + + //change offset + function change_offset($offset=0) { + global $conf; + + if (isset($offset)) { + $this->offset = $offset; + } + else { + $this->offset = $this->offset + $this->offset_limit; + } + + $_SESSION['view_offset'] = $this->offset; + + $this->sql = $this->generate_sql(); + + } //change_offset + + //change sort_type + function change_sort_type($sort_type) { + + $this->sort_type = $sort_type; + + $_SESSION['view_sort_type'] = $this->sort_type; + + $this->sql = $this->generate_sql(); + + } //change_sort_type + + /*! + @function change_offset_limit + @discussion changes the offset limit, sets the session + var and generates the sql statement + */ + function change_offset_limit($offset_limit) { + + $this->offset_limit = $offset_limit; + + $_SESSION['view_offset_limit'] = $this->offset_limit; + + $this->sql = $this->generate_sql(); + + } // change_offset_limit + + /*! + @function initialize + @discussion initializes the view object, checks $_REQUEST + for changes to the view object + */ + function initialize() { + + if ($_REQUEST['sort_type']) { + $this->change_sort_type($_REQUEST['sort_type']); + } + + if (isset($_REQUEST['offset'])) { + $this->change_offset($_REQUEST['offset']); + } + + if ($_REQUEST['base_sql']) { + $this->change_sql($_REQUEST['base_sql']); + } + + if (isset($_REQUEST['sort_order'])) { + $this->change_sort($_REQUEST['sort_order']); + } + + if ($_REQUEST['offset_limit']) { + $this->change_offset_limit($_REQUEST['offset_limit']); + } + + } // initialize + + + /*! + @function import_session_view + @discussion this imports the view from the session for use.. + this keeps us from having to globalize anything + wohoo! + */ + function import_session_view() { + + $this->sort_type = $_SESSION['view_sort_type']; + $this->offset = $_SESSION['view_offset']; + $this->base_sql = $_SESSION['view_base_sql']; + $this->sort_order = $_SESSION['view_sort_order']; + $this->script = $_SESSION['view_script']; + $this->total_items = $_SESSION['view_total_items']; + + + if ($_SESSION['view_offset_limit']) { + $this->offset_limit = $_SESSION['view_offset_limit']; + } + else { + $this->offset_limit = $_SESSION['offset_limit']; + } + + + $this->sql = $this->generate_sql(); + + } // import_session_view + + + +} //end class +?> |