Werbung:

Tommy bat mich darum ein Tutorial für ein Avatarsystem zu schreiben. Schauen wir mal, ob das was wird.^^
Zuerst als Vorbereitung in der Datenbank Spalten zufügen:
etchat_user bekommt hinten die Spalte Avatar VARCHAR(20) Standardwert wie definiert: noavatar.jpg
Benutzer System (üblicherweise ID 1) setzt man direkt die system.jpg.
etchat_useronline bekommt hinten die Spalte online_avatar VARCHAR(20) Standardwert wie definiert: noavatar.jpg
Die Dateinamen entsprechend Deiner ersetzten. noavatar.jpg, dann auch im Code berücksichtigen.
In der chat.js ändert man wie folgt:
ab ca. Zeile 132 alles zwischen Start und Ende Avatarupload
----
Code 
}else if( self.userPrivilegienGlobal=="gast" && self.allow_nick_registration)
var pwchange_link_content = '<div style="margin-bottom:3px;"><img src="img/textfield_key.png" align="left" /> <a href="#" id="register_name">'+lang_start_reg_link+'</a></div>';
else
var pwchange_link_content = '';
//Start Avatarupload
if (self.userPrivilegienGlobal!="gast")
var avatar_upload = '<div style="margin-bottom:3px;"><img src="img/status_online.png" align="left" /> <a href="#" id="avatar_up">Avatar hochladen</a></div>';
else
var avatar_upload ='';
//Ende Avatarupload
// Status Auswahl generieren
var status_link_content ='<div><img src="img/status_online.png" align="left" /> <a href="#" id="stat_mod">'+lang_statuslink+'</a>
<div style="display:none;" id="stat_change_div"><div style="padding-top: 2px; padding-bottom: 4px; padding-left: 12px;">n';
-----
ab ca. Zeile 158 "+avatar-upload+":
Code 
// Fenster fuellen
self.win_prop.setHTMLContent('<div id="prop_list"><div style="margin-bottom:3px;"><img src="img/monitor_lightning.png" align="left" /> <a href="#" id="cls">'+lang_start_prop_link_1+'</a></div>
'+history_link_content+'
'+pwchange_link_content+'
'+avatar_upload+'
'+status_link_content+'
<div style="padding-bottom:5px;"><form id="set_sys_messages_form" st
----
ab ca. Zeile 247 falls man sich per Passwortlöschen davonstehlen möchte:
Code 
if (!$('pw_unregister_field').value.empty()){
var pw_unregister = $('pw_unregister_field').value;
$("unregister_formular").update('<img src="img/ajax-loader.gif">');
new Ajax.Request(
"./?UnregisterPw",
{
onSuccess: function(result){
$("unregister_formular").update('Logout...');
if (result.responseText==1){
//Start Avatar delete
new Ajax.Request("./?avatar",{
onSuccess: function(){
location.href="./?Logout&random_user_number="+self.random_user_number+"&r="+$("room").value;
}, postBody: "task=delete&userid="+self.user_id});
//Ende Avatar delete
//location.href="./?Logout&random_user_number="+self.random_user_number+"&r="+$("room").value;
}
else $("unregister_formular").update(''+result.responseText);
},
postBody: "user_pw="+pw_unregister
}
);
}
}
});
win_unregister_user.show();
$("unregister_form").onsubmit = function(){return false;}
}
Bei einer Anbindung an ein CMS, wo User kein Passwort bekommen, braucht es das nicht. Wenn das bei Dir nicht der Fall ist, dann ändere an der Stelle nichts.
-----
ab ca. Zeile 272 den ganzen Avatarupload rein:
Code 
win_unregister_user.show();
$("unregister_form").onsubmit = function(){return false;}
}
//Start Avatarupload
if (Event.element(event).id=="avatar_up") {
var avatarupwin = new Window({className: self.win_style, title:"Avatarupload", width:400, height:200, top:eval(self.mouse_top-315), left:eval(self.mouse_left-120), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
avatarupwin.setHTMLContent('<center><div id="Avatarsendmain"><div id="Avatar_Ergebnis"></div><br/><progress id="Avatar_progress" style="margin-top:10px"></progress><span id="Avatar_prozent"></span><form enctype="multipart/form-data" action="javascript:;" method="post"><input type="file" name="file" id="fileAvatar" onchange="fileChange();"/><br/><br/>(Max. Größe 2MB)<br/><br/><input name="submit" id="Avatar_Laden" type="submit" value="Avatar hochladen" class="button" /></form></center>');
document.getElementById("Avatar_progress").style.display = "none";
document.getElementById("Avatar_prozent").style.display = "none";
document.getElementById("Avatar_Ergebnis").style.color = "black";
document.getElementById("Avatar_Ergebnis").innerHTML = "Ideal sind Bilder für Avatare, wenn sie ein quadratisches Format haben. Beachten Sie, dass die Änderung des Avatars nach dem Hochladen einige Sekunden dauern kann. Bitte wählen Sie eine Bilddatei:";
$("fileAvatar").onchange = function()
{
var fileList = document.getElementById("fileAvatar").files;
var file = fileList[0];
if(!file)
return;
if(file.size > 2097152){
document.getElementById("Avatar_progress").style.display = "none";
document.getElementById("Avatar_prozent").style.display = "none";
document.getElementById("Avatar_Ergebnis").style.display = "block";
document.getElementById("Avatar_Ergebnis").style.color = "red";
document.getElementById("Avatar_Ergebnis").innerHTML = "Datei zu groß!";
document.getElementById("fileAvatar").value = "";
} else {
document.getElementById("Avatar_Ergebnis").style.display = "none";
document.getElementById("Avatar_progress").style.display = "block";
document.getElementById("Avatar_prozent").style.display = "block";
document.getElementById("Avatar_progress").value = 0;
document.getElementById("Avatar_prozent").innerHTML = "0%";
}
if(file.type == "image/jpeg" || file.type == "image/png" || file.type == "image/gif"){
document.getElementById("Avatar_progress").value = 0;
document.getElementById("Avatar_prozent").innerHTML = "0%";
} else {
document.getElementById("Avatar_progress").style.display = "none";
document.getElementById("Avatar_prozent").style.display = "none";
document.getElementById("Avatar_Ergebnis").style.display = "block";
document.getElementById("Avatar_Ergebnis").style.color = "red";
document.getElementById("Avatar_Ergebnis").innerHTML = "Unzulässiger Dateityp!";
document.getElementById("fileAvatar").value = "";
}
}
var client = null;
$("Avatar_Laden").onclick = function()
{
var file = document.getElementById("fileAvatar").files[0];
var formData = new FormData();
formData.append("task", "insert");
formData.append("userid", self.user_id);
client = new XMLHttpRequest();
var prog = document.getElementById("Avatar_progress");
if(!file)
return;
prog.value = 0;
prog.max = 100;
formData.append("file", file);
client.onerror = function(e) {
alert("Upload gescheitert!");
};
client.onload = function(e) {
if (client.status == 200) {
document.getElementById("Avatar_progress").style.display = "none";
document.getElementById("Avatar_prozent").style.display = "none";
document.getElementById("Avatar_Ergebnis").style.display = "block";
document.getElementById("Avatar_Ergebnis").style.color = "green";
document.getElementById("Avatar_Ergebnis").innerHTML = "Datei erfolgreich hochgeladen!";
document.getElementById("fileAvatar").value = "";
} else {
document.getElementById("Avatar_progress").style.display = "none";
document.getElementById("Avatar_prozent").style.display = "none";
document.getElementById("Avatar_Ergebnis").style.display = "block";
document.getElementById("Avatar_Ergebnis").style.color = "red";
document.getElementById("Avatar_Ergebnis").innerHTML = "Upload gescheitert! (Error " + client.status + ")";
document.getElementById("fileAvatar").value = "";
}
document.getElementById("Avatar_prozent").innerHTML = "100%";
prog.value = prog.max;
};
client.upload.onprogress = function(e) {
var p = Math.round(100 / e.total * e.loaded);
document.getElementById("Avatar_progress").value = p;
document.getElementById("Avatar_prozent").innerHTML = p + "% hochgeladen";
};
client.open("POST", "./?avatar");
client.send(formData);
}
if($(avatarupwin.getId()).style.display=='none'){
avatarupwin.show();
avatarupwin.toFront();
}
else avatarupwin.close();
}
//Ende Avatarupload
----
ab ca. Zeile 895 avatarbild und die Änderung in den Zeilen $("a"+id).innerHTML beachten!:
Code 
if (priv =="admin") var priv_icon="<img src="img/"+priv+"_i_small.png" align="absbottom" title=""+priv+"" alt=""+priv+"" />";
else if (priv =="mod") var priv_icon="<img src="img/"+priv+"_i_small.png" align="absbottom" title=""+priv+"" alt=""+priv+"" />";
else var priv_icon="";
var avatar_bild = '<img src="avatar/'+avatar+'" width="auto" height="64px">';
if (privat=='0'){
if (user_id==self.user_id) var userstyle_clickable ="";
else var userstyle_clickable = "id="inflblock_"+user_id+"" style="cursor:pointer"";
$("a"+id).innerHTML = "<div class="mess_back">"+avatar_bild+"<i>("+time+")</i> "+gender_icon+priv_icon+" <b "+userstyle_clickable+">"+user+"</b>: <span style=""+css+"">"+message+"</span></div>";
}else{
if (!id.empty()){
if (user_id==self.user_id)
$("a"+id).innerHTML = "<div class="privat_ausg_von">"+avatar_bild+"<i>("+time+")</i> "+gender_icon+priv_icon+" <b>"+user+"</b> <i>("+lang_receiveResultJSON_1+" "+self.privat_an+")</i>: <span style=""+css+"">"+message+"</span></div>";
else
$("a"+id).innerHTML = "<div class="privat_ausg_an">"+avatar_bild+"<i>("+time+")</i> "+gender_icon+priv_icon+" <b id="inflblock_"+user_id+"" style="cursor:pointer">"+user+"</b> <i>("+lang_receiveResultJSON_2+")</i>: <span style=""+css+"">"+message+"</span></div>";
}
else{
// privat win
----
ab ca. Zeile 1343 (online_avatar):
Code 
// Wenn admin
var admin_user = (self.userPrivilegienGlobal=="admin" || self.userPrivilegienGlobal=="mod") ? " <img src="img/wand.png" id="adminu_"+jsonObj.userOnline[i].user_id+"" /> " : "";
if ((self.userPrivilegienGlobal=="admin" && self.user_id==jsonObj.userOnline[i].user_id)||(self.userPrivilegienGlobal=="mod" && self.user_id==jsonObj.userOnline[i].user_id)) admin_user = " <img src="img/space.gif" weight="16" height="16" /> ";
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var usr_priv="";
if (jsonObj.userOnline[i].user_priv=="admin") usr_priv=" <img src="img/admin_i.png" alt="admin" title="admin">";
if (jsonObj.userOnline[i].user_priv=="mod") usr_priv=" <img src="img/mod_i.png" alt="mod" title="mod">";
// -----------------
var online_avatar = "<img src="avatar/"+jsonObj.userOnline[i].online_avatar+"?v="+Math.floor(Math.random()*1000)+"" width="16" height="16" alt="Avatar" title="Avatar">";
und
Code 
if (self.user_id==jsonObj.userOnline[i].user_id){
if (jsonObj.userOnline[i].user_sex=="m") var gender_icon="user_comment_m_self.png";
if (jsonObj.userOnline[i].user_sex=="f") var gender_icon="user_comment_w_self.png";
if (jsonObj.userOnline[i].user_sex=="n") var gender_icon="user_comment_n_self.png";
inner_html+="<div id="user_div_"+jsonObj.userOnline[i].user_id+"" style=""+user_style+"">
<div style="float:left;">
<img src="avatar/"+jsonObj.userOnline[i].online_avatar+"?v="+Math.floor(Math.random()*1000)+"" width="16" height="16" alt="Avatar" title="Avatar">
<img src="img/"+gender_icon+"" width="16" height="16" />
<span id="user_"+jsonObj.userOnline[i].user_id+""><b>"+admin_user+jsonObj.userOnline[i].user+"</b></span>
</div>
<div style="float:right; margin-right: 2px;">"+usr_priv+user_status_anz+"</div>
<div style="clear:both"></div>
</div>";
}
else{
if (jsonObj.userOnline[i].user_sex=="m") var gender_icon="user_comment_m.png";
if (jsonObj.userOnline[i].user_sex=="f") var gender_icon="user_comment_w.png";
if (jsonObj.userOnline[i].user_sex=="n") var gender_icon="user_comment_n.png";
inner_html+="<div id="user_div_"+jsonObj.userOnline[i].user_id+"" style=""+user_style+"">
<div style="float:left;">
<img src="avatar/"+jsonObj.userOnline[i].online_avatar+"" width="16" height="16" alt="Avatar" title="Avatar">
<img src="img/"+gender_icon+"" id="user_"+jsonObj.userOnline[i].user_id+"" style="cursor:pointer" title=""+lang_updateUserOnlineAnzeige_3+"" alt=""+lang_updateUserOnlineAnzeige_3+"" />
<span id="infoblock_"+jsonObj.userOnline[i].user_id+"" style=""+user_style2+"cursor:pointer" >"+admin_user+jsonObj.userOnline[i].user+"</span>
</div>
<div style="float:right; margin-right: 2px;">"+usr_priv+user_status_anz+"</div>
<div style="clear:both"></div>
</div>";
}
BEACHTE HIER JEWEILS DIE AVATAR-ÄNDERUNGEN.
----
avatar.class.php im class-Verzeichnis komplett neu anlegen:
Code 
<?php
class avatar extends DbConectionMaker
{
public function __construct (){
// call parent Constructor from class DbConectionMaker
parent::__construct();
session_start();
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
// Sets charset and content-type for index.php
header('content-type: text/html; charset=utf-8');
$filedir = 'avatar'; // Uploadverzeichnis + Muss CHMOD 777 sein!
$accepted = array('png', 'jpg', 'jpeg', 'gif');
$userId = $_POST['userid'];
if ($_POST['task']=="insert"){
if (isset($_FILES['file']))
{
$avatarfile = $this->dbObj->sqlGet("SELECT Avatar FROM {$this->_prefix}etchat_user where etchat_user_id = '".$userId."'");
if($avatarfile[0][0]!="noavatar.jpg") {
$delfile = $filedir."/".$avatarfile[0][0];
unlink($delfile);
}
preg_match('/.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches);
if(in_array(strtolower($matches[1]), $accepted)) {
$newname = $userId.'_'.rand(0,1000).'.'.$matches[1];
move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname);
$this->dbObj->sqlSet("UPDATE {$this->_prefix}etchat_user SET Avatar = '".$newname."' WHERE etchat_user_id = '".$userId."'");
$this->dbObj->close();
}
}
}//Ende Insert
if ($_POST['task']=="delete"){
$avatarfile = $this->dbObj->sqlGet("SELECT Avatar FROM {$this->_prefix}etchat_user where etchat_user_id = '".$userId."'");
if($avatarfile[0][0]!="noavatar.jpg") {
$delfile = $filedir."/".$avatarfile[0][0];
unlink($delfile);
}
$this->dbObj->close();
}//Ende Delete
}//Ende Construct
}//Ende Class
-----
Nun geht es in der ReloaderMessages.class.php weiter:
ab ca. Zeile 59:
Code 
// all needed Userdata for current user
$user_array=$this->dbObj->sqlGet("SELECT etchat_user_id, etchat_username, etchat_userprivilegien, etchat_usersex, Avatar FROM {$this->_prefix}etchat_user where etchat_user_id = ".$_SESSION['etchat_'.$this->_prefix.'user_id']);
Avatarspalte nachtragen
und bei ca. Zeile 122:
Code 
$ausgabeJSON_Inhalt[] = "{"id":"".$normal_message_counter."","user":"".(addslashes($feld[$a][1]))."","user_id":"".(addslashes($feld[$a][6]))."","message":"".$message2send."","time":"".date("H:i",$feld[$a][3])."","privat":"".$feld[$a][5]."","css":"".$feld[$a][7]."","priv":"".$feld[$a][8]."","sex":"".$feld[$a][9]."","avatar":"".$feld[$a][10].""}";
Am Ende den Avatar nachtragen. Ggf muss der Index angepasst werden.
ab ca. Zeile 161:
Code 
etchat_user_online_user_name = '".$user_array[0][1]."',
etchat_user_online_user_priv = '".$user_array[0][2]."',
etchat_user_online_user_sex = '".$user_array[0][3]."',
online_avatar = '".$user_array[0][4]."'
WHERE etchat_onlineid = ".$user_onlineid[0][0]);
// the user session is not yet existing, so create it
else {
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_useronline ( etchat_onlineuser_fid, etchat_onlinetimestamp, etchat_onlineip, etchat_fid_room, etchat_user_online_room_goup, etchat_user_online_room_name, etchat_user_online_user_name, etchat_user_online_user_priv, etchat_user_online_user_sex, online_avatar)
VALUES ( '".$user_array[0][0]."', ".date('U').", '".$user_param_all."', ".$raum_array[0][0].", ".$raum_array[0][2].", '".$raum_array[0][1]."', '".$user_array[0][1]."', '".$user_array[0][2]."', '".$user_array[0][3]."', '".$user_array[0][4]."')");
>>>online_avatar und $user_array[0][4] nachtragen.
ab ca. Zeile 275:
Code 
// get all messages
$feld=$this->dbObj->sqlGet("SELECT etchat_id, etchat_username, etchat_text, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_id, etchat_text_css, etchat_userprivilegien, etchat_usersex, Avatar
FROM {$this->_prefix}etchat_messages, {$this->_prefix}etchat_user where (etchat_fid_room = ".(int)$_POST['room']." or etchat_fid_room = 0 or etchat_privat=".$_SESSION['etchat_'.$this->_prefix.'user_id'].") and ".$where_sys_messages."
(etchat_privat=0 or etchat_privat=".$_SESSION['etchat_'.$this->_prefix.'user_id']." or etchat_user_fid=".$_SESSION['etchat_'.$this->_prefix.'user_id'].") and etchat_user_id=etchat_user_fid ORDER BY etchat_id DESC LIMIT ".$this->_messages_shown_on_entrance);
>>>Avatar
und ab ca. Zeile 291:
Code 
// get all messages
$feld=$this->dbObj->sqlGet("SELECT etchat_id, etchat_username, etchat_text, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_id, etchat_text_css, etchat_userprivilegien, etchat_usersex, Avatar
FROM {$this->_prefix}etchat_messages, {$this->_prefix}etchat_user WHERE (etchat_fid_room = ".(int)$_POST['room']." or etchat_fid_room = 0 or etchat_privat=".$_SESSION['etchat_'.$this->_prefix.'user_id'].")
and etchat_id > ".$_SESSION['etchat_'.$this->_prefix.'last_id']." and ".$where_sys_messages."
(etchat_privat=0 or etchat_privat=".$_SESSION['etchat_'.$this->_prefix.'user_id']." or etchat_user_fid=".$_SESSION['etchat_'.$this->_prefix.'user_id'].")
and etchat_user_id=etchat_user_fid ORDER BY etchat_id ");
>>>>Auch die Spalte Avatar eintragen.
----
Nun geht es in die ReloaderUserOnline.class.php:
ab ca. Zeile 42:
Code 
// Get all Session from the etchat_useronline with all user sessions
$feld=$this->dbObj->sqlGet("SELECT
etchat_user_online_user_name,
etchat_user_online_room_name,
etchat_fid_room,
etchat_onlineuser_fid,
etchat_onlineip,
etchat_user_online_user_priv,
etchat_user_online_room_goup,
etchat_user_online_user_sex,
etchat_user_online_user_status_img,
etchat_user_online_user_status_text,
online_avatar
FROM {$this->_prefix}etchat_useronline
ORDER BY etchat_fid_room, etchat_user_online_user_name");
>>>>>online_avatar
ab ca. Zeile 85:
Code 
// create one string with all DB-params
for ($a=0; $a < count($feld); $a++)
$rel .= $feld[$a][1].$feld[$a][2].$feld[$a][3].$feld[$a][5].$feld[$a][8].$feld[$a][10];
>>>hinten $feld[$a][10] eintragen
und ab ca. Zeile 168:
Code 
echo"{";
echo""user": "".addslashes($feld[$a][0])."","user_id": "".$feld[$a][3]."",";
echo""user_priv": "".$feld[$a][5]."","user_sex": "".$feld[$a][7]."","user_simg": "".$feld[$a][8]."",";
echo""user_stext": "".$feld[$a][9]."","room_id": "".$feld[$a][2]."","room_allowed": "".$room_status."",";
echo""room": "".addslashes($feld[$a][1])."","online_avatar": "".$feld[$a][10].""";
>>>>online_avatar eintragen
----
Avatar.css (kann auch normal in die css genommen werden):
Code 
#Avatarsendmain{
width: 90%;
padding: 6px;
overflow: hidden;
border-radius: 8px;
}
----
In der AdminRegUserIndex.class.php:
ab ca. Zeile 89:
Code 
foreach($feld as $datasets)
$print_user_list.="<tr><td><input type="checkbox" name="userid" value="".$datasets[0].""></td><td><b>".$datasets[1]."</b></td><td> ".$datasets[4]." </td><td> ".$datasets[5]."</td><td> </td><td>".$lang->make2[0]->tagData." <a href="./?AdminRegUserEdit&admin&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."">admin</a> | <a href="./?AdminRegUserEdit&mod&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."">mod</a> | <a href="./?AdminRegUserEdit&delavatar&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."">Lösche Avatar</a></td></tr>";
>>>> Hinten den Link zum Avatarlöschen einfügen
----
In der AdminRegUserEdit.class.php:
ab ca. Zeile 59:
Code 
if (isset($_GET['delavatar'])){
$filedir = 'avatar'; // Uploadverzeichnis + Muss CHMOD 777 sein!
$avatarfile = $this->dbObj->sqlGet("SELECT Avatar FROM {$this->_prefix}etchat_user where etchat_user_id = ".(int)$_GET['id']);
if($avatarfile[0][0]!="noavatar.jpg") {
$delfile = $filedir."/".$avatarfile[0][0];
unlink($delfile);
}
$this->dbObj->sqlSet("update {$this->_prefix}etchat_user set Avatar='noavatar.jpg' WHERE etchat_user_id = ".(int)$_GET['id']);
}
if (isset($_GET['mod']))
$this->dbObj->sqlSet("update {$this->_prefix}etchat_user set etchat_userprivilegien='mod' WHERE etchat_user_id = ".(int)$_GET['id']);
>>>> delavatar-Bereich vor if (isset($_GET['mod'])) setzen.
----
In der AdminUserIndex.class.php ändern:
Code  if (is_array($feld)){
$print_user_list="<table>";
foreach($feld as $datasets)
$print_user_list.="<tr><td>".$datasets[1]."</td><td>(<i>".$datasets[3]."</i>)</td><td> </td><td><a href="./?AdminEditUser&id=".$datasets[0]."">".$lang->edit[0]->tagData."</a> | <a href="./?AdminDeleteAvatar&delavatar&id=".$datasets[0]."">Lösche Avatar</a></td></tr>";
$print_user_list.="</table>";
----
Datei DeleteAvatar.tpl.html im Verzeichnis admin_tpl-Verzeichnis komplett neu anlegen:
Code 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Avatar Delete</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="styles/<?php echo $_SESSION['etchat_'.$this->_prefix.'style']; ?>/style.css" rel="stylesheet" type="text/css"/>
</head>
<body id="adminbereich_body">
<?php
echo "<a href="./?AdminIndex"><<< ".$lang->backlink[0]->tagData."</a><br /><br />";
echo "Avatar gelöscht!";
?>
</body>
</html>
----
Datei AdminDeleteAvatar.class.php im class/admin-Verzeichnis komplett neu anlegen:
Code 
<?php
/**
* Class AdminEditUser - Admin area
*
* LICENSE: CREATIVE COMMONS PUBLIC LICENSE "Namensnennung Nicht-kommerziell 2.0"
*
* @copyright 2009 <SEDesign />
* @license http://creativecommons.org/licenses/by-nc/2.0/de/
* @version $3.0.6$
* @link http://www.sedesign.de/de_produkte_chat-v3.html
* @since File available since Alpha 1.0
*/
class AdminDeleteAvatar extends DbConectionMaker
{
/**
* Constructor
*
* @uses LangXml object creation
* @uses LangXml::getLang() parser method
* @uses ConnectDB::sqlSet()
* @uses ConnectDB::sqlGet()
* @uses ConnectDB::close()
* @return void
*/
public function __construct (){
// call parent Constructor from class DbConectionMaker
parent::__construct();
session_start();
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
// Sets charset and content-type for index.php
header('content-type: text/html; charset=utf-8');
$langObj = new LangXml();
$lang=$langObj->getLang()->admin[0]->admin_user[0];
if ($_SESSION['etchat_'.$this->_prefix.'user_priv']=="admin"){
if (isset($_GET['delavatar'])){
$filedir = 'avatar'; // Uploadverzeichnis + Muss CHMOD 777 sein!
$avatarfile = $this->dbObj->sqlGet("SELECT Avatar FROM {$this->_prefix}etchat_user where etchat_user_id = ".(int)$_GET['id']);
if($avatarfile[0][0]!="noavatar.jpg") {
$delfile = $filedir."/".$avatarfile[0][0];
unlink($delfile);
}
$this->dbObj->sqlSet("update {$this->_prefix}etchat_user set Avatar='noavatar.jpg' WHERE etchat_user_id = ".(int)$_GET['id']);
}
$this->dbObj->close();
}
include_once("styles/admin_tpl/DeleteAvatar.tpl.html");
}
}
----
VERZEICHNIS 'AVATAR' ANLEGEN UND SCHREIBRECHTE ZUWEISEN NICHT VERGESSEN! |