diff --git a/README.md b/README.md index bc8334b..4cb6cb4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ![GitHub Release](https://img.shields.io/github/v/release/cheinisch/journal?label=Latest%20Version) # Jrnl -Jrnl is a simple php based personal diary or log book. +Jrnl is a simple php based personal diary or log book. This Webapplication uses UiKit 3.15.14 for the GUI. ### Key Features diff --git a/system/function/dbquery.php b/system/function/dbquery.php index b09c52c..24ad0ed 100644 --- a/system/function/dbquery.php +++ b/system/function/dbquery.php @@ -341,10 +341,10 @@ function updateUserSettings($userId, $name, $email, $password, $oldPassword) { // Wenn das Passwort aktualisiert werden soll, neu hashen if (!empty($password)) { $newHashedPassword = password_hash($password, PASSWORD_DEFAULT); - $stmt = $db->prepare("UPDATE users SET name = :name, email = :email, password = :password WHERE id = :userId"); + $stmt = $db->prepare("UPDATE users SET username = :name, email = :email, password = :password WHERE id = :userId"); $stmt->bindParam(':password', $newHashedPassword, PDO::PARAM_STR); } else { - $stmt = $db->prepare("UPDATE users SET name = :name, email = :email WHERE id = :userId"); + $stmt = $db->prepare("UPDATE users SET username = :name, email = :email WHERE id = :userId"); } $stmt->bindParam(':name', $name, PDO::PARAM_STR); @@ -352,6 +352,7 @@ function updateUserSettings($userId, $name, $email, $password, $oldPassword) { $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); if ($stmt->execute()) { + return "Einstellungen erfolgreich aktualisiert."; } else { return "Fehler beim Aktualisieren der Einstellungen."; @@ -361,7 +362,7 @@ function updateUserSettings($userId, $name, $email, $password, $oldPassword) { function getUserData($userId) { $db = getDatabaseConnection(); - $stmt = $db->prepare("SELECT name, email FROM users WHERE id = :userId"); + $stmt = $db->prepare("SELECT username, email FROM users WHERE id = :userId"); $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC); diff --git a/system/function/function.php b/system/function/function.php index 06f8892..fb968fa 100644 --- a/system/function/function.php +++ b/system/function/function.php @@ -206,51 +206,52 @@ function getVersionFromFile($filePath) { } } -function getLatestGitHubRelease($owner, $repo, $prerelease = false) { - $url = "https://api.github.com/repos/$owner/$repo/releases"; - $token = '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'; // Ersetzen Sie dies durch Ihr echtes Token - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - "Authorization: token $token" - ]); - $response = curl_exec($ch); - curl_close($ch); - - if ($response === false) { - throw new Exception("Fehler beim Abrufen der GitHub-Version."); - } - - $data = json_decode($response, true); +function getLatestGitHubRelease($repoOwner, $repoName, $prerelease = false) { + // GitHub API-URL basierend auf dem gewünschten Release-Typ (stable oder prerelease) + $url = $prerelease + ? "https://api.github.com/repos/$repoOwner/$repoName/releases" // Alle Releases abrufen + : "https://api.github.com/repos/$repoOwner/$repoName/releases/latest"; // Nur das neueste stable Release abrufen + + // cURL Initialisierung + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); // GitHub benötigt einen User-Agent Header + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Weiterleitungen folgen + + // API Antwort + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + // Fehlerbehandlung, wenn die Antwort leer ist oder der HTTP-Status nicht 200 ist + if ($response === false || $httpCode !== 200) { + throw new Exception("Fehler: Die GitHub API konnte nicht erreicht werden (HTTP-Code: $httpCode)"); + } - if (json_last_error() !== JSON_ERROR_NONE) { - throw new Exception("Fehler beim Verarbeiten der GitHub-Antwort: " . json_last_error_msg()); - } + // JSON-Antwort decodieren + $data = json_decode($response, true); - if (!is_array($data)) { - throw new Exception("Unerwartete Antwort von GitHub."); - } + // Wenn es sich um ein Pre-Release handelt, suche das erste Prerelease + if ($prerelease && is_array($data)) { + foreach ($data as $release) { + if (isset($release['prerelease']) && $release['prerelease'] === true) { + return $release['tag_name']; // Gibt die Version des Prereleases zurück + } + } + } - foreach ($data as $release) { - if ($prerelease && $release['prerelease']) { - return $release['tag_name']; - } elseif (!$prerelease && !$release['prerelease']) { - return $release['tag_name']; - } - } + // Für stabile Releases (oder wenn kein Pre-Release gefunden wurde) + if (isset($data['tag_name'])) { + return $data['tag_name']; // Gibt die Version des neuesten stabilen Releases zurück + } - throw new Exception("Die Versionsnummer konnte nicht abgerufen werden."); + throw new Exception("Fehler: Die Versionsnummer konnte nicht abgerufen werden."); } function get_versionfromgit() { - $owner = 'cheinisch'; - $repo = 'journal'; - try { $repoOwner = 'cheinisch'; $repoName = 'journal'; // Ersetze 'repository' durch den Namen des Repositories diff --git a/system/function/update.php b/system/function/update.php index 0d0d0fc..77bed11 100644 --- a/system/function/update.php +++ b/system/function/update.php @@ -47,14 +47,14 @@ function updateFromGitHub($repoOwner, $repoName, $prerelease = false) { // 2. Neueste Release-URL von GitHub abrufen - $url = "https://api.github.com/repos/$repoOwner/$repoName/releases"; - $token = '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'; // Ersetzen Sie dies durch Ihren GitHub-Personal-Access-Token + $url = $prerelease + ? "https://api.github.com/repos/$repoOwner/$repoName/releases" // Alle Releases abrufen + : "https://api.github.com/repos/$repoOwner/$repoName/releases/latest"; // Nur das neueste stable Release abrufen $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); - curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: token $token")); $response = curl_exec($ch); curl_close($ch); @@ -64,15 +64,18 @@ function updateFromGitHub($repoOwner, $repoName, $prerelease = false) { $data = json_decode($response, true); + // Überprüfen, ob es sich um ein Pre-Release handelt if ($prerelease) { + if (!is_array($data)) { + throw new Exception("Erwartete Daten als Array, aber Antwort ist kein Array."); + } + foreach ($data as $release) { - if ($release['prerelease']) { + if (isset($release['prerelease']) && $release['prerelease']) { $data = $release; break; } } - } else { - $data = $data[0]; } if (!isset($data['zipball_url'])) { diff --git a/system/gui/settings-user.php b/system/gui/settings-user.php index f468735..8701e05 100644 --- a/system/gui/settings-user.php +++ b/system/gui/settings-user.php @@ -14,6 +14,8 @@ $oldPassword = $_POST['old_password']; $message = updateUserSettings($userId['id'], $name, $email, $password, $oldPassword); + destroy_session(); + create_session($name); } elseif (isset($_GET['export']) && $_GET['export'] == 'xml') { exportPostsAsXML($userId['id']); } @@ -23,20 +25,33 @@ $user = getUserData($userIdDB['id']); ?> -

Benutzereinstellungen

+ + + + +
+
+ +
+

Benutzereinstellungen

- -
-
+ +
- +
-
+
- +
@@ -57,6 +72,8 @@

Beiträge exportieren

Beiträge als XML exportieren - +
+
+
diff --git a/system/gui/settings.php b/system/gui/settings.php index 93ccacd..fd1bf66 100644 --- a/system/gui/settings.php +++ b/system/gui/settings.php @@ -135,7 +135,7 @@ Version from Git:
- Update verfügbar"; }