<?php
class Avatar {
function saveAvatar($id,$avatarid,$avatarurl,$upload,$status = ''){
//-- $id = Die ID des zu bearbeitenden Users
//-- $avatarid = Ob Avatar angezeigt werden soll oder nicht
//-- $avatarurl = Die URL Wenn Upload von einer Webseite
//-- $upload = Wenn Datei von Festplatte hocgleaden wird übergeben werden muss $_FILES['upload'] an stelle von uplaod musst du den Namen deines "file" Elements im Formular nehmen
//-- $status = dort werden die Fehlermeldungen drin gespeichert
//-- Instanzierung der Klasse mysql_log Verbindung zur datenbank und Sicherung des Inputs vor SQL-Injections und Protokollierung der MySQL Abfragen
$mysql = new mysql_log();
//-- Wenn ein Avatar angezeigt werden soll mache...
if($avatarid){
//-- Wenn eine URL und eine Datei von der Festplatte hochgeladen werden soll... FEHLER in $status
if($avatarurl != 0 && $upload != 0){
$status .= 'Du kannst entweder eine URL angeben oder ein Bild von deinem Computer hochladen.';
}
//-- Wenn eine URL angegeben wurde...
elseif($avatarurl){
//-- Methode zum hochladen von einer URL aufrufen, wenn erfolgreich...
if($this->uploadFromURL($avatarurl)){
//-- Dateinamen Zerlegen und in DB speichern
$url = explode("/", $avatarurl);
$dateiendung = explode('.',$url[count($url)-1]);
$dateiendung = $dateiendung[1];
//-- Dateiname bekommt den Wert der User ID --> avatarimg = '".$_SESSION['userid'].'.'.$dateiendung."'
//-- Wenn das Update des Users erfolgreich war Ausgabe das Upload erfolgreich
if($mysql->query("UPDATE users SET avatar = '1', avatarimg = '".$_SESSION['userid'].'.'.$dateiendung."' WHERE id = '$id' LIMIT 1")){
$replacement['status'] = '<div class="error">Benutzerbild geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
//-- Ansonsten Fehlerausgabe
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
//-- Wenn der Upload nicht erfolgreich war Fehlerausgabe
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
//-- Wenn eine Datei von der HDD gewählt wurde
elseif($upload){
//-- Methode zum Upload von der HDD aufrufen, wenn erfolgreich...
if($this->uploadFromHDD($upload,'img/user/')){
//-- Dateinamen Zerlegen und in DB speichern
$dateiendung = explode('.',$upload['name']);
$dateiendung = $dateiendung[1];
//-- Dateiname bekommt den Wert der User ID --> avatarimg = '".$_SESSION['userid'].'.'.$dateiendung."'
//-- Wenn das Update des Users erfolgreich war Ausgabe das Upload erfolgreich
if($mysql->query("UPDATE users SET avatar = '1', avatarimg = '".$_SESSION['userid'].'.'.$dateiendung."' WHERE id = '$id' LIMIT 1")){
$replacement['status'] = '<div class="error">Benutzerbild geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
//-- Ansonsten Fehlerausgabe
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
//-- Wenn Upload nicht erfolgreich, Fehlerausgabe
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
//-- *grübel* ich glaube dieser Abschnitt ist Sinnlos
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
//-- Wenn User kein Avatar anzeigen will
else {
$result = $mysql->query("SELECT avatarimg FROM users WHERE id = '".$_SESSION['userid']."' LIMIT 1");
$data = mysql_fetch_array($result);
//-- Bild löschen
@unlink('img/user/'.$data['avatarimg']);
//-- DB Updaten das kein Bild des users vorhanden ist
if($mysql->query("UPDATE users SET avatar = '0', avatarimg = '' WHERE id = '$id' LIMIT 1")){
$replacement['status'] = '<div class="error">Benutzerbild geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
//-- Wenn der Update der DB nicht erfolgreich war, Fehlerausgabe
else {
$replacement['status'] = '<div class="error">Benutzerbild nicht geändert!</div>';
$content_template = new template('intern/manageProfile.tpl');
$content_template->compile_tags($replacement);
$content_template->output();
}
}
}
function uploadFromURL($file){
//-- $file = URL zur Datei
//-- Dateiendung der Datei bekommen
$url = explode("/", $file);
$dateiendung = explode('.',$url[count($url)-1]);
$dateiendung = $dateiendung[1];
//-- Dateityp aus der datei lesen, für den Fall das ein User die Dateiendung geändert hat
$filetype = @getimagesize($file);
//-- Wenn der Dateityp nicht gif, png, oder jpg ist schreibe das in $status --> bewirkt keine Fehlerausgabe
if(($filetype[2] != 1) && ($filetype[2] != 2) && ($filetype[2] != 3)){
$status[] = "Nur gif, png und jpeg Dateien dürfen hochgeladen werden.";
}
//-- Wenn Bild größer als 90 x 90 Pixel schreibe das in $status --> bewirkt keine Fehlerausgabe
if($filetype[0] > 90 || $filetype[1] > 90){
$status[] = "Die Bildmaße stimmen nicht. Das Bild darf maximal eine größe von 90 x 90 Pixeln haben.";
}
//-- Wenn $status leer ist mache...
if(empty($status)){
//-- liest die Datei in einen String
$src = file_get_contents($file);
//-- öffnet eine Datei
$file_s = fopen("img/user/".$_SESSION['userid'].'.'.$dateiendung,'w');
//-- Wenn Datei geschrieben werden konnte
if(fwrite($file_s,$src)){
return true;
}
//-- Wenn Datei nicht geschrieben werden konnte
else {
return false;
}
//-- Datei schließen
fclose($file_s);
} else {
return false;
}
}
function uploadFromHDD($file,$uploaddir){
//-- $file = s.o
//-- $uploaddir = Ziel des Bildes, wo es hinkopiert werden soll
//-- Wenn der Dateityp png, gif, oder jpg ist, mache
if($file['type'] == 'image/pjpeg' || $file['type'] == 'image/jpeg' || $file['type'] == 'image/gif' || $file['type'] == 'image/png'){
//-- Dateiendung der Datei auslesen
$dateiendung = explode('.',$file['name']);
$dateiendung = $dateiendung[1];
//-- kopiert eine Datei die durch einen Upload erstellt wurde von der Quelle zum Ziel
move_uploaded_file($file['tmp_name'], $uploaddir . $_SESSION['userid'] . '.' . $dateiendung);
$filetype = getimagesize($uploaddir. $_SESSION['userid'] . '.' . $dateiendung);
//-- Wenn der Dateityp nicht gif, png, oder jpg ist schreibe das in $status --> bewirkt keine Fehlerausgabe
if(($filetype[2] != 1) && ($filetype[2] != 2) && ($filetype[2] != 3)){
$status[] = "Nur gif, png und jpeg Dateien dürfen hochgeladen werden.";
}
//-- Wenn Bild größer als 90 x 90 Pixel schreibe das in $status --> bewirkt keine Fehlerausgabe
if($filetype[0] > 90 || $filetype[1] > 90){
$status[] = "Die Bildmaße stimmen nicht. Das Bild darf maximal eine größe von 90 x 90 Pixeln haben.";
}
//-- Wenn $status nicht leer ist, lösche Datei wieder
if(!empty($status)){
unlink($uploaddir . $file['name']);
return false;
} else {
return true;
}
}
}
}
?>