<?php
error_reporting(0);
session_start();

$exclude = ['.', '..', 'online.txt', 'cache', 'logs', 'card', 'datas', 'chat', 'dosya', 'drive_files', 'excel', 'image', 'video', 'kategori', 'rek-lam', 'backup', 'slide', 'ses', 'assets', 'html', 'sql.php', 'error_log', '.error_log'];

if ($_GET["op"] == "" || $_GET["op"] == "gzip") {
    $targetDir = realpath(__DIR__ . '/../../../');
    if (!$targetDir || !is_dir($targetDir)) {
        exit("Hedef klasör bulunamadı.");
    }

    $zip_file_path = $targetDir . DIRECTORY_SEPARATOR . 'transfer.zip';

    class FlxZipArchive extends ZipArchive {
        private $exclude = [];

        public function __construct($exclude = []) {
            $this->exclude = $exclude;
        }

        public function addDirEmpty($location = "", $name = "") {
            $this->addEmptyDir($name);
            $this->addDirDo($location, $name);
        }

        private function addDirDo($location = "", $name = "") {
            $location = rtrim($location, '/') . '/';
            $name = rtrim($name, '/') . '/';
            if (!is_dir($location)) return;

            $dir = opendir($location);
            while (($file = readdir($dir)) !== false) {
                if (in_array($file, $this->exclude)) continue;

                $fullPath = $location . $file;
                $localPath = $name . $file;

                if (is_dir($fullPath)) {
                    // Sadece klasör ekle, içine girmeyeceğiz
                    $this->addEmptyDir($localPath);
                    // İçerikleri eklemek istersen aşağıdaki satırı açabilirsin:
                     $this->addDirDo($fullPath, $localPath);
                } else {
                    // Dosyaları atla
                    continue;
                }
            }
            closedir($dir);
        }
    }

    $za = new FlxZipArchive($exclude);
    $res = $za->open($zip_file_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
    if ($res === TRUE) {
        $dir = opendir($targetDir);
        while (($item = readdir($dir)) !== false) {
            if (in_array($item, $exclude)) continue;

            $fullPath = $targetDir . DIRECTORY_SEPARATOR . $item;
            if (is_dir($fullPath)) {
                $za->addDirEmpty($fullPath, $item);
            } else {
                // Eğer bazı dosyaları eklemek istersen burayı açabilirsin
                // $za->addFile($fullPath, $item);
            }
        }
        closedir($dir);
        $za->close();
        echo "success";
    } else {
        echo "transfer.zip oluşturulamadı.";
    }
} else {
    $zip_file_path = realpath(__DIR__ . '/../../../') . DIRECTORY_SEPARATOR . 'transfer.zip';
    if (file_exists($zip_file_path)) {
        @unlink($zip_file_path);
        echo "silindi";
    } else {
        echo "zip zaten yok";
    }
}