i_currentPage = 0; $this->i_entriesPerPage = 10; $this->s_height = "450"; $this->s_width = "600px"; $this->s_summary = ""; $this->a_entries = array(); $this->a_header = array(); $this->b_displayPageNums= true; $this->cols = 0; $this->pageid = $pageid; } function __destruct(){ } function SetPluginMode($val = TRUE) { $this->fix_list_for_plugins = $val; } function SetFooter($str) { $this->list_footer = $str; } function AddEntry($a_entriedata) { $this->a_entries[] = $a_entriedata; } function DisablePageNums() { $this->b_displayPageNums =false; } function SetHeader($a_headerdata) { $this->a_header[] = $a_headerdata ; } function SetHeight($s_height) { $this->s_height= $s_height; $this->force_height = true; } function SetWidth($s_width) { $this->s_width= $s_width; if(preg_match("/^[0-9]*$/",$this->s_width)){ $this->s_width .="px"; } } function SetEntriesPerPage($i_num){ $this->i_entriesPerPage=$i_num; } function DrawList(){ $s_return = ""; if(!$this->force_height || $this->fix_list_for_plugins){ $s_return.= ""; } else { $s_return.= "
"; } $s_return.= $this->_generateHeader(); $s_return.= $this->_generatePage(); $s_return.= $this->_generateFooter(); $s_return.= "
"; return ($s_return); } function _numpages(){ $cnt = count($this->a_entries); $pages = (int) ($cnt / $this->i_entriesPerPage); if($cnt % $this->i_entriesPerPage){ $pages++; } return $pages; } function _numentries(){ return count($this->a_entries); } function _generateFooter() { $s_return = ""; if(!empty($this->list_footer)){ // Using scrolltable? if($this->i_entriesPerPage == 0) { if(!$this->force_height) { $s_return.= "\n"; } else { $s_return.= "\n"; } $s_return.= "\n"; } return($s_return); } function _generateHeader(){ $s_return = ""; $s_value = ""; $s_key = ""; // Using scrolltable? if($this->i_entriesPerPage == 0) { if(!$this->force_height) { $s_return.= "\n
"; } } $s_return .= ""; // Attach a 13px-wide column (used as scrollbar space in body-table), // but do this only if we are really using scrolltables. if($this->i_entriesPerPage == 0) { $s_return.= "\n"; $s_return.= "\n
".$this->list_footer." 
"; } else { $s_return.= "\n"; } $s_return.= "\n"; return $s_return; } function SetSummary($msg){ $this->s_summary = $msg; } function _generatePage(){ $s_value = ""; $s_key = ""; $s_return = ""; if($this->i_entriesPerPage == 0) { // We need to construct a "body"-table that is width-of-scrollbar thinner than the "head"-table. if(!$this->force_height) { $s_return .= "\n"; } $s_return .= ""; return $s_return; } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>
"; } } $s_return.= "\n"; foreach($this->a_header[0] as $s_key => $s_value ){ if(!isset($s_value['attach'])){ $s_value['attach'] = ""; } $s_return.= "\n"; // Increment column counter $this->cols++; } // Attach a 13px-wide column (used as scrollbar space in body-table), // but do this only if we are really using scrolltables. if($this->i_entriesPerPage == 0) { $s_return.= "\n"; $s_return.= "\n
".$s_value['string']." 
"; $s_return .= ""; } else { $s_return .= "\n"; } return($str); } else { //FIXME: Ahrg. I'd like to read this code without wasting my time. if ($this->i_entriesPerPage > 0) { while($start > $this->_numentries()){ $start = $start - $this->i_entriesPerPage; } $stop = $start + $this->i_entriesPerPage; $appendempty = ($this->_numentries() -$start); for($i = $start ; $i < $stop;$i++){ if(isset($this->a_entries[$i])){ $s_value = $this->a_entries[$i]; // Alternation of background color if($i_alternate) $i_alternate=0; else $i_alternate=1; $s_return .= "\n"; $cnt = 0; foreach($s_value as $s_key2 => $s_value2 ){ $cnt++; if(!isset($s_value2['class'])){ $class = "list".$i_alternate; }else{ $class = $s_value2['class']; } if(!isset($s_value2['attach'])){ $style = ""; }else{ $style = " ".$s_value2['attach']." " ; } $s_return .= "\n"; } if($cnt == 0 ){ $s_return.="\n"; } $s_return .= "\n"; } } if(!(($stop)<$this->_numentries())){ $nums = $stop - $this->_numentries();// - $stop; for($i = 0 ; $i < $nums ; $i ++ ){ $s_return.=""; $cnt=0; for($a = 0 ; $a < (count($this->a_header[0])) ; $a ++ ) { if($a ==(count($this->a_header[0])-1)){ $s_return.="\n"; } else { $s_return.="\n"; } } $s_return.="\n"; } } if($this->b_displayPageNums){ $s_return .= ""; } } else { // $this->i_entriesPerPage <= 0 // We should display all entries on one page $i = $this->_numEntries(); foreach($this->a_entries as $s_key => $s_value){ $i--; if($i_alternate!=0){ $i_alternate=0; } else { $i_alternate=1; } $s_return .= "\n"; $cnt = 0; foreach($s_value as $s_key2 => $s_value2 ){ $this->cols = count($s_value) ; $cnt++; if(!isset($s_value2['class'])){ $class = "list".$i_alternate; } else { $class = $s_value2['class']; } if(!isset($s_value2['attach'])){ $style = ""; } else { $style = " ".$s_value2['attach']." " ; } $s_return .= "\n"; } $s_return .= "\n"; } } // if fewer than 22 Entries (list not full), print row to fill empty space //FIXME: Why 22? Isn't the size dynamic if($this->_numEntries()<=22){ $fill= ""; for ($i= 1; $i <= $this->cols; $i++){ if ($i == $this->cols){ $fill.= ""; } else { $fill.= ""; } } $s_return.="\n$fill"; } if($this->i_entriesPerPage == 0) { $s_return .= "\n
"; $s_return .= ""; } } $i_alternate=0; if(isset($_GET['start'])){ $_SESSION['start'.$this->pageid]=$_GET['start']; $start = $_GET['start']; } else { if(isset($_SESSION['start'.$this->pageid])){ $start = $_SESSION['start'.$this->pageid]; } else { $start=0; } } /* If divlist is empty, append a single white entry */ if(count($this->a_entries)==0){ $str = $s_return.""; $str.=""; $str.=""; if($this->i_entriesPerPage == 0) { $str.="
 
"; $s_return .= $s_value2['string']; $s_return .= "\n 
  
".range_selector($this->_numentries(),$start,$this->i_entriesPerPage)."
"; $s_return .= $s_value2['string']; $s_return .= "