From 190ec4c863d4779c4f65fc3639dec0bf89e0dbdb Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Fri, 29 Apr 2016 21:50:04 +0200 Subject: [PATCH] Allow deletion of member accounts in profile --- CHANGELOG | 1 + chat.php | 32 +++++++++++++++++++++++++++++++- lang_de.php | 3 ++- lang_en.php | 3 ++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a290532..f4117be 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,5 @@ Add an offline inbox for members +Allow deletion of member accounts in profile Version 1.18 - Apr. 28, 2016 Add time zone settings diff --git a/chat.php b/chat.php index 378b1c0..9f8ff00 100644 --- a/chat.php +++ b/chat.php @@ -98,8 +98,15 @@ function route(){ }elseif($_REQUEST['action']==='profile'){ check_session(); $arg=''; - if(isSet($_REQUEST['do']) && $_REQUEST['do']==='save'){ + if(!isSet($_REQUEST['do'])){ + }elseif($_REQUEST['do']==='save'){ $arg=save_profile(); + }elseif($_REQUEST['do']==='delete'){ + if(isSet($_REQUEST['confirm'])){ + delete_account(); + }else{ + send_delete_account(); + } } send_profile($arg); }elseif($_REQUEST['action']==='logout'){ @@ -785,6 +792,15 @@ function send_destroy_chat(){ print_end(); } +function send_delete_account(){ + global $H, $I; + print_start('delete_account'); + echo "
$I[confirm]
"; + echo "<$H[form]>$H[commonform]".hidden('action', 'profile').hidden('do', 'delete').hidden('confirm', 'yes').submit($I['yes'], 'class="delbutton"').''; + echo "<$H[form]>$H[commonform]".hidden('action', 'profile').submit($I['no'], 'class="backbutton"').'
'; + print_end(); +} + function send_init(){ global $H, $I, $L; print_start('init'); @@ -1857,6 +1873,9 @@ function send_profile($arg=''){ thr(); } echo ''.submit($I['savechanges']).''; + if($U['status']>1 && $U['status']<8){ + echo "
<$H[form]>$H[commonform]".hidden('action', 'profile').hidden('do', 'delete').submit($I['deleteacc'], 'class="delbutton"').''; + } echo "

$I[changelang]"; foreach($L as $lang=>$name){ echo " $name"; @@ -2393,6 +2412,17 @@ function read_members(){ } } +function delete_account(){ + global $U, $db; + if($U['status']<8){ + $stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=1 WHERE nickname=?;'); + $stmt->execute(array($U['nickname'])); + $stmt=$db->prepare('DELETE FROM ' . PREFIX . 'members WHERE nickname=?;'); + $stmt->execute(array($U['nickname'])); + $U['status']=1; + } +} + function register_guest($status, $nick){ global $A, $I, $P, $U, $db; if(!isSet($P[$nick])){ diff --git a/lang_de.php b/lang_de.php index cc43912..8d63f7b 100644 --- a/lang_de.php +++ b/lang_de.php @@ -342,6 +342,7 @@ $T=array( 'regednick' => 'Dieser Nickname ist ein registeriertes Mitglied.', 'eninbox' => 'Offline Posteingang aktivieren', 'inboxmsgs' => '%d Nachrichten im Posteingang lesen', - 'offline' => '(offline)' + 'offline' => '(offline)', + 'deleteacc' => 'Konto löschen' ); ?> diff --git a/lang_en.php b/lang_en.php index b9aa081..2913bed 100644 --- a/lang_en.php +++ b/lang_en.php @@ -342,6 +342,7 @@ $I=array( 'regednick' => 'This nickname is a registered member.', 'eninbox' => 'Enable offline inbox', 'inboxmsgs' => 'Read %d messages in your inbox', - 'offline' => '(offline)' + 'offline' => '(offline)', + 'deleteacc' => 'Delete account' ); ?>