Tutorial: Avatarsystem

Tutorial Übersicht Tutorial Übersicht  >>  ET-Chat ET-Chat

Avatarsystem
Von: Fizzy Lemon am: 20.12.2023 - 08:43 Gelesen 3573 x gelesen Tutorial drucken

Werbung:
ALL INKL



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 Alles auswählen

}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" />&nbsp;&nbsp;<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" />&nbsp;&nbsp;<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" />&nbsp;&nbsp;<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 Alles auswählen

// Fenster fuellen
self.win_prop.setHTMLContent('<div id="prop_list"><div style="margin-bottom:3px;"><img src="img/monitor_lightning.png" align="left" />&nbsp;&nbsp;<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 Alles auswählen

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 Alles auswählen

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&ouml;&szlig;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&uuml;r Avatare, wenn sie ein quadratisches Format haben. Beachten Sie, dass die &Auml;nderung des Avatars nach dem Hochladen einige Sekunden dauern kann. Bitte w&auml;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&szlig;!";
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&auml;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 Alles auswählen

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 Alles auswählen

// 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 Alles auswählen

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 Alles auswählen

<?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 Alles auswählen

// 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 Alles auswählen

$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 Alles auswählen

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 Alles auswählen

// 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 Alles auswählen

// 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 Alles auswählen

// 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 Alles auswählen

// 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 Alles auswählen

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 Alles auswählen

#Avatarsendmain{
width: 90%;
padding: 6px;
overflow: hidden;
border-radius: 8px;
}


----
In der AdminRegUserIndex.class.php:

ab ca. Zeile 89:

Code Alles auswählen

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]."&nbsp;&nbsp;&nbsp;</td><td> ".$datasets[5]."</td><td>&nbsp;&nbsp;&nbsp;</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&ouml;sche Avatar</a></td></tr>";


>>>> Hinten den Link zum Avatarlöschen einfügen

----
In der AdminRegUserEdit.class.php:
ab ca. Zeile 59:

Code Alles auswählen

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 Alles auswählen
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>&nbsp;&nbsp;&nbsp;</td><td><a href="./?AdminEditUser&id=".$datasets[0]."">".$lang->edit[0]->tagData."</a> | <a href="./?AdminDeleteAvatar&delavatar&id=".$datasets[0]."">L&ouml;sche Avatar</a></td></tr>";
$print_user_list.="</table>";


----
Datei DeleteAvatar.tpl.html im Verzeichnis admin_tpl-Verzeichnis komplett neu anlegen:

Code Alles auswählen

<!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&ouml;scht!";
?>
</body>
</html>


----
Datei AdminDeleteAvatar.class.php im class/admin-Verzeichnis komplett neu anlegen:

Code Alles auswählen

<?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!
War dieses Tutorial hilfreich für dich?
Nur Mitglieder können abstimmen!
Für 2 der Mitglieder war es hilfreich.
Für 0 der Mitglieder nicht.


Login
Name oder Email

Passwort



Noch kein Mitglied?
Klicke hier um dich zu registrieren

Passwort vergessen?
Um ein neues Passwort anzufordern klicke hier.
Wer ist im Chat?
Gastzugang geschlossen!

0 User im Chat
Teamspeak
Harlekins Welt
Eingangshalle
« ★ » Allgemein « ★ »
Laberecke
Quasselbox
Up & Download
« ❑ » Intern « ❑ »
Besprechung
« ● » Abwesend « ● »
kurz < 30 Min.
lang > 30 Min.

Discord

Joinen
Slider
Security
Geschützt durch:
HP-Detect
Werbung
AC-Talkchat

Über HP-4-Fun

HP-4-Fun

ist ein privates, nicht kommerzielles, Projekt, welches 2019 von Rolly8-HL und mir (Harlekin) gestartet wurde.

HP-4-Fun 2.0 ist nur für den Eigenbedarf geschrieben worden. Ein Downloadpaket von HP-4-Fun 2.0 wird es nicht geben!

Letzte Kommentare

Informationen

Zuletzt Online