Viewing file: Output.php (5 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php // // +----------------------------------------------------------------------+ // | PEAR :: DB_NestedSet_Output | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2003 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Daniel Khan <dk@webcluster.at> | // | Jason Rust <jason@rustyparts.com> | // +----------------------------------------------------------------------+ // $Id: Output.php,v 1.8 2003/05/25 00:46:46 datenpunk Exp $ //
require_once 'PEAR.php';
// {{{ constants
define('NESEO_ERROR_NO_METHOD', 'E1000'); define('NESEO_DRIVER_NOT_FOUND', 'E1100'); define('NESEO_ERROR_NO_OPTIONS', 'E2100');
// }}} // {{{ DB_NestedSet_Output:: class
/** * DB_NestedSet_Output is a unified API for other output drivers * Status is beta * * At the moment PEAR::HTML_TreeMenu written by Jason Rust is supported * A driver for treemenu.org will follow soon. * * Usage example: * * require_once('DB_NestedSet/NestedSet/Output.php'); * $icon = 'folder.gif'; * $expandedIcon = 'folder-expanded.gif'; * // get data (important to fetch it as an array, using the true flag) * $data = $NeSe->getAllNodes(true); * // change the events for one of the elements * $data[35]['events'] = array('onexpand' => 'alert("we expanded!");'); * // add links to each item * foreach ($data as $a_data) { * $a_data['link'] = 'http://foo.com/foo.php?' . $a_data['id']; * } * $params = array( * 'structure' => $data, * 'options' => array( * 'icon' => $icon, * 'expandedIcon' => $expandedIcon, * ), * 'textField' => 'name', * 'linkField' => 'link', * ); * $menu =& DB_NestedSet_Output::factory('TreeMenu', $params); * $menu->printListbox(); * * @author Daniel Khan <dk@webcluster.at> * @package DB_NestedSet * @version $Revision: 1.8 $ * @access public * */
// }}} class DB_NestedSet_Output { // {{{ properties
/** * @var object The tree menu structure * @access private */ var $_structTreeMenu = false;
/** * @var array Array of options to be passed to the ouput methods * @access public */ var $options = array(); // }}} // {{{ factory()
/** * Returns a output driver object * * @param array $params A DB_NestedSet nodeset * @param string $driver (optional) The driver, such as TreeMenu (default) * * @access public * @return object The DB_NestedSet_Ouput object */ function &factory ($params, $driver = 'TreeMenu') { $path = dirname(__FILE__).'/'.$driver.'.php'; if(is_dir($path) || !file_exists($path)) { PEAR::raiseError("The output driver '$driver' wasn't found", NESEO_DRIVER_NOT_FOUND, PEAR_ERROR_TRIGGER, E_USER_ERROR); } require_once($path); $driverClass = 'DB_NestedSet_'.$driver; return new $driverClass($params); }
// }}} // {{{ setOptions()
/** * Set's options for a specific output group (printTree, printListbox) * This enables you to set specific options for each output method * * @param string $group Output group ATM 'printTree' or 'printListbox' * @param array $options Hash with options * * @access public * @return bool */ function setOptions($group, $options) { $this->options[$group] = $options; return true; }
// }}} // {{{ _getOptions()
/** * Get's all option for a specific output group (printTree, printListbox) * * @param string $group Output group ATM 'printTree' or 'printListbox' * * @access private * @return array Options */ function _getOptions($group) { if (!isset($this->options[$group])) { return array(); } return $this->options[$group]; }
// }}} // {{{ printTree()
/** * Print's the current tree using the output driver * Overriden by the driver class * * @access public */ function printTree() { PEAR::raiseError("Method not available for this driver", NESEO_ERROR_NO_METHOD, PEAR_ERROR_TRIGGER, E_USER_ERROR); }
// }}} // {{{ printListbox()
/** * Print's a listbox representing the current tree * Overriden by the driver class * * @access public */ function printListbox() { PEAR::raiseError("Method not available for this driver", NESEO_ERROR_NO_METHOD, PEAR_ERROR_TRIGGER, E_USER_ERROR); }
// }}} } ?>
|