Salve,
Vi prego di non evitarmi perchè il codice è un po' lungo
sto cercando di costruire un albero delle cartelle,appongiandomi anche a questo plugin jquery(http://abeautifulsite.net/blog/2007/06/php-file-tree/),di per se il plugin funziona,ma visto che voglio fare l'esaltato ho deciso di inserire pure un lightbox per le immagine(funziona pure questo) e non contento una gallary sempre con lo stesso plugin lightbox una gallery per cartelle...ed ecco il problema:va tutto a rotoli...
Questo è il for con cui invio le informazioni e ricevo:
Codice PHP:
$c=0;
$num=0;
//originale
for($j=0;$j<count($arr);$j++){
//originale
//echo php_file_tree($_SERVER['DOCUMENT_ROOT']."/tree/".$arr[$j], "http://farebury.exofire.net/?file=[link]/");
//aggiunto
list($num,$exp)= php_file_tree($_SERVER['DOCUMENT_ROOT']."/tree/".$arr[$j], "http://farebury.exofire.net/?file=[link]/",$c,$num);
$c=1;
echo $exp;
}
//fine aggiunto
?>
Questo è il codice funzionante fino all'ultimo momento:
Codice PHP:
<?php
function php_file_tree($directory, $return_link, $extensions = array(),$c,$num) {
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
// Remove trailing slash
if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
$code .= php_file_tree_dir($directory, $return_link, $extensions);
return $code;
}
function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true,$c,$num) {
// Recursive function called by php_file_tree() to list directories/files
// Get and sort directories/files
if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
natcasesort($file);
// Make directories first
$files = $dirs = array();
foreach($file as $this_file) {
if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
}
$file = array_merge($dirs, $files);
// Filter unwanted extensions
if( !empty($extensions) ) {
foreach( array_keys($file) as $key ) {
if( !is_dir("$directory/$file[$key]") ) {
$ext = substr($file[$key], strrpos($file[$key], ".") + 1);
if( !in_array($ext, $extensions) ) unset($file[$key]);
}
}
}
if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
$php_file_tree = "<ul";
if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
$php_file_tree .= ">";
foreach( $file as $this_file ) {
if( $this_file != "." && $this_file != ".." ) {
if( is_dir("$directory/$this_file") ) {
// Directory
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".htmlspecialchars($this_file)."</a>";
$php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false,$c,$num);
$php_file_tree .= "";
} else {
// File
// Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
$link=taglia($link);
$ext=strtolower($ext);
if($c==0){
$pth1=cutter($link);
$c=1;
echo "<script>alert('controllo');</script>";
}
$pth2=cutter($link);
if($ext=='ext-png' || $ext=='ext-bmp' || $ext=='ext-jpg' || $ext=='ext-jpeg' || $ext=='ext-psd'){//
if($pth2==$pth1)
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" . htmlspecialchars($this_file) . "</a>"; //originale
else{
$pth1=$pth2;
$num+=1;
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" . htmlspecialchars($this_file) . "</a>";
}
}
else
$php_file_tree .= "<li class=\"pft-file " .$ext. "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a>";
}
}
}
$php_file_tree .= "[/list]";
}
return $php_file_tree;
}
// For PHP4 compatibility
function php4_scandir($dir) {
$dh = opendir($dir);
while( false !== ($filename = readdir($dh)) ) {
$files[] = $filename;
}
sort($files);
return($files);
}
function taglia($stringa){
$stra=str_replace('?file=/home/oxoc/public_html/', '', $stringa);
$leng=strlen($stra)-1;
return(substr($stra, 0, $leng));
}
function cutter($stringa){
$pos =strripos($stringa, '/');
$leng=strlen($stringa);
//echo"<script>alert('".substr($stringa,0,$pos)."')</script>";
return(substr($stringa,0,$pos));
}
Invece questo è il codice non funzionante:
Codice PHP:
<?php
function php_file_tree($directory, $return_link, $extensions = array(),$c,$num) {
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
// Remove trailing slash
if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
//originale
/*$code .= php_file_tree_dir($directory, $return_link, $extensions);
return $code;*/
//fine originale
//aggiunto
list($pop[0],$pop[1])=php_file_tree_dir($directory, $return_link, $extensions);
echo "<script>alert('percorso=".$pop[0]."');</script>";
echo "<script>alert('numero=".$pop[1]."');</script>";
$code.=$pop[0];
$num=$pop[1];
$ret[] = $num;
$ret[]= $code;
return $ret;
//fine aggiunto
}
function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true,$c,$num) {
// Recursive function called by php_file_tree() to list directories/files
// Get and sort directories/files
if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
natcasesort($file);
// Make directories first
$files = $dirs = array();
foreach($file as $this_file) {
if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
}
$file = array_merge($dirs, $files);
// Filter unwanted extensions
if( !empty($extensions) ) {
foreach( array_keys($file) as $key ) {
if( !is_dir("$directory/$file[$key]") ) {
$ext = substr($file[$key], strrpos($file[$key], ".") + 1);
if( !in_array($ext, $extensions) ) unset($file[$key]);
}
}
}
if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
$php_file_tree = "<ul";
if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
$php_file_tree .= ">";
foreach( $file as $this_file ) {
if( $this_file != "." && $this_file != ".." ) {
if( is_dir("$directory/$this_file") ) {
// Directory
//$name=nome(htmlspecialchars($this_file))
//$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".$name."</a>";
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">".htmlspecialchars($this_file)."</a>";
$php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false,$c,$num);
$php_file_tree .= "";
} else {
// File
// Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
$link=taglia($link);
$ext=strtolower($ext);
//aggiunto ora//
if($c==0){//
$pth1=cutter($link);//
$c=1;//
echo "<script>alert('controllo');</script>";
}
$pth2=cutter($link);//
if($ext=='ext-png' || $ext=='ext-bmp' || $ext=='ext-jpg' || $ext=='ext-jpeg' || $ext=='ext-psd'){//
if($pth2==$pth1)//
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" . htmlspecialchars($this_file) . "</a>"; //originale
else{//
$pth1=$pth2;//
$num+=1;//
$php_file_tree .= "<li class=\"pft-file ".$ext."\"><a class='fancybox' data-fancybox-group='button".$num."' href=\"$link\" title='".htmlspecialchars($this_file)."'>" . htmlspecialchars($this_file) . "</a>";//
}//
}//
else
$php_file_tree .= "<li class=\"pft-file " .$ext. "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a>";
}
}
}
$php_file_tree .= "[/list]";
}
$arco[0]=$php_file_tree;
$arco[1]=$num;
return $arco;
//return $php_file_tree;
}
// For PHP4 compatibility
function php4_scandir($dir) {
$dh = opendir($dir);
while( false !== ($filename = readdir($dh)) ) {
$files[] = $filename;
}
sort($files);
return($files);
}
//cut link
function taglia($stringa){
$stra=str_replace('?file=/home/oxoc/public_html/', '', $stringa);
$leng=strlen($stra)-1;
return(substr($stra, 0, $leng));
}
//cut path
function cutter($stringa){
$pos =strripos($stringa, '/');
$leng=strlen($stringa);
//echo"<script>alert('".substr($stringa,0,$pos)."')</script>";
return(substr($stringa,0,$pos));
}
Questo invece è il codice original originale(quello del plug):
Codice PHP:
<?php
function php_file_tree($directory, $return_link, $extensions = array()) {
// Generates a valid XHTML list of all directories, sub-directories, and files in $directory
// Remove trailing slash
if( substr($directory, -1) == "/" ) $directory = substr($directory, 0, strlen($directory) - 1);
$code .= php_file_tree_dir($directory, $return_link, $extensions);
return $code;
}
function php_file_tree_dir($directory, $return_link, $extensions = array(), $first_call = true) {
// Recursive function called by php_file_tree() to list directories/files
// Get and sort directories/files
if( function_exists("scandir") ) $file = scandir($directory); else $file = php4_scandir($directory);
natcasesort($file);
// Make directories first
$files = $dirs = array();
foreach($file as $this_file) {
if( is_dir("$directory/$this_file" ) ) $dirs[] = $this_file; else $files[] = $this_file;
}
$file = array_merge($dirs, $files);
// Filter unwanted extensions
if( !empty($extensions) ) {
foreach( array_keys($file) as $key ) {
if( !is_dir("$directory/$file[$key]") ) {
$ext = substr($file[$key], strrpos($file[$key], ".") + 1);
if( !in_array($ext, $extensions) ) unset($file[$key]);
}
}
}
if( count($file) > 2 ) { // Use 2 instead of 0 to account for . and .. "directories"
$php_file_tree = "<ul";
if( $first_call ) { $php_file_tree .= " class=\"php-file-tree\""; $first_call = false; }
$php_file_tree .= ">";
foreach( $file as $this_file ) {
if( $this_file != "." && $this_file != ".." ) {
if( is_dir("$directory/$this_file") ) {
// Directory
$php_file_tree .= "<li class=\"pft-directory\"><a href=\"#\">" . htmlspecialchars($this_file) . "</a>";
$php_file_tree .= php_file_tree_dir("$directory/$this_file", $return_link ,$extensions, false);
$php_file_tree .= "";
} else {
// File
// Get extension (prepend 'ext-' to prevent invalid classes from extensions that begin with numbers)
$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
$link = str_replace("[link]", "$directory/" . urlencode($this_file), $return_link);
$php_file_tree .= "<li class=\"pft-file " . strtolower($ext) . "\"><a href=\"$link\">" . htmlspecialchars($this_file) . "</a>";
}
}
}
$php_file_tree .= "[/list]";
}
return $php_file_tree;
}
// For PHP4 compatibility
function php4_scandir($dir) {
$dh = opendir($dir);
while( false !== ($filename = readdir($dh)) ) {
$files[] = $filename;
}
sort($files);
return($files);
}
Questo è l'output giusto:
codice:
scuola
IMG_0398.JPG
non vis
IMG_0017.JPG
Questo è l'output sbagliato:
codice:
scuolaArray
IMG_0398.JPG
non visArray