myExplorer wie kann ich daraus ein modul bauen

Gesperrt
Darki
Beiträge: 36
Registriert: Di 10. Aug 2004, 17:14
Kontaktdaten:

myExplorer wie kann ich daraus ein modul bauen

Beitrag von Darki » Mi 6. Apr 2005, 10:18

Hallo ich möchte gern das myExplorer verwenden als Modul aber wie ?
denn wenn ich versuche es zu includen bekomme ich folgen fehler Meldungen "06-Apr-2005 11:10:05] PHP Warning: Unknown(http://xxx.xxxx.xxxxxx.de/abs.php): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required

in N:\www\xampp\htdocs\cms\front_content.php(563) : eval()'d code on line 133

[06-Apr-2005 11:10:05] PHP Warning: (null)(): Failed opening 'http://xxx.xxxx.xxxxxx.de/abs.php' for inclusion (include_path='.;N:\www\xampp\php\pear\') in N:\www\xampp\htdocs\cms\front_content.php(563) : eval()'d code on line 133
"

Code: Alles auswählen

<?php

$version = "2.7.1";

/*****************************************************************************\
 * myExplorer                                                                *
 * http://www.bmitt.com/files/webauthoring/php/                              *
 * ------------------------------------------------------------------------- *
 * written by      : Bernhard Mitterer @: admin@bmitt.com                    *
 * last modified   : 2004-11-25                                              *
 *****************************************************************************

 CHANGES:

    2.2
        - support for special chars in path and filenames

    2.3
        - fixed problem with special chars (htmlentities)
        - validates against XHTML 1.0
        - validates against CSS 2

    2.4
        - added possibility to print statistics
          (filecount, dircount, total filesize )

    2.5
        - different icons for filetypes
        - AAA Bobby Approved

    2.6
        - fixed problem with urlcoding (special chars again)
        - added possibility to handle files depending on their extension

    2.7
        - redesign of code to support userdefined sorting
        - significant performance enhancements
        - ability to benchmark the script


 USAGE:

    1. adapt the Configuration-Section to your needs
    2. thats it!


 CONFIGURATION:

     bool $su (= false)
        su stands for SuperUser and enables
           - relative paths upwards ('../') and
           - going above $rootDir

     string $rootDir (= '')
        use this attribute to specify the root-directory
        of myExplorer relative to this file (the one you
        are reading). it is not possible to view
        directories above $rootDir.
        eg. $rootDir = 'files';

     string $indexDir (= '')
        use this attribute to specify the directory
        (relativ to $rootDir) which myExplorer should
        show when opening this page.
        if you want myExplorer to start in "files/mp3"
        and $rootDir is set to "files" you should set
        $indexDir to 'mp3'.
        if you want myExplorer to start in $rootDir
        you do not have to set this attribute

     string $imgDir (= 'img')
        this attribute specifies the path to the icon-files
        ($imgDir is prepended to the filenames specified in
        $filetypes, $picUp and $picFolder)

     string $referer (= $_SERVER['PHP_SELF'])
        this attibute specifies the url to this page.
        you only will have to set this attribute if
        you have already query-strings in this url
        eg. $referer = 'index.php?pageID=234'

     bool $printCwd (= true)
        this attribute specifies if the current directory
        should be shown (above the table)

     bool $printStat (= true)
        this attribute specifies if filecount, dircount
        and total filesize should be shown (at the bottom
        of the table)

     bool $benchmark (= false)
        this attribute specifies if the processing time of
        the script is measured an printed at the bottom
        
     string $hPic     (= '&nbsp;')
     string $hName    (= 'Name')
     string $hSize    (= 'Size')
     string $hType    (= 'Type')
     string $hLastMod (= 'Last Modified')
        these attributes specify the column-headers
        of the table

     bool $showPic     (= true)
     bool $showSize    (= true)
     bool $showType    (= false)
     bool $showLastMod (= true)
        these attributes specify which columns to show

     string $showFiles   (= '*')
     string $hideFiles   (= '.*,index*,*.php')
     string $showFolders (= '*')
     string $hideFolders (= '.*,img')
        specify which files/folders should be shown
        default is 'implicit show'.
        * (asterisk) is the only wildcard allowed and
                     stands for "at least one charakter"

     bool $fastSort (= false)
        true:  the directory content is ALWAYS sorted
               ascending by filename. This option allows
               faster sorting for large directory listings
        false: sorts depending on the choosen column

     string $sortC (= 'N')
        defines default sort-column
          N: names of files/folders
          S: size of files/folders
          M: last modified of files/folders

     string $sortO (= 'A')
        defines default sort-order
          A: ascending
          D: descending

     bool $showSortPic (= true)
        true:  image showing sort direction is shown
               next to the column name
        false: no sort direction is shown

     string $sortPicAsc    (= 'sortasc.gif')
     string $sortPicDesc   (= 'sortdesc.gif')
        define image names for sort direction

     string $picUp     (= 'folderup.gif')
     string $picFolder (= 'folder.gif')
        these attributes specify the names of the folder-icons

     bool $picFile   (= 'true')
        true:  enables different icons for different filetypes
               icons are specified in $picIcons
        false: shows the default icon ( $filetypes['.*'] )

     int $xAction (= false)
     string $xFilename (= 'dofile.php')
        if this attrib $xAction = false you can ignore the
        attrib $xFilename. if you want to do something
        special when clicking on a file, set $xAction = true
        the script specified in $xFilename gets the
        path and filename of the selected file in the
        variable $_GET['file']

     array $filetypes
        each line has the following format:
        '<extension>,<tab><iconfile>,<tab><description>,<tab><xAction>,<tab><xFilename>',

        <extension>   is the filename extension including the point
        <iconfile>    is the name of the icon-file related with <extension>
        <description> filetype description shown when $showType = true
        <xAction>     if true the filename is given by Method GET to the
                      php-script specified in ...
        <xFilename>.

        - each line has to be bordered by single quotes (')
        - each line has to be terminated by a comma (,)
        - a comma has to separate the fields

        Defaults:
            description, xaction and xfilename are OPTIONAL
            if empty the following values are assumed
            <description> = <ext>-File  (eg. TXT-File)
            <xaction>     = $xAction
            <xfilename>   = $xFilename


\*****************************************************************************/

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-at" lang="de-at">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta http-equiv="Content-Language" content="de-at" />
  <meta http-equiv="expires" content="0" />
  <meta name="author" content="Bernhard Mitterer" />

  <title>BMITT.com - myExplorer</title>

  <style type="text/css">
  <!--

    table.expl { border-width:2px; width:100%;
        font-family:Verdana,Arial; font-size:12px; }
    table.expl a { color:black; text-decoration:none; }
    table.expl a img { border-width:0px; }

    table.expl a:hover { text-decoration:underline; }

    tr.path td { padding:2px; font-weight:bold; font-size:80%;
        border-style:solid; border-width:1px; border-color:#BBBBBB; }

    tr.stats td { padding:2px; padding-top:10px;
        font-weight:bold; font-size:80%; text-align:right; }

    tr.vspace td { font-size:50%; }

    tr.hExpl { background-color:#888888; color:#FFFFFF; }
    tr.hExpl td { padding:1px; text-transform:uppercase; color:#FFFFFF;
        font-family:Arial,Helvetica,sans-serif; font-weight:bold; font-size:11px; }
    tr.hExpl a { color:white; text-decoration:none; }
    tr.hExpl a:hover { color:yellow; text-decoration:none; }
    tr.hExpl td a img { margin:-1px 2px -1px 2px; }

    tr.folder { ; }
    tr.file { ; }

    td.pic, td.hPic { width:20px; }
    td.name, td.hName { ; }
    td.lastmod, td.hLastMod { width:120px; }
    td.size, td.hSize { width:120px; }
    td.type, td.hType { width:160px; }

    td.hPic { ; }
    td.hName { ; }
    td.hSize { text-align:right; }
    td.hType { ; }
    td.hLastMod { ; }

    td.pic { ; }
    td.name { ; }
    td.size { text-align:right; }
    td.type { ; }
    td.lastmod { ; }

    em { font-style:normal; font-weight:bold; }

    td.pic img { width:20px; height:16px; border-width:0px; display:block; }

    p.benchmark { font-family:Verdana,Arial; font-size:10px; margin:5px; }


  -->
  </style>

</head>
<body>

<?php

/*****************************************************************************\
 * Configuration (adapt this section to your needs)                          *
\*****************************************************************************/

$su            = false;
# paths
$rootDir       = '';
$indexDir      = '';
$imgDir        = 'img';
$referer       = $_SERVER['PHP_SELF'];
# appearance
$printCwd      = true;
$printStat     = true;
$benchmark     = false;
# labels for tableheader
$hPic          = '&nbsp;';
$hName         = 'Name';
$hSize         = 'Size';
$hType         = 'Type';
$hLastMod      = 'Last Modified';
# show attributes
$showPic       = true;
$showName      = true;    # makes no sense to hide filename
$showSize      = true;
$showType      = false;
$showLastMod   = true;
# filter
$showFiles     = '*';
$hideFiles     = '.*,index*,*.php';
$showFolders   = '*';
$hideFolders   = '.*,img';
# sort options
$fastSort      = false;
$sortC         = 'N';
$sortO         = 'A';
$showSortPic   = true;
$sortPicAsc    = 'sortasc.gif';
$sortPicDesc   = 'sortdesc.gif';
# pic-names
$picUp         = 'folderup.gif';
$picFolder     = 'folder.gif';
$picFile       = true;
# mode
$xAction       = false;
$xFilename     = 'dofile.php';
# filetypes
$filetypes     = array(
#   Extension   Icon (Pic)      Description (Type)      xAction     xFilename
#   ----------------------------------------------------------------------------------
#   '.ext',     extfile.gif,    EXT-File,               1,          download.php',      <-- EXAMPLE
    '.*,        file.gif,       Unknown',
    '.bz2,      rarfile.gif,    BZ2 Archive',
    '.c,        cfile.gif,      C Sourcefile',
    '.chm,      chmfile.gif,    Windows Helpfile',
    '.cpp,      cppfile.gif,    C++ Sourcefile',
    '.doc,      docfile.gif,    Word Document',
    '.exe,      exefile.gif,    Executable',
    '.h,        hfile.gif,      C/C++ Headerfile',
    '.htm,      htmfile.gif,    HTML Document',
    '.html,     htmfile.gif,    HTML Document',
    '.gif,      imgfile.gif,    GIF Image',
    '.gz,       zipfile.gif,    GZ Archive',
    '.jpg,      imgfile.gif,    JPG Image',
    '.js,       jsfile.gif,     JavaScript File',
    '.m,        mfile.gif,      Matlab File',
    '.mp3,      mpgfile.gif,    MP3 Audiofile',
    '.mpg,      mpgfile.gif,    MPG Videofile',
    '.pdf,      pdffile.gif,    PDF Document',
    '.png,      imgfile.gif,    PNG Image',
    '.pps,      pptfile.gif,    PowerPoint Show',
    '.ppt,      pptfile.gif,    PowerPoint File',
    '.rar,      rarfile.gif,    RAR Archive',
    '.swf,      swffile.gif,    Flash Object',
    '.txt,      txtfile.gif,    Textfile',
    '.xls,      xlsfile.gif,    Excel Chart',
    '.zip,      zipfile.gif,    ZIP Archive',
);


/*****************************************************************************\
 * prepare variables                                                         *
\*****************************************************************************/

// Benchmark START
if( $benchmark )
    $time_start = getmicrotime();

// Check Path Formats ---------------------------------------------------------
$rootDir    = formatDir($rootDir,true,true);
$indexDir   = formatDir($indexDir);
$referer    = addLinker($referer);
$imgDir     = formatDir($imgDir,true);
// ----------------------------------------------------------------------------

// Create Filetype Array ------------------------------------------------------
$filetypes = parseFiletypeConfig( $filetypes );
// ----------------------------------------------------------------------------

// Handle (given) Directory ---------------------------------------------------
# initialize
$dir = $indexDir;

# make lokal variable from HTTP_GET_VARS
if(isset($_GET['dir']))
    $dir = formatDir(rawParam('dir'));

# check given directory if it is valid/allowed
if( !isValidDir("$rootDir$dir") )
    $dir = $indexDir;

# real path ($dir is just fake [relative to $rootDir] for display)
$ldir = formatDir("$rootDir$dir",true);
// ----------------------------------------------------------------------------

// Get Directory Content ------------------------------------------------------
$files = array();
$folders = array();


# unfiltered directory content
getDirContent( $ldir );

# filter arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );

# sort only by name
if( $fastSort ) {
    natcasesort( $files );
    natcasesort( $folders );
}

# get file properties
$files   = getFileAttr( $files );
$folders = getFolderAttr( $folders );
// ----------------------------------------------------------------------------

// Sort Directory Content -----------------------------------------------------
# parse sort criteria
if    ( $fastSort )         { $C = 'N'; $O = 'A';       }
#elseif( isset($_GET['D']) ) { $C = 'D'; $O = $_GET[$C]; }
elseif( isset($_GET['M']) ) { $C = 'M'; $O = $_GET[$C]; }
elseif( isset($_GET['S']) ) { $C = 'S'; $O = $_GET[$C]; }
elseif( isset($_GET['N']) ) { $C = 'N'; $O = $_GET[$C]; }
else                        { $C = $sortC; $O = $sortO; }

# sort
if( !$fastSort ) {
    usort( $files, 'cmp' );
    usort( $folders, 'cmp' );
}

# get new order of columns (array)
$neworder = newOrder( $C, $O );

# get sort pic
$sortpic = array();
if( $showSortPic ) {
    $img = ($O=='D') ? $sortPicAsc : $sortPicDesc;
    $sortpic[$C] = '<img src="'.$imgDir.$img.'" alt="" />';
}
// ----------------------------------------------------------------------------


/*****************************************************************************\
 * Output (print table)                                                      *
\*****************************************************************************/

echo '<table cellspacing="3" class="expl" summary="Content of /'.htmlentities($dir).'">',"\n";

// print current directory ----------------------------------------------------
if($printCwd)
{
    echo '  <tr class="path">',"\n";
    echo '    <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'"><em>/'.htmlentities($dir).'</em></td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// draw tableheader -----------------------------------------------------------
echo '  <tr class="hExpl">',"\n";
if($showPic)
    echo '    <td class="hPic">&nbsp;'.$hPic.'&nbsp;</td>',"\n";
#if($showName)      // makes no sense to hide filename
    echo '    <td class="hName"><a href="'.$referer.'N='.$neworder['N'].'&dir='.$dir.'">&nbsp;'.$hName.'&nbsp;'.$sortpic['N'].'</a></td>',"\n";
if($showSize)
    echo '    <td class="hSize"><a href="'.$referer.'S='.$neworder['S'].'&dir='.$dir.'">'.$sortpic['S'].'&nbsp;'.$hSize.'&nbsp;</a></td>',"\n";
if($showLastMod)
    echo '    <td class="hLastMod"><a href="'.$referer.'M='.$neworder['M'].'&dir='.$dir.'">&nbsp;'.$hLastMod.'&nbsp;'.$sortpic['M'].'</a></td>',"\n";
if($showType)
    echo '    <td class="hType"><a href="'.$referer.'M='.$neworder['D'].'&dir='.$dir.'">&nbsp;'.$hType.'&nbsp;'.$sortpic['D'].'</a></td>',"\n";
echo '  </tr>',"\n";
// ----------------------------------------------------------------------------

// handle up-button -----------------------------------------------------------
if( $su && (!$dir || (substr($dir,-2)=='..')) )
    $up = formatDir($dir,true).'..';
else
    $up = substr($dir,0,strrpos($dir,'/'));

if( $su || ($dir && ($up!==false)) )
{
    $target = $referer.$C.'='.$O.'&dir='.$up;
    
    echo '  <tr class="folder">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.$target.'&dir='.$up.'"><img src="'.$imgDir.$picUp.'" alt="up" /></a></td>',"\n";
#    if($showName)      // makes no sense to hide filename
        echo '    <td class="name"><a href="'.$target.'"><em>..</em></a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;-&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;Up&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// print directories ----------------------------------------------------------
$fdir = formatDir($dir,true);
foreach ($folders as $folder)
{
    $target = $referer.$C.'='.$O.'&dir='.rawurlencode($fdir.$folder['name']);

    echo '  <tr class="folder">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.$target.'"><img src="'.$imgDir.$picFolder.'" alt="dir" /></a></td>',"\n";
#    if($showName)      // makes no sense to hide filename
        echo '    <td class="name"><a href="'.$target.'"><em>'.htmlentities($folder['name']).'</em></a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;'.date('Y-m-d',$folder['lmod']).'&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;File Folder&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// print files ----------------------------------------------------------------
$dirsize = 0;
foreach ($files as $file)
{
    $target = getTarget("$ldir$file[name]");
    $dirsize += $file['size'];              // total filesize in current dir
    $size = ceil($file['size']/1024);       // convert from byte to kilobyte
    $size = "$size KB";                     // add unit

    echo '  <tr class="file">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.$target.'"><img src="'.$imgDir.getIcon($file['name']).'" alt="file" /></a></td>',"\n";
#    if($showName)      // makes no sense to hide filename
        echo '    <td class="name"><a href="'.$target.'">'.htmlentities($file['name']).'</a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;'.$size.'&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;'.date('Y-m-d',$file['lmod']).'&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;'.$file['desc'].'&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// print statistics -----------------------------------------------------------
if($printStat)
{
    echo '  <tr class="stats">',"\n";
    echo '    <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'">&nbsp;<em>'.count($folders).' directories | '.count($files).' file(s) | '.ceil($dirsize/1024).' kByte total</em>&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

echo '</table>',"\n";


/*****************************************************************************\
 * Functions                                                                 *
\*****************************************************************************/

// ----------------------------------------------------------------------------
// getDirContent() fills, filter and sort Arrays of files and folders
function getDirContent($dir)
{
    global $files, $folders;

    # fill arrays
    $handle = @opendir($dir);
    while( $file = readdir($handle) ) {
        if( is_dir("$dir/$file") )
            $folders[] = $file;
        elseif( is_file("$dir/$file") )
            $files[] = $file;
    }
    @closedir($handle);
}

// ----------------------------------------------------------------------------
// addLinker()    adds '?' or '&' to the referer
function addLinker($referer)
{
    // assume that last char is not '?' or '&'
    return strchr($referer,'?') ? "$referer&" : "$referer?";
}

// ----------------------------------------------------------------------------
// formatDir()    skip trailing and leading "/" in given $dir-string
//                add
function formatDir($dir, $trailing=false, $leading=false)
{
    $dir = trim($dir,' /');
    if( $trailing && $dir )
        $dir = "$dir/";
    if( $leading ) #&& ($dir[0]!='/') )
        $dir = "./$dir";

    return $dir;
}

// ----------------------------------------------------------------------------
// filterArray()   make regular expression from $filter-string
function filterArray( $arr, $allow, $hide )
{
    $allow = makeRegex($allow);
    $hide  = makeRegex($hide);

    // preg_grep is available since PHP 4.2.0
#    $tmp = preg_grep( "/$allow/", $arr );
#    $tmp = preg_grep( "/$hide/",  $tmp, PREG_GREP_INVERT );
    // for PHP < 4.2.0
    $tmp = array();
    foreach( $arr as $val )
        if( preg_match("/$allow/",$val) && !preg_match("/$hide/",$val) )
            $tmp[] = $val;

    return $tmp;
}

// ----------------------------------------------------------------------------
// makeRegex()   make regular expression from $filter-string
function makeRegex( $filter )
{
    $regex = str_replace('.', '\.', $filter);
    $regex = str_replace('/', '\/', $regex);
    $regex = str_replace('*', '.+', $regex);
    $regex = str_replace(',', '$|^', $regex);

    return "^$regex$";
}

// ----------------------------------------------------------------------------
// isValidDir()   return true if directory is valid/allowed
function isValidDir($dir)
{
    global $su;

    $strErr  = "<p>Requested Directory Not Found</p>\n";
    $strErr .= "\n</body>\n</html>";    #close open tags
    // check if folder exists (when manipulated manually)
    is_dir($dir) or die($strErr);

    // prevent cd with relative path '../'
    return $su ? true : !(strpos($dir,'..')!==false);
}

// ----------------------------------------------------------------------------
// rawParam()
function rawParam( $param )
{
    return ini_get('magic_quotes_gpc') ? stripslashes($_GET[$param]) : $_GET[$param];
}

// ----------------------------------------------------------------------------
// getAttributes()   returns array with fileproperties
//                   (name, size, lastmod and desc)
function getFileAttr( $obj )
{
    global $ldir;

    $tmp = array();
    foreach( $obj as $file ) {
        $tmp[] = array(
            'name' => $file,
            'size' => filesize("$ldir$file"),    // get 'size of file' in bytes
            'lmod' => filemtime("$ldir$file"),   // get 'last modified date'
            'desc' => getDesc("$file")           // get 'file description'
        );
    }
    return $tmp;
}

// ----------------------------------------------------------------------------
// getFolderAttributes()   returns array with fileproperties (name, size and lastmod)
function getFolderAttr( $obj )
{
    global $ldir;

    $tmp = array();
    foreach( $obj as $folder ) {
        $tmp[] = array(
            'name' => $folder,
            'lmod' => filemtime("$ldir$folder"),   // get 'last modified date'
        );
    }
    return $tmp;
}

// ----------------------------------------------------------------------------
// compare()
function cmp($a, $b) {

    global $C, $O;

    $sortKey   = array( 'N'=>'name', 'S'=>'size', 'M'=>'lmod', 'D'=>'desc' );
    $sortOrder = array( 'A'=> 1, 'D'=> -1 );

    // sort by main criteria ($C)
    $ret = $sortOrder[$O] * strnatcasecmp($a[$sortKey[$C]], $b[$sortKey[$C]]);
    // sort equal values by filename
    if( $ret == 0 && $C != 'N' )
        $ret = $sortOrder[$O] * strnatcasecmp($a[$sortKey['N']], $b[$sortKey['N']]);

    return $ret;
}

// ----------------------------------------------------------------------------
// parseFiletypeConfig()   returns 2-dim array from given config-array
function parseFiletypeConfig( $picIcons )
{
    global $xAction, $xFilename;

    foreach( $picIcons as $type ) {
        $tmp = spliti( '[[:blank:]]*,[[:blank:]]*', $type );
        if( $tmp[4]=='' ) $tmp[4] = $xFilename;
        if( $tmp[3]=='' ) $tmp[3] = $xAction;

        $ret[$tmp[0]] = array(
            'icon' => $tmp[1],
            'desc' => $tmp[2],
            'xact' => $tmp[3],
            'xfn'  => $tmp[4]
        );
    }
    return $ret;
}

// ----------------------------------------------------------------------------
// newOrder()   return order of $col for the next klick
function newOrder( $C, $O )
{
    global $imgDir;
    
    $tmp = array(
        'N' => 'A',
        'S' => 'A',
        'M' => 'A',
        'D' => 'A'
    );
    // reverse order of current column
    $tmp[$C] = ($O=='D') ? 'A' : 'D';
    
    return $tmp;
}

// ----------------------------------------------------------------------------
// getTarget()   return target of click
function getTarget( $filename )
{
    global $filetypes;

    // extract filename extension
    $ext = strtolower( strrchr( $filename, '.' ) );
    // handle unknown extensions
    if( !array_key_exists($ext,$filetypes) )
        $ext = '.*';
    // format/encode url
    $filename = str_replace('%2F', '/', rawurlencode($filename));

    // return matching target
    return $filetypes[$ext]['xact'] ? $filetypes[$ext]['xfn']."?file=$filename" : $filename;
}

// ----------------------------------------------------------------------------
// getIcon()   return icon-image based on filename extension
function getIcon( $filename )
{
    global $filetypes, $picFile;

    // extract filename extension
    $ext = strtolower( strrchr( $filename, '.' ) );
    // return default image if $picFile = false or extension is unknown
    if( !$picFile || !array_key_exists($ext,$filetypes) )
        return $filetypes['.*']['icon'];

    // return matching image
    return $filetypes[$ext]['icon'];
}

// ----------------------------------------------------------------------------
// getDesc()   return type-description based on filename extension
function getDesc( $filename )
{
    global $filetypes;

    // extract filename extension
    $ext = strtolower( strrchr( $filename, '.' ) );
    // handle files without extension
    if( !$ext )
        return 'unknown';
    // return default description if extension is unknown
    if( !$filetypes[$ext]['desc'] )
        return substr(strtoupper($ext),1).'-File';

    // return matching description
    return $filetypes[$ext]['desc'];
}

// ----------------------------------------------------------------------------
// getmicrotime()   return float value of unix timestamp in seconds
function getmicrotime()
{
   list($usec, $sec) = explode(" ",microtime());
   return ((float)$usec + (float)$sec);
}

// Benchmark END
if( $benchmark )
    printf("<p class=\"benchmark\">processing time: %.3f seconds</p>", getmicrotime()-$time_start);

?>

</body>
</html>

www.overhang.at

Beitrag von www.overhang.at » Mi 6. Apr 2005, 15:12

Hallo, ohne die eine oder andere Änderung des Scriptes wird es nicht funktionieren:

1) HTML / HEAD usw. Tags aus dem Modul entfernen

2) Das Script ruft sich selbst über eine Adresse (string $referer (= $_SERVER['PHP_SELF']) ) auf. Diese müsste auf http://example.com/cms/frontend_content ... &idartlang... zeigen...

Ein wenig Arbeit wird nötig sein.

Darki
Beiträge: 36
Registriert: Di 10. Aug 2004, 17:14
Kontaktdaten:

hallo danke für die antwort

Beitrag von Darki » Mi 6. Apr 2005, 23:14

Danke für die antwort
ber ich bin absuluter PHP anfänger

Darki
Beiträge: 36
Registriert: Di 10. Aug 2004, 17:14
Kontaktdaten:

??

Beitrag von Darki » Fr 8. Apr 2005, 15:42

Keiner da der so waw brauchen kann

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 8. Apr 2005, 19:30

Doch, klar. Nur keine Zeit...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Darki
Beiträge: 36
Registriert: Di 10. Aug 2004, 17:14
Kontaktdaten:

Hallo gibs wenn der das weiterverfolgt hat

Beitrag von Darki » Do 1. Sep 2005, 06:26

Hallo gibs wen der das weiter verfogt hat ? :shock:

busi
Beiträge: 82
Registriert: Mi 18. Sep 2002, 13:36
Kontaktdaten:

Beitrag von busi » Sa 3. Sep 2005, 10:19

hallo darki

kopier mal folgendes in den output bereich. input gibt's noch nicht... :D hab's nur ganz auf die schnelle gemacht und nicht getestet...
:P
die verzeichnisse musst du halt deinen bedürfnissen noch anpassen.

Code: Alles auswählen

<?php

/*****************************************************************************\
 * Configuration (adapt this section to your needs)                          *
\*****************************************************************************/

$su            = false;
# paths
$rootDir       = '../download';
#$rootDir       = '/upload/scripts';


#$referer      = '$auth->url()';
#$referer      = '/upload/scripts/index.php';
$referer       = '/cms/contenido/includes/include.download.php';
$printCwd      = false;
$printStat     = false;
# labels for tableheader
$hPic          = '&nbsp;';
$hName         = 'Name';
$hSize         = 'Gr&ouml;sse';
$hType         = 'Typ';
$hLastMod      = 'Bearbeitet am';
# show attributes
$showPic       = true;
$showName      = true;    # must always be 'true'
$showSize      = true;
$showType      = false;
$showLastMod   = true;
# pic-names
$picUp         = 'images/folderup.gif';
$picFolder     = 'images/folder.gif';
$picFile       = true;
# filter
$showFiles     = '*.zip,*.rar,*.pdf';
$hideFiles     = '.*,index*,*.php';
$showFolders   = '*';
$hideFolders   = '.*';
# mode
$xAction       = 0;
$xFilename     = 'dofile.php';
# filetypes
$picIcons      = array(
                 '.*'    => 'images/file.gif',
                 '.bz2'  => 'images/rarfile.gif',
                 '.c'    => 'images/cfile.gif',
                 '.cpp'  => 'images/cppfile.gif',
                 '.doc'  => 'images/docfile.gif',
                 '.exe'  => 'images/exefile.gif',
                 '.h'    => 'images/hfile.gif',
                 '.htm'  => 'images/htmfile.gif',
                 '.html' => 'images/htmfile.gif',
                 '.gif'  => 'images/imgfile.gif',
                 '.gz'   => 'images/zipfile.gif',
                 '.jpg'  => 'images/imgfile.gif',
                 '.js'   => 'images/jsfile.gif',
                 '.m'    => 'images/mfile.gif',
                 '.mp3'  => 'images/mpgfile.gif',
                 '.mpg'  => 'images/mpgfile.gif',
                 '.pdf'  => 'images/pdffile.gif',
                 '.png'  => 'images/imgfile.gif',
                 '.ppt'  => 'images/pptfile.gif',
                 '.rar'  => 'images/rarfile.gif',
                 '.swf'  => 'images/swffile.gif',
                 '.txt'  => 'images/txtfile.gif',
                 '.xls'  => 'images/xlsfile.gif',
                 '.zip'  => 'images/zipfile.gif',
                 );


/*****************************************************************************\
 * prepare variables                                                         *
\*****************************************************************************/


// Check Path Formats ---------------------------------------------------------
$rootDir    = formatDir($rootDir,true,true);
$indexDir   = formatDir($indexDir);
$referer    = addLinker($referer);
// ----------------------------------------------------------------------------

// Handle (given) Directory ---------------------------------------------------
# initialize
$dir = $indexDir;

# make lokal variable from HTTP_GET_VARS
if(isset($_GET['dir']))
    $dir = formatDir(rawParam('dir'));

# check given directory if it is valid/allowed
if( !isValidDir("$rootDir$dir") )
    $dir = $indexDir;

# real path ($dir is just fake [relative to $rootDir] for display)
$ldir = formatDir("$rootDir$dir",true);
// ----------------------------------------------------------------------------

// Get Directory Content ------------------------------------------------------
$files = array();
$folders = array();

# unfiltered directory content
getDirContent( $ldir );

# filter (and sort) arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );
// ----------------------------------------------------------------------------


/*****************************************************************************\
 * Output (print table)                                                      *
\*****************************************************************************/

echo '<table cellspacing="3" class="expl" summary="Content of /'.htmlentities($dir).'">',"\n";

// print current directory ----------------------------------------------------
if($printCwd)
{
    echo '  <tr class="path">',"\n";
    echo '    <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'"><em>/'.htmlentities($dir).'</em></td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// draw tableheader -----------------------------------------------------------
echo '  <tr class="hExpl">',"\n";
if($showPic)
    echo '    <td class="hPic">&nbsp;'.$hPic.'&nbsp;</td>',"\n";
if($showName)
    echo '    <td class="hName">&nbsp;'.$hName.'&nbsp;</td>',"\n";
if($showSize)
    echo '    <td class="hSize">&nbsp;'.$hSize.'&nbsp;</td>',"\n";
if($showType)
    echo '    <td class="hType">&nbsp;'.$hType.'&nbsp;</td>',"\n";
if($showLastMod)
    echo '    <td class="hLastMod">&nbsp;'.$hLastMod.'&nbsp;</td>',"\n";
echo '  </tr>',"\n";
// ----------------------------------------------------------------------------

// handle up-button -----------------------------------------------------------
if( $su && (!$dir || (substr($dir,-2)=='..')) )
    $up = formatDir($dir,true).'..';
else
    $up = substr($dir,0,strrpos($dir,'/'));

#if( $su || ($dir && ($up!==false)) )
#{
#    echo '  <tr class="folder">',"\n";
#    if($showPic)
#        echo '    <td class="pic"><a href="'.$referer.'dir='.$up.'"><img src="'.$picUp.'" alt="up" /></a></td>',"\n";
#    if($showName)
#        echo '    <td class="name"><a href="'.$referer.'dir='.$up.'"><em>..</em></a></td>',"\n";
#    if($showSize)
#        echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
#    if($showType)
#        echo '    <td class="type">&nbsp;dir&nbsp;</td>',"\n";
#    if($showLastMod)
#        echo '    <td class="lastmod">&nbsp;-&nbsp;</td>',"\n";
#    echo '  </tr>',"\n";
#}
// ----------------------------------------------------------------------------

// print directories ----------------------------------------------------------
foreach ($folders as $folder)
{
      echo '  <tr class="folder">',"\n";
      if($showPic)
          echo '    <td class="pic"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><img src="'.$picFolder.'" alt="'.htmlentities($folder).'" /></a></td>',"\n";
      if($showName)
          echo '    <td class="name"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><em>'.htmlentities($folder).'</em></a></td>',"\n";
      if($showSize)
          echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
      if($showType)
          echo '    <td class="type">&nbsp;'.filetype("$ldir$folder").'&nbsp;</td>',"\n";
      if($showLastMod)
          echo '    <td class="lastmod">&nbsp;-&nbsp;</td>',"\n";
      echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// print files ----------------------------------------------------------------
foreach ($files as $file)
{
    $type = filetype("$ldir$file");         // get 'type of file'
    $modDate = filemtime("$ldir$file");     // get 'last modified date' of file
    #$modDate = date('Y-m-d',$modDate);      // format date in ISO-Style
    $modDate = date('d.m.Y',$modDate);      // format date in ISO-Style	
    $size = filesize("$ldir$file");         // get 'size of file' in bytes
    $dirsize += $size;                      // total filesize in current dir
    $size = ceil($size/1024);               // convert from byte to kilobyte
    $size = "$size kb";                     // add unit

    echo '  <tr class="file">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.makeLink("$ldir$file").'"><img src="'.getIcon($file).'" alt="'.htmlentities($file).'" /></a></td>',"\n";
    if($showName)
        echo '    <td class="name"><a href="'.makeLink("$ldir$file").'">'.htmlentities($file).'</a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;'.$size.'&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;'.$type.'&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;'.$modDate.'&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

// print statistics -----------------------------------------------------------
if($printStat)
{
    echo '  <tr class="stats">',"\n";
    echo '    <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'">&nbsp;<em>'.count($folders).' directories | '.count($files).' file(s) | '.ceil($dirsize/1024).' kByte total</em>&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------

echo '</table>',"\n";


/*****************************************************************************\
 * Functions                                                                 *
\*****************************************************************************/

// ----------------------------------------------------------------------------
// getDirContent() fills, filter and sort Arrays of files and folders
function getDirContent($dir)
{
    global $files, $folders;

    # fill arrays
    $handle = @opendir($dir);
    while( $file = readdir($handle) ) {
        if( is_dir("$dir/$file") )
            $folders[] = $file;
        elseif( is_file("$dir/$file") )
            $files[] = $file;
    }
    @closedir($handle);
}

// ----------------------------------------------------------------------------
// addLinker()    adds '?' or '&' to the referer
function addLinker($referer)
{
    // assume that last char is not '?' or '&'
    return strchr($referer,'?') ? "$referer&" : "$referer?";
}

// ----------------------------------------------------------------------------
// formatDir()    skip trailing and leading "/" in given $dir-string
//                add
function formatDir($dir, $trailing=false, $leading=false)
{
    $dir = trim($dir,' /');
    if( $trailing && $dir )
        $dir = "$dir/";
    if( $leading ) #&& ($dir[0]!='/') )
        $dir = "./$dir";

    return $dir;
}

// ----------------------------------------------------------------------------
// filterArray()   make regular expression from $filter-string
function filterArray( $array, $allow, $hide )
{
    $allow = makeRegex($allow);
    $hide  = makeRegex($hide);

    $tmp = array();
    foreach( $array as $val )
        if( ereg($allow,$val) && !ereg($hide,$val) )
            $tmp[] = $val;

    natcasesort( $tmp );
    return $tmp;
}

// ----------------------------------------------------------------------------
// makeRegex()   make regular expression from $filter-string
function makeRegex( $filter )
{
    $regex = str_replace('.', '\.', $filter);
    $regex = str_replace('*', '.+', $regex);
    $regex = str_replace(',', '$|^', $regex);

    return "^$regex$";
}

// ----------------------------------------------------------------------------
// isValidDir()   return true if directory is valid/allowed
function isValidDir($dir)
{
    global $su;

    $strErr  = "<p>Requested Directory Not Found</p>\n";
    $strErr .= "\n</body>\n</html>";    #close open tags
    // check if folder exists (when manipulated manually)
    is_dir($dir) or die($strErr);

    // prevent cd with relative path '../'
    return $su ? true : !(strpos($dir,'..')!==false);
}

// ----------------------------------------------------------------------------
// rawParam()
function rawParam( $param )
{
    return ini_get('magic_quotes_gpc') ? stripslashes($_GET[$param]) : $_GET[$param];
}

// ----------------------------------------------------------------------------
// makeLink()   return target of click
function makeLink( $target )
{
    global $xAction, $xFilename;

    $target = str_replace('%2F', '/', rawurlencode($target));

    return $xAction ? "$xFilename?file=$target" : $target;
}

// ----------------------------------------------------------------------------
// getIcon()   return icon-image based on filename extension
function getIcon( $filename )
{
    global $picIcons, $picFile;

    // extract filename extension
    $ext = strtolower( strrchr( $filename, '.' ) );
    // return default image if $picFile = false
    // or extension is unknown
    if( !$picFile || !array_key_exists($ext,$picIcons) )
        return $picIcons['.*'];

    // return matching image
    return $picIcons[$ext];
}

?>
busi

"...please forgive me, now I see that I've been blind..."

busi
Beiträge: 82
Registriert: Mi 18. Sep 2002, 13:36
Kontaktdaten:

Beitrag von busi » Sa 3. Sep 2005, 10:22

kleiner nachtrag... :)

die folgende zeile braucht's nicht und kann gelöscht werden..

Code: Alles auswählen

$referer       = '/cms/contenido/includes/include.download.php';
busi

"...please forgive me, now I see that I've been blind..."

Darki
Beiträge: 36
Registriert: Di 10. Aug 2004, 17:14
Kontaktdaten:

echt Klasse

Beitrag von Darki » Mo 5. Sep 2005, 20:15

vielen dank für die Super umsetzung

busi
Beiträge: 82
Registriert: Mi 18. Sep 2002, 13:36
Kontaktdaten:

fehler entdeckt

Beitrag von busi » Di 25. Okt 2005, 10:30

ich habe im output noch einen fehler entdeckt. mindestens bei meiner installation gabs damit probleme. das editieren der artikel welche das download modul benutzen, funktionierte nicht mehr, d.h. es wurde nur eine leere weisse seite angezeigt.

Fehlerhafte Zeilen (Nr. 296/297):

Code: Alles auswählen

    $strErr  = "<p>Requested Directory Not Found</p>\n"; 
    $strErr .= "\n</body>\n</html>";    #close open tags 
Abhilfe:
Einfach die " durch ' ersetzen

Code: Alles auswählen

    $strErr  = '<p>Requested Directory Not Found</p>\n'; 
    $strErr .= '\n</body>\n</html>';    #close open tags 
busi

"...please forgive me, now I see that I've been blind..."

Gesperrt