home *** CD-ROM | disk | FTP | other *** search
- <?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);
- }
-
- // }}}
- }
- ?>
-