'; $retVal .= ''; } else { $retVal .= ''; $retVal .= ''; } $retVal .= ''; $ftorrent = $cfg["transfer_file_path"].$transfer; $fp = @fopen($ftorrent, "rd"); $alltorrent = @fread($fp, @filesize($ftorrent)); @fclose($fp); $btmeta = @BDecode($alltorrent); $torrent_size = $btmeta["info"]["piece length"] * (strlen($btmeta["info"]["pieces"]) / 20); $dirnum = (array_key_exists('files',$btmeta['info'])) ? count($btmeta['info']['files']) : 0; if (@is_readable($prioFileName)) { $prio = explode(',', @file_get_contents($prioFileName)); $prio = array_splice($prio,1); } else { $prio = array(); for ($i=0; $i<$dirnum; $i++) $prio[$i] = -1; } $tree = new dir("/",$dirnum, isset($prio[$dirnum]) ? $prio[$dirnum] : -1); if (array_key_exists('files',$btmeta['info'])) { foreach( $btmeta['info']['files'] as $filenum => $file) { $depth = count($file['path']); $branch =& $tree; for ($i=0; $i < $depth; $i++) { if ($i != $depth - 1) { $d =& $branch->findDir($file['path'][$i]); if ($d) { $branch =& $d; } else { $dirnum++; $d =& $branch->addDir(new dir($file['path'][$i], $dirnum, (isset($prio[$dirnum]) ? $prio[$dirnum] : -1))); $branch =& $d; } } else { $branch->addFile(new file($file['path'][$i]." (".$file['length'].")", $filenum,$file['length'], $prio[$filenum])); } } } } $retVal .= ""; $retVal .= ""; $retVal .= ""; $retVal .= ""; if (array_key_exists('comment',$btmeta)) $retVal .= ""; $retVal .= ""; $retVal .= ""; $retVal .= ""; if (array_key_exists('files',$btmeta['info'])) { $retVal .= ""; $retVal .= "
Metainfo File:".$transfer."
Directory Name:".$btmeta['info']['name']."
Announce URL:".$btmeta['announce']."
Comment:".tfb_htmlencode($btmeta['comment'])."
Created:".date("F j, Y, g:i a",$btmeta['creation date'])."
Torrent Size:".$torrent_size." (".@formatBytesTokBMBGBTB($torrent_size).")
Chunk size:".$btmeta['info']['piece length']." (".@formatBytesTokBMBGBTB($btmeta['info']['piece length']).")
Selected size:0

\n"; if ($withForm) { $retVal .= "
"; $retVal .= ""; } $retVal .= "\n"; $retVal .= ""; $retVal .= ""; $retVal .= "
"; if ($withForm) { $retVal .= ''; $retVal .= "
"; $retVal .= "
"; } } else { $retVal .= "
"; $retVal .= $btmeta['info']['name'].$torrent_size." (".@formatBytesTokBMBGBTB($torrent_size).")"; } // return return $retVal; } // ============================================================================= // classes // ============================================================================= /** * dir */ class dir { var $name; var $subdirs; var $files; var $num; var $prio; function dir($name,$num,$prio) { $this->name = $name; $this->num = $num; $this->prio = $prio; $this->files = array(); $this->subdirs = array(); } function &addFile($file) { $this->files[] =& $file; return $file; } function &addDir($dir) { $this->subdirs[] =& $dir; return $dir; } // code changed to support php4 // thx to Mistar Muffin function &findDir($name) { foreach (array_keys($this->subdirs) as $v) { $dir =& $this->subdirs[$v]; if($dir->name == $name) return $dir; } $retVal = false; return $retVal; } function draw($parent) { $draw = ("d.add(".$this->num.",".$parent.",\"".$this->name."\",".$this->prio.",0);\n"); foreach($this->subdirs as $v) $draw .= $v->draw($this->num); foreach($this->files as $v) { if(is_object($v)) $draw .= ("d.add(".$v->num.",".$this->num.",\"".$v->name."\",".$v->prio.",".$v->size.");\n"); } return $draw; } } /** * file */ class file { var $name; var $prio; var $size; var $num; function file($name,$num,$size,$prio) { $this->name = $name; $this->num = $num; $this->size = $size; $this->prio = $prio; } } ?>