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

📄 matrix.php

📁 FP2 CRM code+Mysql DB
💻 PHP
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * Main HTML_Table_Matrix class * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt.  If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @package    HTML_Table_Matrix * @author     Ian Eure <ieure@php.net> * @version    Release: @package_version@ * @version    CVS:     $Revision: 1.4 $ * @copyright  (c) 2003-2005 Ian Eure * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @link       http://pear.php.net/package/html_table_matrix/ * @see        HTML_Table */require_once 'PEAR.php';require_once 'HTML/Table.php';require_once 'HTML/Table/Matrix/Filler.php';/** * Fills a HTML table with data. * * Simple usage: * * // This is the data to put in the table. * $data = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', *               'nine', 'ten'); * $m = &new HTML_Table_Matrix; * $m->setData($data); * // Pick a filler class. We use the stock left-to-right-top-to-bottom here. * $f = &HTML_Table_Matrix_Filler::factory('LRTB'); * $m->accept($f); * // Make the table 2 rows deep by 5 cols wide * $m->setTableSize(2, 5); * // Output the table. * print $m->toHtml(); * * * @package    HTML_Table_Matrix * @category   HTML * @author     Ian Eure <ieure@php.net> * @version    Release: @package_version@ * @version    CVS:     $Revision: 1.4 $ * @copyright  (c) 2003-2005 Ian Eure * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @link       http://pear.php.net/package/html_table_matrix/ * @see        HTML_Table */class HTML_Table_Matrix extends HTML_Table {    /**     * The filler     *     * @type object     * @access private     * @see accept()     */     var $_filler = '';    /**     * The row to start filling at. Useful if you want to put other stuff in     * the table.     *     * @access private     * @var int     * @see setFillStart()     */    var $_fillStartRow = 0;    /**     * The column to start filling at. Useful if you want to put other stuff in     * the table.     *     * @access private     * @var int     * @see setFillStart()     */    var $_fillStartCol = 0;    /**     * The number of rows in the table. 0 = Undefined.     *     * @access private     * @var int     * @see setTableSize()     */    var $_rows = 0;    /**     * The number of columns in the table. 0 = Undefined.     *     * @access private     * @var int     * @see setTableSize()     */    var $_cols = 10;    /**     * Has the table been filled?     *     * @access private     * @var boolean     */    var $_isFilled = FALSE;    /**     * Data to fill table with     *     * @access private     * @var array     * @see setData()     */    var $_data = array();    /**     * Sets data to fill table with.     *     * @return void     * @param array $data 1-dimensional array of matrix data     */    function setData(&$data)    {        $this->_data = $data;    }    /**     * Set the row & column to start filling at.     *     * Defaults to (0,0), which is the upper-left corner of the table. Setting     * this to a larger value will leave other cells empty, e.g. if you want to     * add a header or other information in the table in addition to the matrix     * data.     *     * @param int $row Row to start filling at     * @param int $col Column to start filling at     * @return void     */    function setFillStart($row, $col)    {        $this->_fillStartRow = $row;        $this->_fillStartCol = $col;    }    /**     * Set the size of the resulting table.     *     * The table will be forced to this size, regardless of whether or not     * there is enough (or too much) data to fill it up. If the table size     * (rows * cols) is smaller than the amount of data given to us, only     * (rows * cols) items are laid out.     *     * @param int $rows Number of rows, or zero to auto-size.     * @param int $cols Number of columns, or zero to auto-size.     * @return void     */    function setTableSize($rows = 0, $cols = 0)    {        $this->_rows = $rows;        $this->_cols = $cols;    }    /**     * Return the total table size (w * h)     *     * @return int Table size     * @access protected     */    function _getTableSize()    {        if ($this->_cols == 0 || $this->_rows == 0) {            return count($this->_data);        }        return $this->_rows * $this->_cols;    }    /**     * Accept a Filler     */    function accept(&$filler)    {        if (!HTML_Table_Matrix_Filler::isValid($filler)) {            return PEAR::raiseError("Provided filler is of the wrong class.");        }        $this->_filler = $filler;        return true;    }    /**     * Calculates the size of the table based on the data provided.     *     * @access private     * @return void     * @see setData()     */    function _calculateSize()    {        reset($this->_data);        $n = count($this->_data);        if (!$this->_rows && $this->_cols) {            $this->_rows = ceil($n / $this->_cols);        } else if (!$this->_cols && $this->_rows) {            $this->_cols = ceil($n / $this->_rows);        }    }    /**     * Fills table with provided data. RL & BT modes are not implemented yet.     *     * This function does the actual laying out of the data into the table.     * It isn't necessary to call this unless you want to add or change something     * in the table, as toHtml() calls this automatically if the table has not     * yet been filled with data.     *     * @return mixed boolean true on success, PEAR_Error otherwise     * @see setData()     */    function fillTable()    {        if (!HTML_Table_Matrix_Filler::isValid($this->_filler)) {            return PEAR::raiseError("No Filler has been set.");        }        $this->_calculateSize();        reset($this->_data);        $size = $this->_getTableSize();        $this->_data = array_slice($this->_data, 0, $size);        if (isset($this->_filler->callback)) {            if (!is_callable($this->_filler->callback)                || !is_array($cr = call_user_func($this->_filler->callback, $this->_data))) {                return PEAR::raiseError("Invalid filler callback.");            }            $this->_data = $cr;        }        for ($i = $index = 0; $i < $size; $i++, $index++) {            list($row, $col) = $this->_filler->next($index);            $this->_fillCell($row, $col);        }        $this->_isFilled = TRUE;        return true;    }    /**     * Fills a cell with data.     *     * Note: this depends on the array pointer of $_data pointing at the     * right item. Possibly not be the best way to handle this.     *     * @access private     * @param int $row Row of cell to fill.     * @param int $col Column of cell to fill.     */    function _fillCell($row, $col)    {        list($null, $data) = each($this->_data);        $this->setCellContents($row, $col, $data);    }    /**     * Returns HTML table. Calls fillTable() if the table has not already     * been filled.     *     * @return string HTML Table     * @see HTML_Table::toHtml()     */    function toHtml()    {        if (!$this->_isFilled) {            $this->fillTable();        }        return(parent::toHtml());    }}?>

⌨️ 快捷键说明

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