phpDocumentor phpDocumentor
[ class tree: phpDocumentor ] [ index: phpDocumentor ] [ all elements ]

Source for file utilities.php

Documentation is available at utilities.php

  1. <?php
  2. /**
  3.  * phpDocumentor :: docBuilder Web Interface
  4.  * 
  5.  * PHP versions 4 and 5
  6.  *
  7.  * Copyright (c) 2003-2006 Andrew Eddie, Greg Beaver
  8.  * 
  9.  * LICENSE:
  10.  * 
  11.  * This library is free software; you can redistribute it
  12.  * and/or modify it under the terms of the GNU Lesser General
  13.  * Public License as published by the Free Software Foundation;
  14.  * either version 2.1 of the License, or (at your option) any
  15.  * later version.
  16.  * 
  17.  * This library is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  20.  * Lesser General Public License for more details.
  21.  * 
  22.  * You should have received a copy of the GNU Lesser General Public
  23.  * License along with this library; if not, write to the Free Software
  24.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  25.  *
  26.  * @package    phpDocumentor
  27.  * @author     Andrew Eddie
  28.  * @author     Greg Beaver <[email protected]>
  29.  * @copyright  2003-2006 Andrew Eddie, Greg Beaver
  30.  * @license    http://www.opensource.org/licenses/lgpl-license.php LGPL
  31.  * @version    CVS: $Id: utilities.php,v 1.4 2006/04/30 22:18:13 cellog Exp $
  32.  */
  33.  
  34. {
  35.     include_once('PhpDocumentor/HTML_TreeMenu-1.1.2/TreeMenu.php');
  36. else {
  37.     include_once(dirname(realpath(__FILE__))."/../../HTML_TreeMenu-1.1.2/TreeMenu.php");
  38. }
  39.  
  40. /**
  41.  *    Allows png's with alpha transparency to be displayed in IE 6
  42.  *    @param string $src path to the source image
  43.  *    @param int $wid width on the image [optional]
  44.  *    @param int $hgt height on the image [optional]
  45.  *    @param string $alt hover text for the image [optional]
  46.  */
  47. function showImage$src$wid=''$hgt=''$alt='' {
  48.     if (strpos$_SERVER['HTTP_USER_AGENT']'MSIE 6.0' !== false{
  49.         return "<div style=\"height:{$hgt}pxwidth:{$wid}pxfilter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='$src', sizingMethod='scale');\" ></div>";
  50.     else {
  51.         return "<img src=\"$src\" width=\"$wid\" height=\"$hgt\" alt=\"$alt\" border=\"0\" />";
  52.     }
  53. }
  54.  
  55. /**
  56.  *    Returns a select box based on an key,value array where selected is based on key
  57.  *    @param array $arr array of the key-text pairs
  58.  *    @param string $select_name The name of the select box
  59.  *    @param string $select_attribs Additional attributes to insert into the html select tag
  60.  *    @param string $selected The key value of the selected eleme
  61.  */
  62. function htmlArraySelect&$arr$select_name$select_attribs$selected {
  63.     GLOBAL $AppUI;
  64.     reset$arr );
  65.     $s "\n<select name=\"$select_name\" $select_attribs>";
  66.     foreach ($arr as $k => $v {
  67.         $s .= "\n\t<option value=\"".$k."\"".($k == $selected " selected=\"selected\"" '').">" $v "</option>";
  68.     }
  69.     $s .= "\n</select>\n";
  70.     return $s;
  71. }
  72.  
  73. function getDir($path,&$node{
  74.     global $pd;
  75.     if (!$dir opendir($path)) return;
  76.     
  77.     $node new HTML_TreeNode(array('text' => basename(realpath($path))'link' => ""'icon' => 'folder.gif'));
  78.     while (($file readdir($dir)) !== false)
  79.     {
  80.         if ($file != '.' && $file != '..')
  81.         {
  82.             if (is_dir("$path$pd$file"&& !is_link("$path$pd$file"))
  83.             {
  84.                 $entry["$path$pd$file";
  85.             }
  86.         }
  87.     }
  88.     closedir($dir);
  89.     for($i 0$i count($entry)$i++)
  90.     {
  91.         $node->addItem(new HTML_TreeNode(array('text'=>basename(realpath($entry[$i]))'link' => "javascript:setHelp('".addslashes(realpath($entry[$i]))."');"'icon' => 'folder.gif')));
  92.     }
  93. }
  94.  
  95. function recurseDir($path&$node{
  96.     global $pd;
  97.     if (!$dir opendir($path)) {
  98.         return false;
  99.     }
  100.     $anode new HTML_TreeNode(array('text' => basename($path)'link' => "javascript:setHelpVal('".$path."');"'icon' => 'folder.gif'));
  101.     $result addslashes(realpath(stripslashes($path).$pd.".."));
  102.     if (!$node$anode->addItem(new DirNode('..',"javascript:setHelp('".$result."');",'folder.gif'),'..');
  103.     while (($file readdir($dir)) !== false{
  104.         if ($file != '.' && $file != '..'{
  105.             if (is_dir("$path$pd$file")) {
  106.                 recurseDir("$path$pd$file",$anode);
  107.             }
  108.         }
  109.     }
  110.     rewinddir($dir);//
  111.     while (false){//($file = readdir($dir)) !== false) {
  112.         if ($file != '.' && $file != '..'{
  113.             if (is_file("$path$pd$file")) {
  114.                 $anode->addItem(new DirNode($file,"javascript:setHelpVal('$path$pd$file');",'branchtop.gif',"$path$pd$file"));
  115.             }
  116.         }
  117.     }
  118.     if (!$node$node $anode;
  119.     else
  120.     $node->addItem($anode);
  121.     closedir($dir);
  122. }
  123.  
  124. function switchDirTree($path&$node)
  125. {
  126.     global $pd;
  127.  
  128.     // initialize recursion simulation values
  129.     // array format: path => &parent in $node itemlist
  130.     $parent array();
  131.     $parent_indexes array();
  132.     $parenti 1;
  133.     
  134.     $node new DirNode(basename($path),"javascript:setHelpVal('".$path."');",'folder.gif',$path);
  135.     $result addslashes(realpath($path.$pd.".."));
  136.     $node->addItem(new DirNode('..',"javascript:setHelp('".$result."');",'folder.gif','..'));
  137.     $rnode &$node;
  138.     $parent[realpath($path)false;
  139.     $recur 0;
  140.     do
  141.     {
  142.         if ($recur++ > 120return;
  143.         if (!$dir @opendir($path)) {
  144.             // no child files or directories
  145. //                    echo "$path no child files or directories return to ";
  146.             $rnode &$parent[realpath($path)];
  147.             $path $rnode->path;
  148.             if (isset($parent_indexes[realpath($path)])) $parenti $parent_indexes[realpath($path)];
  149. //                    echo "$path parenti $parenti<br>";
  150.         }
  151. //                fancy_debug($path,$parent_indexes);
  152. //                vdump_par($parent);
  153.         if (!isset($parent_indexes[realpath($path)]))
  154.         {
  155.             $file readdir($dir);
  156.             while ($file !== false{
  157.                 if ($file != '.' && $file != '..'{
  158.                     if (@is_dir(realpath("$path$pd$file"))) {
  159.                         if (!isset($parent_indexes[realpath($path)])) $parent_indexes[realpath($path)true;
  160.                         $parent[realpath("$path$pd$file")&$rnode;
  161. //                                echo "<br>adding new ".addslashes(realpath($path.$pd.$file))." to $path<br>";
  162.                         $rnode->addItem(new DirNode(addslashes(realpath("$path$pd$file")),"javascript:setHelpVal('".addslashes(realpath($path.$pd.$file))."');",'folder.gif',addslashes(realpath($path.$pd.$file))));
  163.                     }
  164.                 }
  165.                 $file readdir($dir);
  166.             }
  167.         }
  168.         // go down the tree if possible
  169.         if (isset($parent_indexes[realpath($path)]))
  170.         {
  171.             if ($parenti (count($rnode->items)))
  172.             {
  173.                 // no more children, go back up to parent
  174. //                        echo "$path no more children, go back up to parent ";
  175.                 $rnode &$parent[realpath($path)];
  176.                 $path $rnode->path;
  177.                 if (isset($parent_indexes[realpath($path)])) $parenti $parent_indexes[realpath($path)];
  178. //                        echo $path." parenti $parenti<br>";
  179.             else
  180.             {
  181.                 // go to next child
  182. //                        echo "$path go to next child ";
  183.                 $parent_indexes[realpath($path)$parenti+1;
  184. //                        debug("set parent ".$rnode->items[$parenti]->path." = ".$rnode->path.'<br>');
  185.                 $parent[realpath($rnode->items[$parenti]->path)&$rnode;
  186.                 $rnode &$rnode->items[$parenti];
  187.                 $path $rnode->path;
  188. //                        echo "$path<br>";
  189.                 $parenti 0;
  190.             }
  191.         else
  192.         {
  193.             // no children, go back up the tree to the next child
  194. //                    echo "$path no children, go back up to parent ";
  195.             $rnode &$parent[realpath($path)];
  196.             $path $rnode->path;
  197.             if (isset($parent_indexes[realpath($path)])) $parenti $parent_indexes[realpath($path)];
  198. //                    echo "$path parenti $parenti<br>";
  199.         }
  200.         @closedir($dir);
  201.     while ($path && (($parenti (count($rnode->items))) || ($parent[realpath($path)!== false)));
  202. }
  203.  
  204. function vdump_par($tree)
  205. {
  206.     foreach($tree as $key => $val)
  207.     {
  208.         if ($val === false)
  209.         debug($key.' -> false<br>');
  210.         else
  211.         debug($key.' -> ' .$val->path.'<br>');
  212.     }
  213.     debug('<br>');
  214. }
  215. ?>

Documentation generated on Tue, 24 Oct 2006 09:26:40 -0500 by phpDocumentor 1.3.1