Anleitung zum Erstellen und Verwenden eines YouTube-API-Schlüssels

Zusätzlich zur Verwendung der CH DSGVO YouTube App zum Verbinden eines YouTube-Kontos und zur Nutzung eines Zugriffstokens und Aktualisierungstokens können Sie Ihren eigenen YouTube-API-Schlüssel verwenden. Befolgen Sie diese Schritte, um ein Projekt zu erstellen und einen API-Schlüssel zu erhalten. Für viele Feed-Typen wie Playlist oder Suche ist ein API-Schlüssel erforderlich.

Sie müssen ein Google-Konto erstellen und sich darin anmelden, um einen API-Schlüssel zu erhalten.

Hinweis: Falls Sie bereits einen API-Schlüssel erstellt haben… Sie müssen ein neues Projekt mit dieser URL erstellen: https://console.developers.google.com/projectcreate, dann können Sie mit Schritt #3 fortfahren.

WICHTIG!: Stellen Sie sicher, dass Sie das neu erstellte Projekt aus dem Dropdown-Menü ausgewählt haben:

1) Gehen Sie zu console.developers.google.com/apis. Falls Sie die Google API-Website zum ersten Mal nutzen, werden Sie aufgefordert, den Nutzungsbedingungen zuzustimmen.

2) Erstellen Sie ein Projekt, indem Sie auf die Schaltfläche PROJEKT ERSTELLEN klicken.

3) Nachdem Sie Ihrem Projekt einen Namen gegeben haben, klicken Sie auf die Schaltfläche ERSTELLEN.

4) Wichtig: Sie müssen Ihren API-Schlüssel für YouTube-API-Anfragen aktivieren. Besuchen Sie diese Seite, um dies zu tun.

5) Navigieren Sie zur Seite Anmeldedaten und wählen Sie dann ANMELDEDATEN ERSTELLEN. Der für dieses Plugin benötigte Schlüsseltyp ist ein API-Schlüssel. Wählen Sie diese Option.

6) Kopieren Sie den API-Schlüssel aus dem Pop-up-Fenster. Sie benötigen diesen Schlüssel bei der Konfiguration des WordPress-Plugins.

7) Navigieren Sie zum Admin-Dashboard Ihrer WordPress-Website und zu YouTube Feed > Einstellungen. Geben Sie den API-Schlüssel in das Textfeld ein. Speichern Sie Ihre Änderungen.

Bitte beachten Sie: Es kann bis zu mehrere Minuten dauern, bis Ihr neuer API-Schlüssel funktioniert. Falls Sie eine Fehlermeldung bezüglich Ihres API-Schlüssels sehen, warten Sie bis zu 15 Minuten, speichern Sie Ihre Einstellungen auf der Registerkarte „Konfigurieren“ und versuchen Sie erneut, Ihren Feed anzuzeigen.

CH-Suche

Ein umfangreiches PHP Suche Script um nach den verschiedensten Dingen zu suchen.

<?php
/**
 * Datei-Suchtool
 *
 * @description 	Dieses Skript ermöglicht die Suche nach Dateien basierend auf verschiedenen Kriterien wie Dateiinhalt, Dateiname, Dateityp und Änderungsdatum.
 *
 * @package    		DateiSuchtool
 * @version    		1.2.0
 * @author     		Conny Henn <conny@hennweb.de>
 * @copyright  		Copyright (c) 2023-2025 Conny Henn
 * @license    		MIT License
 * @link       		https://www.HennWeb.de
 * @since      		1.0.0
 *
 * Änderungshistorie:
 * 1.2.0 - 2025-02-28
 *   - Hinzufügen der Möglichkeit, in Unterverzeichnissen zu suchen.
 *   - Verbesserung der Shell-basierten Suche.
 *   - Fehlerbehebungen und Optimierungen.
 *
 * 1.1.0 - 2023-09-30
 *   - Hinzufügen der Sortierfunktion nach Dateigröße, Datum und Name.
 *   - Verbesserung der Benutzeroberfläche.
 *
 * 1.0.0 - 2023-09-15
 *   - Erstveröffentlichung des Datei-Suchtools.
 */
 
// Pufferung der Ausgabe starten
ob_start();

// Funktion zum Hinzufügen mehrerer Dateitypen zum find-Befehl
function addFileTypesToCommand($cmd, $filetypes) {
    // Prüfen, ob Eingabe leer ist
    if (empty($filetypes)) {
        return $cmd;
    }
    
    // Entfernen von Leerzeichen und Aufsplitten bei Kommas
    $filetypes = explode(',', $filetypes);
    
    // Wenn es nur einen Dateityp gibt
    if (count($filetypes) === 1) {
        return $cmd . " -name '*." . trim(escapeshellarg($filetypes[0]), "'\"") . "'";
    }
    
    // Mehrere Dateitypen mit -o (OR) verbinden
    $cmd .= " \\( ";
    $first = true;
    
    foreach ($filetypes as $type) {
        $type = trim($type);
        if (empty($type)) continue;
        
        if (!$first) {
            $cmd .= " -o ";
        }
        
        $cmd .= "-name '*." . trim(escapeshellarg($type), "'\"") . "'";
        $first = false;
    }
    
    $cmd .= " \\)";
    
    return $cmd;
}

// Funktion zur Änderung des PHP-basierten Suchfilters für mehrere Dateitypen
function matchesFileType($extension, $filetypes) {
    if (empty($filetypes)) {
        return true;
    }
    
    $typeArray = array_map('trim', explode(',', $filetypes));
    foreach ($typeArray as $type) {
        if (strcasecmp($extension, $type) === 0) {
            return true;
        }
    }
    
    return false;
}
/**
 * Extrahiert einen bestimmten Wert aus dem DocBlock der aktuellen Datei.
 *
 * @param string $key Der zu extrahierende Wert (z.B. "version", "author", "copyright")
 * @return string Der extrahierte Wert oder "Unbekannt" wenn nicht gefunden
 */
function getInfoHead($key) {
    // Den Quelltext der aktuellen Datei einlesen
    $source = file_get_contents(__FILE__);
    
    // Regulärer Ausdruck, um den DocBlock zu finden und zu extrahieren
    preg_match('/\/\*\*.*?\*\//s', $source, $docblock);
    
    if (!empty($docblock[0])) {
        // Suchen nach der angegebenen Information
        preg_match('/@' . preg_quote($key, '/') . '\s+(.+?)($|\n|\r)/i', $docblock[0], $match);
        
        if (!empty($match[1])) {
            return trim($match[1]);
        }
    }
    
    return 'Unbekannt';
}
?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Datei-Suchtool</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            text-align: center;
            color: #333;
        }
        form {
            margin-bottom: 20px;
        }
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: bold;
        }
        select, input[type="text"], input[type="submit"] {
            width: 100%;
            padding: 10px;
            margin-bottom: 20px;
            border-radius: 4px;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }
        input[type="submit"] {
            background-color: #007BFF;
            color: white;
            border: none;
            cursor: pointer;
        }
        input[type="submit"]:hover {
            background-color: #0056b3;
        }
        .spinner {
            display: none;
            margin: 0 auto;
            border: 8px solid #f3f3f3;
            border-top: 8px solid #007BFF;
            border-radius: 50%;
            width: 60px;
            height: 60px;
            animation: spin 2s linear infinite;
        }
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        pre {
            background-color: #f4f4f4;
            padding: 10px;
            border-radius: 4px;
            border: 1px solid #ddd;
            white-space: pre-wrap;
        }
        .checkbox-container {
            margin-bottom: 20px;
        }
        .checkbox-container label {
            display: inline;
            font-weight: normal;
            margin-left: 5px;
        }
        input[type="checkbox"] {
            vertical-align: middle;
        }
    </style>
    <script>
        // Zeigt den Spinner an, wenn das Formular abgeschickt wird
        function showSpinner() {
            document.getElementById('spinner').style.display = 'block';
        }
        
        // Prüft, ob das Suchbegriff-Feld erforderlich ist, basierend auf der ausgewählten Suchart
        function checkRequiredFields() {
            var suchart = document.getElementById('suche').value;
            var suchbegriff = document.getElementById('sbg');
            var filetype = document.getElementById('filetype');
            
            // Bei Suche nach Dateiänderungsdatum (Option 3) ist der Suchbegriff optional
            if (suchart == '3') {
                suchbegriff.removeAttribute('required');
            } else {
            //    suchbegriff.setAttribute('required', 'required');
            }
            
            // Bei Suche nach Dateityp (Option 4) ist der Dateityp erforderlich
            if (suchart == '4') {
                filetype.setAttribute('required', 'required');
                document.querySelector('label[for="filetype"]').innerHTML = 'Dateityp (erforderlich, durch Komma getrennt)';
            } else {
                filetype.removeAttribute('required');
                document.querySelector('label[for="filetype"]').innerHTML = 'Dateityp (optional, durch Komma getrennt)';
            }
        }
        
        // Funktion beim Laden der Seite ausführen
        document.addEventListener('DOMContentLoaded', function() {
            checkRequiredFields();
        });
    </script>
</head>

<body>

<div class="container">
    <h1>Datei-Suchtool <?php echo getInfoHead("version"); ?></h1>
    <form method="POST" onsubmit="showSpinner()">
        <label for="suche">Suchart</label>
        <select name="suche" id="suche" onchange="checkRequiredFields()">
            <option value="1" <?php if (isset($_POST['suche']) && $_POST['suche'] == 1) echo 'selected'; ?>>Im Dateiinhalt suchen</option>
            <option value="2" <?php if (isset($_POST['suche']) && $_POST['suche'] == 2) echo 'selected'; ?>>Nach Dateinamen suchen</option>
            <option value="3" <?php if (isset($_POST['suche']) && $_POST['suche'] == 3) echo 'selected'; ?>>Nach Dateiänderungsdatum suchen</option>
            <option value="4" <?php if (isset($_POST['suche']) && $_POST['suche'] == 4) echo 'selected'; ?>>Nach Dateityp suchen</option>
        </select>

        <label for="sbg">Suchbegriff oder Dateiname</label>
        <input type="text" name="sbg" id="sbg" placeholder="Suchbegriff oder Dateiname eingeben" value="<?php if (isset($_POST['sbg'])) echo htmlspecialchars($_POST['sbg']); ?>">

        <label for="filetype">Dateityp (optional, durch Komma getrennt)</label>
        <input type="text" name="filetype" id="filetype" placeholder="z.B. txt, php, jpg" value="<?php if (isset($_POST['filetype'])) echo htmlspecialchars($_POST['filetype']); ?>">

        <label for="days">Alter der Dateien in Tagen (optional)</label>
        <input type="text" name="days" id="days" placeholder="z.B. -30 für weniger als 30 Tage alt" value="<?php if (isset($_POST['days'])) echo htmlspecialchars($_POST['days']); ?>">

        <label for="sort">Sortieren nach</label>
        <select name="sort" id="sort">
            <option value="" <?php if (isset($_POST['sort']) && $_POST['sort'] == '') echo 'selected'; ?>>Keine Sortierung</option>
            <option value="size" <?php if (isset($_POST['sort']) && $_POST['sort'] == 'size') echo 'selected'; ?>>Dateigröße</option>
            <option value="date" <?php if (isset($_POST['sort']) && $_POST['sort'] == 'date') echo 'selected'; ?>>Datum</option>
            <option value="name" <?php if (isset($_POST['sort']) && $_POST['sort'] == 'name') echo 'selected'; ?>>Dateiname</option>
        </select>
        
        <div class="checkbox-container">
            <input type="checkbox" name="show_size" id="show_size" <?php if (isset($_POST['show_size'])) echo 'checked'; ?>>
            <label for="show_size">Dateigröße anzeigen</label>
        </div>
        
        <div class="checkbox-container">
            <input type="checkbox" name="show_datetime" id="show_datetime" <?php if (isset($_POST['show_datetime'])) echo 'checked'; ?>>
            <label for="show_datetime">Datum und Uhrzeit anzeigen</label>
        </div>
		
		<div class="checkbox-container">
            <input type="checkbox" name="search_subdirs" id="search_subdirs" <?php if (isset($_POST['search_subdirs'])) echo 'checked'; ?>>
            <label for="search_subdirs">In Unterverzeichnissen suchen</label>
        </div>
		
        <input type="submit" value="Suchen">

        <div>
            Status: <?php if (function_exists('shell_exec') && is_callable('shell_exec')) {
                echo "Schnellsuche aktiv - (shell_exec = on)";
            } else {
                echo "für schnellere Suche bitte an Hoster wenden um (shell_exec = on) zu aktivieren.";
            }
            ?>
        </div>
    </form>

    <div id="spinner" class="spinner"></div>
	<?php
    // Funktion zum Suchen nach Dateien ohne Verwendung von shell_exec()
    function searchFiles($dir, $search, $filetype = '', $days = '', $searchContent = false, $searchSubdirs = true) {
		$results = [];
    
		// Iterator basierend auf der Checkbox auswählen
		if ($searchSubdirs) {
			$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
		} else {
			$files = new DirectoryIterator($dir);
		}

		foreach ($files as $file) {
			// Überspringe Verzeichnisse, wenn nicht in Unterverzeichnissen gesucht wird
			if (!$searchSubdirs && $file->isDir()) continue;
			
			// Überspringe Verzeichnisse, wenn in Unterverzeichnissen gesucht wird
			if ($searchSubdirs && $file->isDir()) continue;
			
			// Dateityp-Filter
			if ($filetype && !matchesFileType($file->getExtension(), $filetype)) continue;

			// Datumsfilter
			if ($days) {
				$fileTime = filemtime($file->getRealPath());
				if ($days < 0 && time() - $fileTime > abs($days) * 86400) continue;
				if ($days > 0 && time() - $fileTime < $days * 86400) continue;
			}

			// Suche nach Dateiänderungsdatum (Suchbegriff optional)
			if (empty($search) && $searchContent === false) {
				$results[] = [
					'path' => $file->getRealPath(),
					'date' => date("Y-m-d H:i:s", filemtime($file->getRealPath())),
					'size' => filesize($file->getRealPath())
				];
				continue;
			}

			// Suche im Dateiinhalt oder Dateinamen
			if ($searchContent) {
				if (stripos(file_get_contents($file->getRealPath()), $search) !== false) {
					$results[] = [
						'path' => $file->getRealPath(),
						'date' => date("Y-m-d H:i:s", filemtime($file->getRealPath())),
						'size' => filesize($file->getRealPath())
					];
				}
			} else {
				if (stripos($file->getFilename(), $search) !== false) {
					$results[] = [
						'path' => $file->getRealPath(),
						'date' => date("Y-m-d H:i:s", filemtime($file->getRealPath())),
						'size' => filesize($file->getRealPath())
					];
				}
			}
		}

		return $results;
	}

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $suche = intval($_POST['suche']);
        $sbg = isset($_POST['sbg']) ? $_POST['sbg'] : '';
        $filetype = !empty($_POST['filetype']) ? $_POST['filetype'] : '';
        $days = !empty($_POST['days']) ? intval($_POST['days']) : '';
        $sort = $_POST['sort'];
        $show_datetime = isset($_POST['show_datetime']);
        $show_size = isset($_POST['show_size']);
		$searchSubdirs = isset($_POST['search_subdirs']);

        // Prüfen, ob shell_exec erlaubt ist
        if (function_exists('shell_exec') && is_callable('shell_exec')) {
            // Shell-basierte Suche
            if ($suche == 1) {
                // Basisbefehl für die Suche
                $cmd = "find .";
				
				// Wenn nicht in Unterverzeichnissen gesucht werden soll
				if (!$searchSubdirs) {
					$cmd .= " -maxdepth 1";
				}
                
                // Dateityp-Filter hinzufügen
                if (!empty($filetype)) {
                    $cmd = addFileTypesToCommand($cmd, $filetype);
                } else {
                    // Unerwünschte Dateitypen ausschließen
                    $cmd .= " ! -path '*.png' ! -path '*.jpg' ! -path '*.webp' ! -path '*.pdf'";
                }
                
                // Grep-Befehl für die Suche im Inhalt
                $cmd .= " -type f -exec grep -l " . escapeshellarg($sbg) . " {} \\;";
                
                // Wenn Datum oder Größe angezeigt werden sollen oder sortiert werden soll,
                // müssen wir die Ergebnisse in eine temporäre Datei speichern und dann verarbeiten
                if ($show_datetime || $show_size || !empty($sort)) {
                    $tempFile = tempnam(sys_get_temp_dir(), 'search_');
                    $cmd .= " > " . escapeshellarg($tempFile);
                    
                    // Ersten Befehl ausführen
                    shell_exec($cmd);
                    
                    // Zweiter Befehl zum Formatieren und Sortieren der Ergebnisse
                    $cmd2 = "cat " . escapeshellarg($tempFile) . " | xargs -I{} find {} ";
                    
                    // Format basierend auf Checkboxen
                    if ($show_datetime && $show_size) {
                        $cmd2 .= "-printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %12d %s\\n\", \$1, \$2, \$3, \$4}'";
                    } elseif ($show_datetime && !$show_size) {
                        $cmd2 .= "-printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %s\\n\", \$1, \$2, \$3}'";
                    } elseif (!$show_datetime && $show_size) {
                        $cmd2 .= "-printf '%s %p\\n' | awk '{printf \"%12d %s\\n\", \$1, \$2}'";
                    } else {
                        $cmd2 .= "-printf '%p\\n'";
                    }
					
					// Sortierung hinzufügen
                    if ($sort == "size") {
                        if ($show_size && $show_datetime) {
                            $cmd2 .= " | sort -k3 -n";
                        } elseif ($show_size && !$show_datetime) {
                            $cmd2 .= " | sort -k1 -n";
                        } else {
                            $cmd2 = "cat " . escapeshellarg($tempFile) . " | xargs -I{} find {} -printf '%s %p\\n' | sort -k1 -n";
                            if (!$show_size) {
                                $cmd2 .= " | awk '{print \$2}'";
                            } else {
                                $cmd2 .= " | awk '{printf \"%12d %s\\n\", \$1, \$2}'";
                            }
                        }
                    } elseif ($sort == "date") {
                        if ($show_datetime) {
                            $cmd2 .= " | sort -k1,2";
                        } else {
                            $cmd2 = "cat " . escapeshellarg($tempFile) . " | xargs -I{} find {} -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sort -k1,2";
                            if ($show_size) {
                                $cmd2 = "cat " . escapeshellarg($tempFile) . " | xargs -I{} find {} -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//'";
                                $cmd2 .= " | awk '{printf \"%12d %s\\n\", \$3, \$4}'";
                            } else {
                                $cmd2 .= " | sed 's/\\.[0-9]\\+//' | awk '{print \$3}'";
                            }
                        }
                    } elseif ($sort == "name") {
                        if ($show_datetime && $show_size) {
                            $cmd2 .= " | sort -k4";
                        } elseif ($show_datetime && !$show_size) {
                            $cmd2 .= " | sort -k3";
                        } elseif (!$show_datetime && $show_size) {
                            $cmd2 .= " | sort -k2";
                        } else {
                            $cmd2 .= " | sort";
                        }
                    }
                    
                    echo "<h2>Befehl für Inhaltssuche:</h2>";
                    echo "<pre>$cmd\n$cmd2</pre>";
                    
                    // Befehl ausführen und Ergebnis ausgeben
                    $output = shell_exec($cmd2);
                    
                    // Temporäre Datei löschen
                    unlink($tempFile);
                    
                    if (empty($output)) {
                        echo "<p>Keine Dateien gefunden.</p>";
                    } else {
                        echo "<pre>$output</pre>";
                    }
                } else {
                    // Standard-Ausgabe ohne zusätzliche Formatierung
                    echo "<h2>Befehl für Inhaltssuche:</h2>";
                    echo "<pre>$cmd</pre>";
                    
                    $output = shell_exec($cmd);
                    if (empty($output)) {
                        echo "<p>Keine Dateien gefunden.</p>";
                    } else {
                        echo "<pre>$output</pre>";
                    }
                }
            } elseif ($suche == 2) {
                $cmd = "find . -iname " . escapeshellarg("*" . $sbg . "*");
                
                // Dateityp-Filter hinzufügen
                if (!empty($filetype)) {
                    $cmd = addFileTypesToCommand($cmd, $filetype);
                }
                
                // Format basierend auf Checkboxen
                if ($show_datetime && $show_size) {
                    $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %12d %s\\n\", \$1, \$2, \$3, \$4}'";
                } elseif ($show_datetime && !$show_size) {
                    $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %s\\n\", \$1, \$2, \$3}'";
                } elseif (!$show_datetime && $show_size) {
                    $cmd .= " -printf '%s %p\\n' | awk '{printf \"%12d %s\\n\", \$1, \$2}'";
                } else {
                    $cmd .= " -printf '%p\\n'";
                }
				
				// Wenn nicht in Unterverzeichnissen gesucht werden soll
				if (!$searchSubdirs) {
					$cmd .= " -maxdepth 1";
				}
				
				// Sortierung
                if ($sort == "size") {
                    if ($show_size && $show_datetime) {
                        $cmd .= " | sort -k3 -n";
                    } elseif ($show_size && !$show_datetime) {
                        $cmd .= " | sort -k1 -n";
                    } else {
                        // Wenn Dateigröße nicht angezeigt wird, trotzdem danach sortieren
                        $cmd = "find . -iname " . escapeshellarg("*" . $sbg . "*");
                        if (!empty($filetype)) {
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                        }
                        $cmd .= " -printf '%s %p\\n' | sort -k1 -n | awk '{print \$2}'";
                    }
                } elseif ($sort == "date") {
                    if ($show_datetime) {
                        $cmd .= " | sort -k1,2";
                    } else {
                        // Wenn Datum nicht angezeigt wird, trotzdem danach sortieren
                        $cmd = "find . -iname " . escapeshellarg("*" . $sbg . "*");
                        if (!empty($filetype)) {
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                        }
                        
                        if ($show_size) {
                            $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{printf \"%12d %s\\n\", \$3, \$4}'";
                        } else {
                            $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{print \$3}'";
                        }
                    }
                } elseif ($sort == "name") {
                    if ($show_datetime && $show_size) {
                        $cmd .= " | sort -k4";
                    } elseif ($show_datetime && !$show_size) {
                        $cmd .= " | sort -k3";
                    } elseif (!$show_datetime && $show_size) {
                        $cmd .= " | sort -k2";
                    } else {
                        $cmd .= " | sort";
                    }
                }
                
                echo "<h2>Befehl: $cmd</h2>";
                flush();
                $output = shell_exec($cmd);
                if (empty($output)) {
                    echo "<p>Keine Dateien gefunden.</p>";
                } else {
                    echo "<pre>$output</pre>";
                }
            } elseif ($suche == 3) {
                $cmd = "find .";
                
                // Suchbegriff nur hinzufügen, wenn angegeben
                if (!empty($sbg)) {
                    $cmd .= " -iname " . escapeshellarg("*" . $sbg . "*");
                }
                
                // Dateityp-Filter hinzufügen
                if (!empty($filetype)) {
                    $cmd = addFileTypesToCommand($cmd, $filetype);
                }
                
                if (!empty($days)) {
                    $cmd .= " -mtime ".escapeshellarg($days);
                }
				
                // Wenn nicht in Unterverzeichnissen gesucht werden soll
				if (!$searchSubdirs) {
					$cmd .= " -maxdepth 1";
				}
				
                // Format basierend auf Checkboxen
                if ($show_datetime && $show_size) {
                    $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %12d %s\\n\", \$1, \$2, \$3, \$4}'";
                } elseif ($show_datetime && !$show_size) {
                    $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %s\\n\", \$1, \$2, \$3}'";
                } elseif (!$show_datetime && $show_size) {
                    $cmd .= " -printf '%s %p\\n' | awk '{printf \"%12d %s\\n\", \$1, \$2}'";
                } else {
                    $cmd .= " -printf '%p\\n'";
                }
				// Sortierung hinzufügen
                if ($sort == "size") {
                    if ($show_size && $show_datetime) {
                        $cmd .= " | sort -k3 -n";  // Sortierung nach Dateigröße (3. Spalte, numerisch)
                    } elseif ($show_size && !$show_datetime) {
                        $cmd .= " | sort -k1 -n";  // Sortierung nach Dateigröße (1. Spalte, numerisch)
                    } else {
                        // Wenn Dateigröße nicht angezeigt wird, müssen wir sie trotzdem für die Sortierung bekommen
                        $cmd = "find .";
                        
                        // Suchbegriff nur hinzufügen, wenn angegeben
                        if (!empty($sbg)) {
                            $cmd .= " -iname " . escapeshellarg("*" . $sbg . "*");
                        }
                        
                        if (!empty($filetype)) {
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                        }
                        if (!empty($days)) {
                            $cmd .= " -mtime ".escapeshellarg($days);
                        }
                        $cmd .= " -printf '%s %p\\n' | sort -k1 -n | awk '{print \$2}'";
                    }
                } elseif ($sort == "date") {
                    if ($show_datetime) {
                        $cmd .= " | sort -k1,2";   // Sortierung nach Datum und Zeit (Spalten 1-2)
                    } else {
                        // Wenn Datum nicht angezeigt wird, müssen wir es trotzdem für die Sortierung bekommen
                        $cmd = "find .";
                        
                        // Suchbegriff nur hinzufügen, wenn angegeben
                        if (!empty($sbg)) {
                            $cmd .= " -iname " . escapeshellarg("*" . $sbg . "*");
                        }
                        
                        if (!empty($filetype)) {
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                        }
                        if (!empty($days)) {
                            $cmd .= " -mtime ".escapeshellarg($days);
                        }
                        
                        if ($show_size) {
                            $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{printf \"%12d %s\\n\", \$3, \$4}'";
                        } else {
                            $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{print \$3}'";
                        }
                    }
                } elseif ($sort == "name") {
                    if ($show_datetime && $show_size) {
                        $cmd .= " | sort -k4";     // Sortierung nach Dateiname (4. Spalte)
                    } elseif ($show_datetime && !$show_size) {
                        $cmd .= " | sort -k3";     // Sortierung nach Dateiname (3. Spalte)
                    } elseif (!$show_datetime && $show_size) {
                        $cmd .= " | sort -k2";     // Sortierung nach Dateiname (2. Spalte)
                    } else {
                        $cmd .= " | sort";         // Sortierung nach Dateiname (1. Spalte)
                    }
                }
                
                echo "<h2>Befehl: $cmd</h2>";
                flush();
                $output = shell_exec($cmd);
                if (empty($output)) {
                    echo "<p>Keine Dateien gefunden.</p>";
                } else {
                    echo "<pre>$output</pre>";
                }
				} elseif ($suche == 4) {
                // Bei Suche nach Dateityp muss der Dateityp angegeben sein
                if (empty($filetype)) {
                    echo "<p>Fehler: Bitte geben Sie mindestens einen Dateityp an.</p>";
                } else {
                    $cmd = "find .";
                    
                    // Dateityp-Filter hinzufügen
                    $cmd = addFileTypesToCommand($cmd, $filetype);
                    
                    // Dateiänderungsdatum hinzufügen, wenn angegeben
                    if ($days) {
                        $cmd .= " -mtime $days";
                    }
                    
                    // Format basierend auf Checkboxen
                    if ($show_datetime && $show_size) {
                        $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %12d %s\\n\", \$1, \$2, \$3, \$4}'";
                    } elseif ($show_datetime && !$show_size) {
                        $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %s\\n\", \$1, \$2, \$3}'";
                    } elseif ($show_datetime && $show_size) {
                        $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %12d %s\\n\", \$1, \$2, \$3, \$4}'";
                    } elseif ($show_datetime && !$show_size) {
                        $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sed 's/\\.[0-9]\\+//' | awk '{printf \"%s %s %s\\n\", \$1, \$2, \$3}'";
                    } elseif (!$show_datetime && $show_size) {
                        $cmd .= " -printf '%s %p\\n' | awk '{printf \"%12d %s\\n\", \$1, \$2}'";
                    } else {
                        $cmd .= " -printf '%p\\n'";
                    }
                    
					// Wenn nicht in Unterverzeichnissen gesucht werden soll
					if (!$searchSubdirs) {
						$cmd .= " -maxdepth 1";
					}
					
                    // Sortierung
                    if ($sort == "size") {
                        if ($show_size && $show_datetime) {
                            $cmd .= " | sort -k3 -n";
                        } elseif ($show_size && !$show_datetime) {
                            $cmd .= " | sort -k1 -n";
                        } else {
                            // Wenn Dateigröße nicht angezeigt wird, trotzdem danach sortieren
                            $cmd = "find .";
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                            if ($days) {
                                $cmd .= " -mtime $days";
                            }
                            $cmd .= " -printf '%s %p\\n' | sort -k1 -n | awk '{print \$2}'";
                        }
                    } elseif ($sort == "date") {
                        if ($show_datetime) {
                            $cmd .= " | sort -k1,2";
                        } else {
                            // Wenn Datum nicht angezeigt wird, trotzdem danach sortieren
                            $cmd = "find .";
                            $cmd = addFileTypesToCommand($cmd, $filetype);
                            if ($days) {
                                $cmd .= " -mtime $days";
                            }
                            
                            if ($show_size) {
                                $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %s %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{printf \"%12d %s\\n\", \$3, \$4}'";
                            } else {
                                $cmd .= " -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\\n' | sort -k1,2 | sed 's/\\.[0-9]\\+//' | awk '{print \$3}'";
                            }
                        }
                    } elseif ($sort == "name") {
                        if ($show_datetime && $show_size) {
                            $cmd .= " | sort -k4";
                        } elseif ($show_datetime && !$show_size) {
                            $cmd .= " | sort -k3";
                        } elseif (!$show_datetime && $show_size) {
                            $cmd .= " | sort -k2";
                        } else {
                            $cmd .= " | sort";
                        }
                    }
                    
                    echo "<h2>Befehl: $cmd</h2>";
                    flush();
                    $output = shell_exec($cmd);
                    if (empty($output)) {
                        echo "<p>Keine Dateien gefunden.</p>";
                    } else {
                        echo "<pre>$output</pre>";
                    }
                }
            }
			} else {
            // PHP-basierte Suche
            echo "<h2>Ergebnisse der Suche (PHP-basiert):</h2>";

            if ($suche == 1) {
                $results = searchFiles('.', $sbg, $filetype, $days, true);
            } elseif ($suche == 2) {
                $results = searchFiles('.', $sbg, $filetype, $days, false);
            } elseif ($suche == 3) {
                $results = searchFiles('.', $sbg, $filetype, $days, false);
            } elseif ($suche == 4) {
                if (empty($filetype)) {
                    echo "<p>Fehler: Bitte geben Sie mindestens einen Dateityp an.</p>";
                    $results = [];
                } else {
                    // Bei Option 4 wird der Suchbegriff ignoriert und nur nach Dateityp gesucht
                    $results = searchFiles('.', '', $filetype, $days, false);
                }
            }

            // Sortieren der Ergebnisse
            if ($sort == "size") {
                usort($results, function($a, $b) {
                    return $a['size'] - $b['size'];
                });
            } elseif ($sort == "date") {
                usort($results, function($a, $b) {
                    return strtotime($a['date']) - strtotime($b['date']);
                });
            } elseif ($sort == "name") {
                usort($results, function($a, $b) {
                    return strcmp($a['path'], $b['path']);
                });
            }

            if (!empty($results)) {
                echo "<pre>";
                foreach ($results as $result) {
                    $output = "";
                    if ($show_datetime) {
                        $output .= $result['date'] . " ";
                    }
                    if ($show_size) {
                        $output .= sprintf("%12d ", $result['size']);
                    }
                    $output .= $result['path'];
                    echo $output . "\n";
                }
                echo "</pre>";
            } else {
                echo "<p>Keine Dateien gefunden.</p>";
            }
        }
    }

    // Spinner ausblenden, nachdem die gesamte Ausgabe erfolgt ist
    echo "<script>document.getElementById('spinner').style.display = 'none';</script>";

    // Pufferung der Ausgabe beenden und senden
    ob_end_flush();
    ?>
</div>

</body>
</html>

Hallo Welt!

Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!