From 1c9c88e030012ce6c2818d602313a0c1949316bc Mon Sep 17 00:00:00 2001 From: Marijn Jansen Date: Tue, 31 Jan 2017 13:36:32 +0100 Subject: [PATCH] Fixed and spilt Avatar upload and Alerts --- website/queries/alerts.php | 44 +++++++++++ website/queries/picture.php | 138 +++++++++++++++++++++++++++++++++++ website/queries/settings.php | 116 +---------------------------- 3 files changed, 184 insertions(+), 114 deletions(-) create mode 100644 website/queries/alerts.php create mode 100644 website/queries/picture.php diff --git a/website/queries/alerts.php b/website/queries/alerts.php new file mode 100644 index 0000000..f311098 --- /dev/null +++ b/website/queries/alerts.php @@ -0,0 +1,44 @@ + 4000000) { + throw new AngryAlert("Bestand is te groot, maximaal 4MB toegestaan."); + } + $relativePath = $avatarDir . $_SESSION["userID"] . "_avatar.gif"; + $group ? removeOldGroupAvatar($_POST["groupID"]) : removeOldUserAvatar(); + move_uploaded_file($tmpImg, $publicDir . $relativePath); + } else { + $relativePath = $avatarDir . $_SESSION["userID"] . "_avatar.png"; + $scaledImg = scaleAvatar($tmpImg); + $group ? removeOldGroupAvatar($_POST["groupID"]) : removeOldUserAvatar(); + imagepng($scaledImg, $publicDir . $relativePath); + } + + $group ? setGroupAvatarToDatabase("../" . $relativePath, $_POST["groupID"]) : setUserAvatarToDatabase("../" . $relativePath); + throw new HappyAlert("Profielfoto veranderd."); +} + +/** + * Removes the old avatar from the uploads folder, for a user. + */ +function removeOldUserAvatar() { + $stmt = prepareQuery(" + SELECT + `profilepicture` + FROM + `user` + WHERE + `userID` = :userID + "); + $stmt->bindParam(":userID", $_SESSION["userID"]); + $stmt->execute(); + $old_avatar = $stmt->fetch()["profilepicture"]; + if ($old_avatar != NULL) { + unlink("/var/www/html/public/uploads/" . $old_avatar); + } +} +/** + * Removes the old avatar from the uploads folder, for a group. + * @param int $groupID + */ +function removeOldGroupAvatar(int $groupID) { + $stmt = prepareQuery(" + SELECT + `picture` + FROM + `group_page` + WHERE + groupID = :groupID + "); + $stmt->bindParam(":groupID", $groupID); + $stmt->execute(); + $old_avatar = $stmt->fetch()["picture"]; + if ($old_avatar != NULL) { + unlink("/var/www/html/public/uploads/" . $old_avatar); + } +} + +/** + * Inserts the the path to the avatar into the database, for Users. + * @param string $url path to the avatar + */ +function setUserAvatarToDatabase(string $url) { + $stmt = prepareQuery(" + UPDATE + `user` + SET + `profilepicture` = :avatar + WHERE + `userID` = :userID + "); + + $stmt->bindParam(":avatar", $url); + $stmt->bindParam(":userID", $_SESSION["userID"]); + $stmt->execute(); +} + +/** + * Inserts the the path to the avatar into the database, for Groups. + * @param string $url path to the avatar + * @param int $groupID + */ +function setGroupAvatarToDatabase(string $url, int $groupID) { + $stmt = prepareQuery(" + UPDATE + `group_page` + SET + `picture` = :avatar + WHERE + `groupID` = :groupID + "); + $stmt->bindParam(":avatar", $url); + $stmt->bindParam(":groupID", $groupID); + $stmt->execute(); +} + +/** + * Checks the resoluton of a picture. + * @param string $img + * @throws AngryAlert + */ +function checkAvatarSize(string $img) { + $minResolution = 200; + $imgSize = getimagesize($img); + if ($imgSize[0] < $minResolution or $imgSize[1] < $minResolution) { + throw new AngryAlert("Afbeelding te klein, minimaal 200x200 pixels."); + } +} + +/** + * Scales a picture, standard width is 600px. + * @param string $imgLink Path to a image file + * @param int $newWidth Custom image width. + * @return bool|resource Returns the image as an Resource. + * @throws AngryAlert + */ +function scaleAvatar(string $imgLink, int $newWidth = 600) { + $img = imagecreatefromstring(file_get_contents($imgLink)); + if ($img) { + return imagescale($img, $newWidth); + } else { + throw new AngryAlert("Afbeelding wordt niet ondersteund."); + } +} \ No newline at end of file diff --git a/website/queries/settings.php b/website/queries/settings.php index bdc9d38..03f794f 100644 --- a/website/queries/settings.php +++ b/website/queries/settings.php @@ -1,49 +1,7 @@ 4000000) { - throw new AngryAlert("Bestand is te groot, maximaal 4MB toegestaan."); - } - $relativePath = "uploads/profilepictures/" . $_SESSION["userID"] . "_avatar.gif"; - move_uploaded_file($tmpImg, $profilePictureDir . $relativePath); - } else { - $relativePath = "uploads/profilepictures/" . $_SESSION["userID"] . "_avatar.png"; - $scaledImg = scaleAvatar($tmpImg); - imagepng($scaledImg, $profilePictureDir . $relativePath); - } - removeOldAvatar(); - setAvatarToDatabase("../" . $relativePath); - throw new HappyAlert("Profielfoto veranderd."); -} - -function removeOldAvatar() { - $stmt = prepareQuery(" - SELECT - `profilepicture` - FROM - `user` - WHERE - `userID` = :userID - "); - $stmt->bindParam(":userID", $_SESSION["userID"]); - $stmt->execute(); - $old_avatar = $stmt->fetch()["profilepicture"]; - if ($old_avatar != NULL) { - unlink("/var/www/html/public/uploads/" . $old_avatar); - } -} - -function setAvatarToDatabase(string $url) { - $stmt = prepareQuery(" - UPDATE - `user` - SET - `profilepicture` = :avatar - WHERE - `userID` = :userID - "); - - $stmt->bindParam(":avatar", $url); - $stmt->bindParam(":userID", $_SESSION["userID"]); - $stmt->execute(); -} - -function checkAvatarSize(string $img) { - $minResolution = 200; - $imgSize = getimagesize($img); - if ($imgSize[0] < $minResolution or $imgSize[1] < $minResolution) { - throw new AngryAlert("Afbeelding te klein, minimaal 200x200 pixels."); - } -} - -function scaleAvatar(string $imgLink, int $newWidth = 600) { - $img = imagecreatefromstring(file_get_contents($imgLink)); - if ($img) { - return imagescale($img, $newWidth); - } else { - throw new AngryAlert("Afbeelding wordt niet ondersteund."); - } } \ No newline at end of file