ami eto go celia sors..
<?php
/*
Website
http://www.hdwt.com
*/
define("AE",1);
define("WIN",92);
define("NIX",47);
class tree
{
var $DP;
var $PT;
var $PS;
var $OS;
var $rexit;
var $show;
var $ln;
var $br;
var $bg;
var $bd;
var $bp;
var $sl;
var $dn;
var $dir;
var $cdw;
var $type;
var $icon;
var $fd;
var $fo;
var $doc;
var $nq;
var $now;
var $next;
var $done;
var $rows;
var $cols;
var $q = array();
var $ds = array();
var $sd = array();
var $fs = array();
# Array of files to ignore
var $ignr = array('.php');
# Text documents
var $ascii = array('.txt');
function tree(){
if(eregi('WIN',PHP_OS)){
$this->OS = WIN;
}
else{
$this->OS = NIX;
}
# Set $PHP_SELF variable manually
$this->PS = 'index.php';
$this->bd ='home';
$this->sl = chr($this->OS);
$this->bp = '.'.$this->sl;
# Option => could use images
$this->fd = ' [+]';
$this->fo = ' [-]';
$this->doc = '*';
# Display in rows and columns
$this->rows = 6;
$this->cols = 4;
# file/dir length
$this->ln = 16;
# Interface colors
$this->br = '#306272';
$this->bg = '#f7f7f7';
}
function SET($PT){
$this->DP = stripslashes($PT);
$this->PT = substr($this->DP,0,strrpos($this->DP,$this->sl)).$this->sl;
}
function srch($tx,$path,$af,$fn){
$path = stripslashes($path);
$this->flpt = $this->PT.$path;
$this->cwd = $path;
$this->read();
$this->look($tx,$af,$fn);
}
function look($tx,$af,$fn){
if(($af == 0) && ($fn == 0) || ($tx =='')){
print("<tr><td> <b>None selected</b> </td></tr>\n");
}
else{
$m = array();
foreach($this->fs as $fl){
if($af){
if(in_array(strrchr($fl,"."),$this->ascii)){
$fp = fopen($this->cwd.$fl,'r');
$cont = fread($fp,filesize($this->cwd.$fl));
if(eregi($tx,$cont)){
$m[] = $fl;
}
fclose($fp);
}
}
if($fn){
if(eregi($tx,$fl)){
if(!in_array($fl,$m))$m[] = $fl;
}
}
}
if(!isset($m)){
$m = NULL;
}
$total = count($m);
if($total>0){
$this->fs =& $m;
print("<tr><td> <b>".$total." found</b> </td></tr>\n");
$this->do_fs();
}
else{
print("<tr><td> <b>No matches</b> </td></tr>\n");
}
}
}
function sb($opnd){
if(!$opnd)
print("<tr>\n<td>\n<a href=\"".$this->PS."?show=1\">".$this->fd."</a>\n");
print("<b>".$this->bd."</b>\n</td>\n</tr>\n");
$this->prntr();
}
function lp($dir){
$this->ds = $this->get_ds($dir);
foreach($this->ds as $dtroy){
$dtroy == NULL ? next($this->ds) : $this->q[] = $dtroy;
}
foreach($this->q as $dir){
$this->dir = $dir;
$this->ld();
}
}
function get_ds($path){
return explode($this->sl,$path);
}
function ld(){
if(!isset($this->cwd))$this->cwd = '';
$this->cwd .= $this->dir.$this->sl;
$this->flpt = $this->PT.$this->cwd;
$this->dn = basename($this->dir);
if($this->dn == "."){
$this->dn = $this->bd;
$com = "?expanded=1";
}
else{
$com = "?list=".$this->enc($this->stbk(2))."&show=1&open=1";
$this->dn = str_replace(".".$this->sl,"",$this->stbk(1));
}
print("<tr>\n<td>\n");
if(strlen($this->dn) >= $this->ln){
$this->dn = "..." . substr($this->dn,-$this->ln);
}
print("<a href=\"".$this->PS.$com."\">".$this->fo."</a>\n");
print("<b>".str_replace("+"," ",$this->dn)."</b>\n");
print("</td>\n</tr>\n");
$this->prntr();
$this->read();
$this->do_fs();
$this->do_dirs();
}
function prntr(){
print("<tr>\n<td> </td>\n</tr>\n");
}
function stbk($n){
$i = 0;
$np = $this->cwd;
while($i < $n){
$np = substr($np,0,strrpos($np,$this->sl));
$i++;
}
return $np;
}
function read(){
$this->nq = next($this->q);
$handle = @opendir($this->flpt) or die($this->flpt);
while($entry = readdir($handle)){
if(!eregi("([.])",$entry)){
if($entry != $this->nq)
$this->sd[] = $entry;
}
elseif($entry != ".." && $entry != "."){
if(!in_array(strrchr($entry,"."),$this->ignr))
$this->fs[] = $entry;
}
}
closedir($handle);
@sort($this->fs);
@sort($this->sd);
}
function enc($str){
return str_replace("[[:space:]]","%20",$str);
}
function dec($str){
return str_replace("%20","[[:space:]]",$str);
}
function do_fs(){
$this->type = 1;
$this->icon =& $this->doc;
$this->show_me($this->fs);
$this->prntr();
unset($this->fs);
}
function do_dirs(){
$this->type = 0;
$this->icon =& $this->fd;
$this->show_me($this->sd);
$this->prntr();
unset($this->sd);
}
function show_me($arr){
global $count;
static $c;
$this->done = FALSE;
$this->now = 0;
if(count($arr) <= $this->cols){
$this->next = count($arr);
}
else{
$this->next = $this->cols -1;
}
while(!$this->done){
$count = ++$c;
print "<tr>\n";
foreach(range($this->now,$this->next) as $key){
$this->print_this($arr,$key);
}
print("</tr>");
$this->now += $this->cols;
$this->next = $this->now + ($this->cols-1);
}
}
function print_this($arr,$i){
global $path;
if($i >= count($arr)){
$this->done = TRUE;
}
else{
$this->done = FALSE;
print("<td>\n<ul>\n");
if($this->type == 1){
if(strlen($arr[$i]) <= $this->ln){
$item = $arr[$i];
}
else{
$item = substr($arr[$i],0,$this->ln)."...";
}
print("".$this->icon."<a href=\"".$this->enc($this->cwd.$arr[$i])."\">".$this->dec($item)."</a>\n");
}
else{
$item = $this->cwd.$arr[$i];
if(strlen($item) >= $this->ln){
$item = "...." . substr($item,strrpos($item,$this->sl),strlen($item));
}
print("<a href=\"".$this->PS."?show=1&list=".$this->enc($this->cwd.$arr[$i])."\">".$this->icon."</a>\n");
print("<b>".str_replace(".".$this->sl,"",$item)."</b>\n");
}
print("</td>\n");
}
$path = $this->cwd;
}
function cntr(){
global $count;
if($count >= ($this->rows * 2)){
return TRUE;
}
else{
return FALSE;
}
}
function last(){
global $path;
return $this->enc($path);
}
}
$tree = new tree;
$tree->SET($HTTP_SERVER_VARS["PATH_TRANSLATED"]);
print("<html>\n<head>\n<title>PHPListView</title>\n");
print("<style type='text/css'>\nA{text-decoration:none}\n</style>\n");
print("</head>\n<body>\n<a name='top'></a>\n");
print("<table width='100%' cellpadding=1 cellspacing=0 bgcolor=\"".$tree->br."\" border=0>\n<tr>\n<td>\n");
print("<table width='100%' cellpadding=0 cellspacing=0 bgcolor=\"".$tree->bg."\" border=0>\n");
print("<tr>\n<td>\n<table width='100%'>\n<tr>\n<td>\n<font face='verdana' color='#0000ff'>PHPListView</font>\n</td>\n</tr>\n");
print("<tr>\n<td>\n </td>\n</tr>\n<tr>\n<td>\n<table>\n");
if(!isset($text)){
if(isset($expanded)){
$tree->sb($opnd=0);
$tree->rexit = 1;
}
else{
$tree->rexit = 0;
}
if(!$tree->rexit){
if(AE){
$tree->show = AE;
}
else{
$tree->show = $tree->show;
}
if(!$tree->show){
$tree->sb($opnd=0);
}
elseif(isset($list)){
$tree->lp($list);
}
else{
$tree->lp($tree->bp);
}
}
}
else{
if(!isset($af)) $af = 0;
if(!isset($fn)) $fn = 0;
$af = (int)$af;
$fn = (int)$fn;
$tree->srch($text,$path,$af,$fn);
}
$tree->prntr();
print("</table>\n</td>\n</tr>\n");
$spc = ' ';
if(!isset($expanded)){
print("<tr>\n<td align='right'>\n<a name='base'>\n</a>\n<form name=\"search\" action=\"".$tree->PS."\">\n<font face='verdana' size=1>\n");
print("powered by www.hdwt.com</font>\n".$spc."\n \n<input type='text' name='text' size=20 maxlength=40 value=''>".$spc."\n");
print(" ascii files<input type=\"checkbox\" name=\"af\" value=\"1\">filenames<input type=\"checkbox\" name=\"fn\" value=\"1\">".$spc." ");
print("<input type=\"hidden\" name=\"path\" value=\"".$tree->last()."\">\n<input type='submit' value='GO'>".$spc."\n</form>\n </td>\n</tr>\n");
}
if($tree->cntr()){
print("<tr bgcolor=\"".$tree->bg."\">\n<td align='right'>\n<a href='#top'><<</a>\n</td></tr>\n");
}
print("</table>\n</td>\n");
if($tree->cntr()){
print("<td valign='top' align='center'>\n");
print("<a href='#base'>>></a>\n</td>\n");
}
print("</tr>\n</table>\n</td>\n</tr>\n");
print("</table>\n</body>\n</html>\n");
?>
|