⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sortabletable.class.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
			$result[] = '<option value="'.$total_number_of_items.'" '. ($total_number_of_items == $this->per_page ? 'selected="selected"' : '').'>'.ucfirst(get_lang('All')).'</option>';		}		$result[] = '</select>';		$result[] = '<noscript>';		$result[] = '<input type="submit" value="'.get_lang('Ok').'"/>';		$result[] = '</noscript>';		$result[] = '</form>';		$result = implode("\n", $result);		return $result;	}	/**	 * Get the table title.	 */	function get_table_title()	{		$pager = $this->get_pager();		$showed_items = $pager->getOffsetByPageId();		return $showed_items[0].' - '.$showed_items[1].' / '.$this->get_total_number_of_items();	}	/**	 * Set the header-label	 * @param int $column The column number	 * @param string $label The label	 * @param boolean $sortable Is the table sortable by this column? (defatult	 * = true)	 * @param string $th_attributes Additional attributes for the th-tag of the	 * table header	 * @param string $td_attributes Additional attributes for the td-tags of the	 * column	 */	function set_header($column, $label, $sortable = true, $th_attributes = null, $td_attributes = null)	{		$param['direction'] = 'ASC';		if ($this->column == $column && $this->direction == 'ASC')		{			$param['direction'] = 'DESC';		}		$param['page_nr'] = $this->page_nr;		$param['per_page'] = $this->per_page;		$param['column'] = $column;		if ($sortable)		{			$link = '<a href="'.api_get_self().'?';			foreach ($param as $key => $value)			{				$link .= $this->param_prefix.$key.'='.urlencode($value).'&amp;';			}			$link .= $this->get_additional_url_paramstring();			$link .= '">'.$label.'</a>';			if ($this->column == $column)			{				$link .= $this->direction == 'ASC' ? ' &#8595;' : ' &#8593;';			}		}		else		{			$link = $label;		}		$this->setHeaderContents(0, $column, $link);		if (!is_null($td_attributes))		{			$this->td_attributes[$column] = $td_attributes;		}		if (!is_null($th_attributes))		{			$this->th_attributes[$column] = $th_attributes;		}	}	/**	 * Get the parameter-string with additional parameters to use in the URLs	 * generated by this SortableTable	 */	function get_additional_url_paramstring()	{		$param_string_parts = array ();		if(is_array($this->additional_parameters) && count($this->additional_parameters)>0)		{			foreach ($this->additional_parameters as $key => $value)			{				$param_string_parts[] = urlencode($key).'='.urlencode($value);			}		}		$result = implode('&amp;', $param_string_parts);		foreach($this->other_tables as $index => $tablename)		{			$param = array();			if( isset($_GET[$tablename.'_direction']))				$param[$tablename.'_direction'] = $_GET[$tablename.'_direction'];			if( isset($_GET[$tablename.'_page_nr']))				$param[$tablename.'_page_nr'] = $_GET[$tablename.'_page_nr'];			if( isset($_GET[$tablename.'_per_page']))				$param[$tablename.'_per_page'] = $_GET[$tablename.'_per_page'];			if( isset($_GET[$tablename.'_column']))				$param[$tablename.'_column'] = $_GET[$tablename.'_column'];			$param_string_parts = array ();			foreach ($param as $key => $value)			{				$param_string_parts[] = urlencode($key).'='.urlencode($value);			}			if(count($param_string_parts) > 0)				$result .= '&amp;'.implode('&amp;', $param_string_parts);		}		return $result;	}	/**	 * Get the parameter-string with the SortableTable-related parameters to use	 * in URLs	 */	function get_sortable_table_param_string()	{		$param[$this->param_prefix.'direction'] = $this->direction;		$param[$this->param_prefix.'page_nr'] = $this->page_nr;		$param[$this->param_prefix.'per_page'] = $this->per_page;		$param[$this->param_prefix.'column'] = $this->column;		$param_string_parts = array ();		foreach ($param as $key => $value)		{			$param_string_parts[] = urlencode($key).'='.urlencode($value);		}		$res = implode('&amp;', $param_string_parts);		return $res;	}	/**	 * Add a filter to a column. If another filter was allready defined for the	 * given column, it will be overwritten.	 * @param int $column The number of the column	 * @param string $function The name of the filter-function. This should be a	 * function wich requires 1 parameter and returns the filtered value.	 */	function set_column_filter($column, $function)	{		$this->column_filters[$column] = $function;	}	/**	 * Define a list of actions which can be performed on the table-date.	 * If you define a list of actions, the first column of the table will be	 * converted into checkboxes.	 * @param array $actions A list of actions. The key is the name of the	 * action. The value is the label to show in the select-box	 * @param string $checkbox_name The name of the generated checkboxes. The	 * value of the checkbox will be the value of the first column.	 */	function set_form_actions($actions, $checkbox_name = 'id')	{		$this->form_actions = $actions;		$this->checkbox_name = $checkbox_name;	}	/**	 * Define a list of additional parameters to use in the generated URLs	 * @param array $parameters	 */	function set_additional_parameters($parameters)	{		$this->additional_parameters = $parameters;	}	/**	 * Set other tables on the same page.	 * If you have other sortable tables on the page displaying this sortable	 * tables, you can define those other tables with this function. If you	 * don't define the other tables, there sorting and pagination will return	 * to their default state when sorting this table.	 * @param array $tablenames An array of table names.	 */	function set_other_tables($tablenames)	{		$this->other_tables = $tablenames;	}	/**	 * Transform all data in a table-row, using the filters defined by the	 * function set_column_filter(...) defined elsewhere in this class.	 * If you've defined actions, the first element of the given row will be	 * converted into a checkbox	 * @param array $row A row from the table.	 */	function filter_data($row)	{		$url_params = $this->get_sortable_table_param_string().'&amp;'.$this->get_additional_url_paramstring();		foreach ($this->column_filters as $column => $function)		{			$row[$column] = call_user_func($function, $row[$column], $url_params, $row);		}		if (count($this->form_actions) > 0)		{			if (strlen($row[0]) > 0)			{				$row[0] = '<input type="checkbox" name="'.$this->checkbox_name.'[]" value="'.$row[0].'"';				if (isset ($_GET[$this->param_prefix.'selectall']))				{					$row[0] .= ' checked="checked"';				}				$row[0] .= '/>';			}		}		foreach ($row as $index => $value)		{			if (strlen($row[$index]) == 0)			{				$row[$index] = '-';			}		}		return $row;	}	/**	 * Get the total number of items. This function calls the function given as	 * 2nd argument in the constructor of a SortableTable. Make sure your	 * function has the same parameters as defined here.	 */	function get_total_number_of_items()	{		if ($this->total_number_of_items == -1 && !is_null($this->get_total_number_function))		{			$this->total_number_of_items = call_user_func($this->get_total_number_function);		}		return $this->total_number_of_items;	}	/**	 * Get the data to display.  This function calls the function given as	 * 2nd argument in the constructor of a SortableTable. Make sure your	 * function has the same parameters as defined here.	 * @param int $from Index of the first item to return.	 * @param int $per_page The number of items to return	 * @param int $column The number of the column on which the data should be	 * sorted	 * @param string $direction In which order should the data be sorted (ASC	 * or DESC)	 */	function get_table_data($from = null, $per_page = null, $column = null, $direction = null)	{		if (!is_null($this->get_data_function))		{			return call_user_func($this->get_data_function, $from, $this->per_page, $this->column, $this->direction);		}		return array ();	}}/** * Sortable table which can be used for data available in an array */class SortableTableFromArray extends SortableTable{	/**	 * The array containing all data for this table	 */	var $table_data;	/**	 * Constructor	 * @param array $table_data	 * @param int $default_column	 * @param int $default_items_per_page	 */	function SortableTableFromArray($table_data, $default_column = 1, $default_items_per_page = 20, $tablename = 'tablename')	{		parent :: SortableTable($tablename, null, null, $default_column, $default_items_per_page);		$this->table_data = $table_data;	}	/**	 * Get table data to show on current page	 * @see SortableTable#get_table_data	 */	function get_table_data($from = 1)	{		$content = TableSort :: sort_table($this->table_data, $this->column, $this->direction == 'ASC' ? SORT_ASC : SORT_DESC);		return array_slice($content, $from, $this->per_page);	}	/**	 * Get total number of items	 * @see SortableTable#get_total_number_of_items	 */	function get_total_number_of_items()	{		return count($this->table_data);	}}/** * Sortable table which can be used for data available in an array *  * Is a variation of SortableTableFromArray because we add 2 new arrays  $column_show and $column_order * $column_show is an array that lets us decide which are going to be the columns to show * $column_order is an array that lets us decide the ordering of the columns  * i.e: $column_header=array('a','b','c','d','e'); $column_order=array(1,2,5,4,5); * These means that the 3th column (letter "c") will be sort like the order we use in the 5th column  */ class SortableTableFromArrayConfig extends SortableTable{		/**	 * The array containing the columns that will be show i.e $column_show=array('1','0','0'); we will show only the 1st column	 */	private $column_show;			/**	 *The array containing the real sort column $column_order=array('1''4','3','4'); The 2nd column will be order like the 4th column 	 */	private $column_order;			/**	 * The array containing all data for this table	 */	private $table_data;		/**	 * Constructor	 * @param array $table_data All the information of the table	 * @param int $default_column Default column that will be use in the sorts functions 	 * @param int $default_items_per_page quantity of pages that we are going to see	 * @param int $tablename Name of the table	 * @param array $column_show An array with binary values 1: we show the column 2: we don't show it 	 * @param array $column_order An array of integers that let us decide how the columns are going to be sort.   	 */ 	public function SortableTableFromArrayConfig($table_data, $default_column = 1, $default_items_per_page = 20, $tablename = 'tablename',$column_show=null,$column_order=null,$direction='ASC')	{		$this->column_show=$column_show;		$this->column_order=$column_order;				parent :: SortableTable($tablename, null, null, $default_column, $default_items_per_page,$direction);				$this->table_data = $table_data;	}	/**	 * Get table data to show on current page	 * @see SortableTable#get_table_data	 */	public function get_table_data($from = 1)	{					$content = TableSort :: sort_table_config($this->table_data, $this->column, $this->direction == 'ASC' ? SORT_ASC : SORT_DESC ,$this->column_show, $this->column_order);		return array_slice($content, $from, $this->per_page);	}		/**	 * Get total number of items	 * @see SortableTable#get_total_number_of_items	 */	public function get_total_number_of_items()	{		return count($this->table_data);	}	}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -