<?php
/*
Автор скрипта: Juse
Модификация: Jahak
*/


include_once "config.php";
include_once "head.php";
include_once "pclzip.php";
// echo 'Просмотр архива '.strtolower(substr($_GET['arch'], 1 + strrpos($_GET['arch'], "/"))).'<br />';
if(!$_GET['arch']){
    echo 'Ошибка! Не выбран архив!';
    include_once "foot.php";
    exit;
} 
$arch = $_GET['arch'];
if (!$_GET['action']){
    $zip = new PclZip($_GET['arch']);
    if (($list = $zip->listContent()) != 0){

        sort($list);

        $countlist = count($list);
        $zfilename = array();
        $zfilesize = array();
        $zfolder = array();

        for ($i=0; $i<$countlist; $i++){
            $zfilename[] = $list[$i]['filename'];
            $zfilesize[] = $list[$i]['size'];
            $zfolder[] = $list[$i]['folder'];
        }

        $totalsize = array_sum($zfilesize);

        $total = count($zfilename);
        echo '<div class="gmenu">Название <b>'.strtolower(substr($arch, 1 + strrpos($arch, "/"))).'</b><br />
Всего файлов: '.$total.'<br />Вес распакованного архива: '.formatsize($totalsize).'</div>';
        $start = (int)$_GET['start'];
        if($start < 0 || $start > $total){
            $start = 0;
        }
        if ($total < $start + $udata[2]){
            $end = $total;
        } else {
            $end = $start + $udata[2];
        }
        echo '<div class="bmenu">';
        for ($i = $start; $i < $end; $i++){
            
            if($zfolder[$i]=="1"){
                $zfilename[$i] = substr($zfilename[$i], 0, -1);
                echo '<img src="img/dir.gif" alt="dir" /> <b>Директория '.$zfilename[$i].'</b><br />';
            } else {
                $arrext = array('.xml', '.wml', '.asp', '.aspx', '.shtml', '.htm', '.phtml', '.html', '.xhtml', '.php', '.htt', '.dat', '.tpl', '.htaccess', '.py', '.pyw', '.exe', '.jad', '.jar', '.js', '.jsp', '.mid', '.mmf', '.mp3', '.psd', '.rar', '.zip', '.css', '.txt', '.sql', '.swf', '.3gp', '.mp4', '.avi', '.ttf', '.gif', '.png', '.bmp', '.wbmp', '.jpg', '.jpeg', '.xls', '.doc', '.ppt', '.wmv');
                $ext = strtolower(strrchr($zfilename[$i], "."));
                echo '<img src="img/'.icons($ext).'" alt="image" />&nbsp;';
                if (in_array($ext, $arrext)) {
                    echo '<a href="zip.php?action=preview&amp;arch='.$arch.'&amp;open='.$zfilename[$i].'&amp;start='.$start.'">'.$zfilename[$i].'</a> ('.formatsize($zfilesize[$i]).')<br />' . PHP_EOL;
                } else {
                    echo '<a href="zip.php?action=preview&amp;arch='.$arch.'&amp;open='.$zfilename[$i].'&amp;start='.$start.'">'.$zfilename[$i].'</a> ('.formatsize($zfilesize[$i]).')<br />' . PHP_EOL;
                }
            }
        }
        echo '</div>
<div class="menu">';
        if($total>0){
            $ba = ceil($total/$udata[2]);
            $ba2 = $ba*$udata[2]-$udata[2];
            echo '<br />Страницы:';
            $asd = $start-($udata[2]*3);
            $asd2 = $start+($udata[2]*4);

            if($asd<$total && $asd>0){
                echo ' <a href="zip.php?start=0&arch='.$arch.'&">1</a> ... ';
            }
            for($i=$asd; $i<$asd2;){
                if($i<$total && $i>=0){
                    $ii = floor(1+$i/$udata[2]);
                    if ($start==$i) {
                        echo ' <b>('.$ii.')</b>';
                    } else {
                        echo ' <a href="zip.php?start='.$i.'&arch='.$arch.'&">'.$ii.'</a> ';
                    }
                }
                $i = $i+$udata[2];
            }
            if($asd2<$total){
                echo ' ... <a href="zip.php?start='.$ba2.'&arch='.$arch.'&">'.$ba.'</a>';
            }
        }
    } else {
        echo '<br /> Невозможно открыть архив! <br />
Ошибка: '.$zip->errorInfo(true);
    }

    echo '<br />* <a href="index.php?action=viewfile&fid='.$arch.'&">Вернуться</a><br />
    * <a href="index.php">Файловый менеджер</a>
</div>';
}
////////////////////////////////// Просмотр  файла ////////////////////////////////
if($_GET['action']=="preview"){
    $zip = new PclZip($arch);
    $content = $zip->extract(PCLZIP_OPT_BY_NAME, $_GET['open'], PCLZIP_OPT_EXTRACT_AS_STRING);
    $content = $content[0]['content'];

    $preview = explode("\r\n", $content);
    $count = count($preview);
    $ext = strtolower(substr($_GET['open'], strrpos($_GET['open'], '.') + 1));

    echo '<div class="gmenu">Название архива: <b>'.strtolower(substr($arch, 1 + strrpos($arch, "/"))).'</b><br />
    Открытый файл: <b>'.$_GET['open'].'</b></div>';

    if ($ext!="gif" && $ext!="jpg" && $ext!="png"){

        //---------------------- Файл ----------------------//
        echo '<div class="bmenu">Всего строчек: '.(int)$count.'
<div class="list2">';

        if(is_utf($content)){
            echo highlight_code($content);
        } else {
            echo highlight_code(win_to_utf($content));
        }

        echo '</div>« <a href="zip.php?arch='.$arch.'&start='.$_GET['start'].'&">Назад</a></div>';

    } else {

        //-------------------- Картинка --------------------//
        if($_GET['create']=="image"){
        ob_end_clean();    
        ob_clean();
        header('Content-Disposition: attachment; filename="image.'.$ext.'";');
        if($ext=="jpg"){$ext="jpeg";}
        header("Content-type: image/$ext");
        header("Content-Length: ".strlen($content));
        echo $content;
        exit;
        }
        echo 'Image:<br /> <a href="zip.php?action=preview&arch='.$arch.'&open='.$_GET['open'].'&create=image"> <img src="zip.php?action=preview&arch='.$arch.'&open='.$_GET['open'].'&create=image" alt=""></a><br />
        « <a href="zip.php?arch='.$arch.'&start='.$_GET['start'].'&">Назад</a><br />';
        //--------------------------------------------------//
    }
}

include_once "foot.php";