Remove global variable for present users
This commit is contained in:
188
chat.php
188
chat.php
@ -39,7 +39,6 @@ $F=array();// Fonts
|
|||||||
$H=array();// HTML-stuff
|
$H=array();// HTML-stuff
|
||||||
$I=array();// Translations
|
$I=array();// Translations
|
||||||
$L=array();// Languages
|
$L=array();// Languages
|
||||||
$P=array();// All present users [display name, style, status, nickname]
|
|
||||||
$U=array();// This user data
|
$U=array();// This user data
|
||||||
$db;// Database connection
|
$db;// Database connection
|
||||||
$memcached;// Memcached connection
|
$memcached;// Memcached connection
|
||||||
@ -69,6 +68,7 @@ function route(){
|
|||||||
}elseif($_REQUEST['action']==='redirect' && !empty($_GET['url'])){
|
}elseif($_REQUEST['action']==='redirect' && !empty($_GET['url'])){
|
||||||
send_redirect($_GET['url']);
|
send_redirect($_GET['url']);
|
||||||
}elseif($_REQUEST['action']==='wait'){
|
}elseif($_REQUEST['action']==='wait'){
|
||||||
|
parse_sessions();
|
||||||
send_waiting_room();
|
send_waiting_room();
|
||||||
}elseif($_REQUEST['action']==='post'){
|
}elseif($_REQUEST['action']==='post'){
|
||||||
check_session();
|
check_session();
|
||||||
@ -858,13 +858,14 @@ function send_alogin(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function send_admin($arg=''){
|
function send_admin($arg=''){
|
||||||
global $H, $I, $P, $U, $db;
|
global $H, $I, $U, $db;
|
||||||
$ga=(int) get_setting('guestaccess');
|
$ga=(int) get_setting('guestaccess');
|
||||||
print_start('admin');
|
print_start('admin');
|
||||||
$chlist="<select name=\"name[]\" size=\"5\" multiple><option value=\"\">$I[choose]</option>";
|
$chlist="<select name=\"name[]\" size=\"5\" multiple><option value=\"\">$I[choose]</option>";
|
||||||
$chlist.="<option value=\"&\">$I[allguests]</option>";
|
$chlist.="<option value=\"&\">$I[allguests]</option>";
|
||||||
sort_names($P);
|
$stmt=$db->query('SELECT nickname, style, status FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 ORDER BY LOWER(nickname);');
|
||||||
foreach($P as $user){
|
$users=$stmt->fetchAll(PDO::FETCH_NUM);
|
||||||
|
foreach($users as $user){
|
||||||
if($user[2]<$U['status']){
|
if($user[2]<$U['status']){
|
||||||
$chlist.="<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
$chlist.="<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
||||||
}
|
}
|
||||||
@ -947,7 +948,7 @@ function send_admin($arg=''){
|
|||||||
echo "<tr><td><table class=\"left-table\"><tr><th>$I[addsuguest]</th><td>";
|
echo "<tr><td><table class=\"left-table\"><tr><th>$I[addsuguest]</th><td>";
|
||||||
frmadm('superguest');
|
frmadm('superguest');
|
||||||
echo "<table class=\"right-table\"><tr><td><select name=\"name\" size=\"1\"><option value=\"\">$I[choose]</option>";
|
echo "<table class=\"right-table\"><tr><td><select name=\"name\" size=\"1\"><option value=\"\">$I[choose]</option>";
|
||||||
foreach($P as $user){
|
foreach($users as $user){
|
||||||
if($user[2]==1){
|
if($user[2]==1){
|
||||||
echo "<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
echo "<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
||||||
}
|
}
|
||||||
@ -1004,7 +1005,7 @@ function send_admin($arg=''){
|
|||||||
echo "<tr><td><table class=\"left-table\"><tr><th>$I[regguest]</th><td>";
|
echo "<tr><td><table class=\"left-table\"><tr><th>$I[regguest]</th><td>";
|
||||||
frmadm('register');
|
frmadm('register');
|
||||||
echo "<table class=\"right-table\"><tr><td><select name=\"name\" size=\"1\"><option value=\"\">$I[choose]</option>";
|
echo "<table class=\"right-table\"><tr><td><select name=\"name\" size=\"1\"><option value=\"\">$I[choose]</option>";
|
||||||
foreach($P as $user){
|
foreach($users as $user){
|
||||||
if($user[2]==1){
|
if($user[2]==1){
|
||||||
echo "<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
echo "<option value=\"$user[0]\" style=\"$user[1]\">$user[0]</option>";
|
||||||
}
|
}
|
||||||
@ -1492,7 +1493,6 @@ function send_approve_waiting(){
|
|||||||
|
|
||||||
function send_waiting_room(){
|
function send_waiting_room(){
|
||||||
global $H, $I, $U, $db, $language;
|
global $H, $I, $U, $db, $language;
|
||||||
parse_sessions();
|
|
||||||
$ga=(int) get_setting('guestaccess');
|
$ga=(int) get_setting('guestaccess');
|
||||||
if($ga===3 && (get_count_mods()>0 || !get_setting('modfallback'))){
|
if($ga===3 && (get_count_mods()>0 || !get_setting('modfallback'))){
|
||||||
$wait=false;
|
$wait=false;
|
||||||
@ -1579,7 +1579,7 @@ function send_del_confirm(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function send_post(){
|
function send_post(){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
$U['postid']=substr(time(), -6);
|
$U['postid']=substr(time(), -6);
|
||||||
print_start('post');
|
print_start('post');
|
||||||
if(!isSet($_REQUEST['sendto'])){
|
if(!isSet($_REQUEST['sendto'])){
|
||||||
@ -1629,13 +1629,18 @@ function send_post(){
|
|||||||
}
|
}
|
||||||
$disablepm=(bool) get_setting('disablepm');
|
$disablepm=(bool) get_setting('disablepm');
|
||||||
if(!$disablepm){
|
if(!$disablepm){
|
||||||
|
$stmt=$db->prepare('SELECT nickname, style, status, incognito FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 AND incognito=0 AND nickname NOT IN (SELECT ign FROM '. PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM '. PREFIX . 'ignored WHERE ign=?) ORDER BY status DESC, lastpost DESC;');
|
||||||
|
$stmt->execute([$U['nickname'], $U['nickname']]);
|
||||||
|
while($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
|
$users[$tmp['nickname']]=[$tmp['nickname'], $tmp['style'], $tmp['status'], $tmp['nickname']];
|
||||||
|
}
|
||||||
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'members WHERE eninbox!=0 AND eninbox<=? AND nickname NOT IN (SELECT nickname FROM ' . PREFIX . 'sessions WHERE incognito=0) AND nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);');
|
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'members WHERE eninbox!=0 AND eninbox<=? AND nickname NOT IN (SELECT nickname FROM ' . PREFIX . 'sessions WHERE incognito=0) AND nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);');
|
||||||
$stmt->execute(array($U['status'], $U['nickname'], $U['nickname']));
|
$stmt->execute(array($U['status'], $U['nickname'], $U['nickname']));
|
||||||
while($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
while($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
$P[$tmp['nickname']]=["$tmp[nickname] $I[offline]", $tmp['style'], $tmp['status'], $tmp['nickname']];
|
$users[$tmp['nickname']]=["$tmp[nickname] $I[offline]", $tmp['style'], $tmp['status'], $tmp['nickname']];
|
||||||
}
|
}
|
||||||
sort_names($P);
|
sort_names($users);
|
||||||
foreach($P as $user){
|
foreach($users as $user){
|
||||||
if($U['nickname']!==$user[3]){
|
if($U['nickname']!==$user[3]){
|
||||||
echo '<option ';
|
echo '<option ';
|
||||||
if($_REQUEST['sendto']==$user[3]){
|
if($_REQUEST['sendto']==$user[3]){
|
||||||
@ -1701,11 +1706,10 @@ function send_help(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function send_profile($arg=''){
|
function send_profile($arg=''){
|
||||||
global $F, $H, $I, $L, $P, $U, $db, $language;
|
global $F, $H, $I, $L, $U, $db, $language;
|
||||||
print_start('profile');
|
print_start('profile');
|
||||||
echo "<$H[form]>$H[commonform]".hidden('action', 'profile').hidden('do', 'save')."<h2>$I[profile]</h2><i>$arg</i><table class=\"center-table\">";
|
echo "<$H[form]>$H[commonform]".hidden('action', 'profile').hidden('do', 'save')."<h2>$I[profile]</h2><i>$arg</i><table class=\"center-table\">";
|
||||||
thr();
|
thr();
|
||||||
sort_names($P);
|
|
||||||
$ignored=[];
|
$ignored=[];
|
||||||
$stmt=$db->prepare('SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?;');
|
$stmt=$db->prepare('SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?;');
|
||||||
$stmt->execute([$U['nickname']]);
|
$stmt->execute([$U['nickname']]);
|
||||||
@ -1973,7 +1977,7 @@ function send_fatal_error($err){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function print_chatters(){
|
function print_chatters(){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
echo '<table style="border-spacing:0px;"><tr>';
|
echo '<table style="border-spacing:0px;"><tr>';
|
||||||
if($U['status']>=5 && get_setting('guestaccess')==3){
|
if($U['status']>=5 && get_setting('guestaccess')==3){
|
||||||
$result=$db->query('SELECT COUNT(*) FROM ' . PREFIX . 'sessions WHERE entry=0 AND status=1;');
|
$result=$db->query('SELECT COUNT(*) FROM ' . PREFIX . 'sessions WHERE entry=0 AND status=1;');
|
||||||
@ -1984,7 +1988,9 @@ function print_chatters(){
|
|||||||
echo submit(sprintf($I['approveguests'], $temp[0])).'</form></td><td> </td>';
|
echo submit(sprintf($I['approveguests'], $temp[0])).'</form></td><td> </td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach($P as $user){
|
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 AND incognito=0 AND nickname NOT IN (SELECT ign FROM '. PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM '. PREFIX . 'ignored WHERE ign=?) ORDER BY status DESC, lastpost DESC;');
|
||||||
|
$stmt->execute([$U['nickname'], $U['nickname']]);
|
||||||
|
while($user=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
if($user[2]<=2){
|
if($user[2]<=2){
|
||||||
$G[]=style_this($user[0], $user[1]);
|
$G[]=style_this($user[0], $user[1]);
|
||||||
}else{
|
}else{
|
||||||
@ -2064,7 +2070,7 @@ function create_session($setup){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function write_new_session(){
|
function write_new_session(){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'sessions WHERE nickname=?;');
|
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'sessions WHERE nickname=?;');
|
||||||
$stmt->execute(array($U['nickname']));
|
$stmt->execute(array($U['nickname']));
|
||||||
if($temp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
if($temp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
@ -2099,7 +2105,6 @@ function write_new_session(){
|
|||||||
if($U['status']>=3 && !$U['incognito']){
|
if($U['status']>=3 && !$U['incognito']){
|
||||||
add_system_message(sprintf(get_setting('msgenter'), style_this($U['nickname'], $U['style'])));
|
add_system_message(sprintf(get_setting('msgenter'), style_this($U['nickname'], $U['style'])));
|
||||||
}
|
}
|
||||||
$P[$U['nickname']]=[$U['nickname'], $U['style'], $U['status'], $U['nickname']];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2202,26 +2207,34 @@ function kill_session(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function kick_chatter($names, $mes, $purge){
|
function kick_chatter($names, $mes, $purge){
|
||||||
global $P, $U, $db;
|
global $U, $db;
|
||||||
$lonick='';
|
$lonick='';
|
||||||
$time=60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time();
|
$time=60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time();
|
||||||
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET lastpost=?, status=0, kickmessage=? WHERE nickname=? AND status!=0;');
|
$check=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=? AND status!=0 AND (status<? OR nickname=?);');
|
||||||
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET lastpost=?, status=0, kickmessage=? WHERE nickname=?;');
|
||||||
|
$all=false;
|
||||||
|
if($names[0]==='&'){
|
||||||
|
$tmp=$db->query('SELECT nickname FROM ' . PREFIX . 'sessions WHERE status=1;');
|
||||||
|
$names=[];
|
||||||
|
while($name=$tmp->fetch(PDO::FETCH_NUM)){
|
||||||
|
$names[]=$name[0];
|
||||||
|
}
|
||||||
|
$all=true;
|
||||||
|
}
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach($names as $name){
|
foreach($names as $name){
|
||||||
foreach($P as $temp){
|
$check->execute([$name, $U['status'], $name]);
|
||||||
if(($temp[0]===$U['nickname'] && $U['nickname']===$name) || ($U['status']>$temp[2] && (($temp[0]===$name && $temp[2]>0) || ($name==='&' && $temp[2]==1)))){
|
if($temp=$check->fetch(PDO::FETCH_NUM)){
|
||||||
$stmt->execute(array($time, $mes, $name));
|
$stmt->execute(array($time, $mes, $name));
|
||||||
if($purge){
|
if($purge){
|
||||||
del_all_messages($name, 0);
|
del_all_messages($name, 0);
|
||||||
}
|
|
||||||
$lonick.=style_this($name, $temp[1]).', ';
|
|
||||||
++$i;
|
|
||||||
unset($P[$name]);
|
|
||||||
}
|
}
|
||||||
|
$lonick.=style_this($name, $temp[0]).', ';
|
||||||
|
++$i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!empty($lonick)){
|
if($i>0){
|
||||||
if($names[0]==='&'){
|
if($all){
|
||||||
add_system_message(get_setting('msgallkick'));
|
add_system_message(get_setting('msgallkick'));
|
||||||
}else{
|
}else{
|
||||||
$lonick=preg_replace('/\,\s$/','',$lonick);
|
$lonick=preg_replace('/\,\s$/','',$lonick);
|
||||||
@ -2231,31 +2244,35 @@ function kick_chatter($names, $mes, $purge){
|
|||||||
add_system_message(sprintf(get_setting('msgkick'), $lonick));
|
add_system_message(sprintf(get_setting('msgkick'), $lonick));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if(!empty($lonick)){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function logout_chatter($names){
|
function logout_chatter($names){
|
||||||
global $P, $U, $db;
|
global $U, $db;
|
||||||
$stmt=$db->prepare('DELETE FROM ' . PREFIX . 'sessions WHERE nickname=? AND status<? AND status!=0;');
|
$check=$db->prepare('SELECT status FROM ' . PREFIX . 'sessions WHERE nickname=? AND status<? AND status!=0;');
|
||||||
|
$stmt=$db->prepare('DELETE FROM ' . PREFIX . 'sessions WHERE nickname=?;');
|
||||||
$stmt1=$db->prepare('UPDATE ' . PREFIX . "messages SET poster='' WHERE poster=? AND poststatus=9;");
|
$stmt1=$db->prepare('UPDATE ' . PREFIX . "messages SET poster='' WHERE poster=? AND poststatus=9;");
|
||||||
$stmt2=$db->prepare('UPDATE ' . PREFIX . "messages SET recipient='' WHERE recipient=? AND poststatus=9;");
|
$stmt2=$db->prepare('UPDATE ' . PREFIX . "messages SET recipient='' WHERE recipient=? AND poststatus=9;");
|
||||||
$stmt3=$db->prepare('DELETE FROM ' . PREFIX . 'ignored WHERE ign=? OR ignby=?;');
|
$stmt3=$db->prepare('DELETE FROM ' . PREFIX . 'ignored WHERE ign=? OR ignby=?;');
|
||||||
$stmt4=$db->prepare('UPDATE ' . PREFIX . "inbox SET poster='' WHERE poster=?;");
|
$stmt4=$db->prepare('UPDATE ' . PREFIX . "inbox SET poster='' WHERE poster=?;");
|
||||||
|
if($names[0]==='&'){
|
||||||
|
$tmp=$db->query('SELECT nickname FROM ' . PREFIX . 'sessions WHERE status=1;');
|
||||||
|
$names=[];
|
||||||
|
while($name=$tmp->fetch(PDO::FETCH_NUM)){
|
||||||
|
$names[]=$name[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
foreach($names as $name){
|
foreach($names as $name){
|
||||||
foreach($P as $temp){
|
$check->execute([$name, $U['status']]);
|
||||||
if($temp[0]===$name || ($name==='&' && $temp[2]==1)){
|
if($temp=$check->fetch(PDO::FETCH_NUM)){
|
||||||
$stmt->execute(array($name, $U['status']));
|
$stmt->execute([$name]);
|
||||||
if($temp[2]==1){
|
if($temp[0]==1){
|
||||||
$stmt1->execute(array($name));
|
$stmt1->execute([$name]);
|
||||||
$stmt2->execute(array($name));
|
$stmt2->execute([$name]);
|
||||||
$stmt3->execute(array($name, $name));
|
$stmt3->execute([$name, $name]);
|
||||||
$stmt4->execute(array($name));
|
$stmt4->execute([$name]);
|
||||||
}
|
|
||||||
unset($P[$name]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2295,16 +2312,18 @@ function check_kicked(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_nowchatting(){
|
function get_nowchatting(){
|
||||||
global $I, $P;
|
global $I, $db;
|
||||||
parse_sessions();
|
parse_sessions();
|
||||||
echo sprintf($I['curchat'], count($P)).'<br>';
|
$stmt=$db->query('SELECT nickname, style FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 AND incognito=0 ORDER BY status DESC, lastpost DESC;');
|
||||||
foreach($P as $user){
|
$users=$stmt->fetchAll();
|
||||||
|
echo sprintf($I['curchat'], count($users)).'<br>';
|
||||||
|
foreach($users as $user){
|
||||||
echo style_this($user[0], $user[1]).' ';
|
echo style_this($user[0], $user[1]).' ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse_sessions(){
|
function parse_sessions(){
|
||||||
global $P, $U, $db;
|
global $U, $db;
|
||||||
// delete old sessions
|
// delete old sessions
|
||||||
$time=time();
|
$time=time();
|
||||||
$result=$db->prepare('SELECT nickname, status FROM ' . PREFIX . 'sessions WHERE (status<=2 AND lastpost<(?-60*(SELECT value FROM ' . PREFIX . "settings WHERE setting='guestexpire'))) OR (status>2 AND lastpost<(?-60*(SELECT value FROM " . PREFIX . "settings WHERE setting='memberexpire')));");
|
$result=$db->prepare('SELECT nickname, status FROM ' . PREFIX . 'sessions WHERE (status<=2 AND lastpost<(?-60*(SELECT value FROM ' . PREFIX . "settings WHERE setting='guestexpire'))) OR (status>2 AND lastpost<(?-60*(SELECT value FROM " . PREFIX . "settings WHERE setting='memberexpire')));");
|
||||||
@ -2334,19 +2353,6 @@ function parse_sessions(){
|
|||||||
$U=$tmp;
|
$U=$tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// load other sessions
|
|
||||||
$P=array();
|
|
||||||
if(isSet($U['nickname'])){
|
|
||||||
$stmt=$db->prepare('SELECT nickname, style, status, incognito FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 AND nickname NOT IN (SELECT ign FROM '. PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM '. PREFIX . 'ignored WHERE ign=?) ORDER BY status DESC, lastpost DESC;');
|
|
||||||
$stmt->execute([$U['nickname'], $U['nickname']]);
|
|
||||||
}else{
|
|
||||||
$stmt=$db->query('SELECT nickname, style, status, incognito FROM ' . PREFIX . 'sessions WHERE entry!=0 AND status>0 ORDER BY status DESC, lastpost DESC;');
|
|
||||||
}
|
|
||||||
while($temp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
|
||||||
if(!$temp['incognito']){
|
|
||||||
$P[$temp['nickname']]=[$temp['nickname'], $temp['style'], $temp['status'], $temp['nickname']];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// member handling
|
// member handling
|
||||||
@ -2381,7 +2387,7 @@ function delete_account(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function register_guest($status, $nick){
|
function register_guest($status, $nick){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?');
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?');
|
||||||
$stmt->execute([$nick]);
|
$stmt->execute([$nick]);
|
||||||
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
@ -2391,7 +2397,6 @@ function register_guest($status, $nick){
|
|||||||
$stmt->execute(array($nick));
|
$stmt->execute(array($nick));
|
||||||
if($reg=$stmt->fetch(PDO::FETCH_ASSOC)){
|
if($reg=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
$reg['status']=$status;
|
$reg['status']=$status;
|
||||||
$P[$nick][2]=$status;
|
|
||||||
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=? WHERE session=?;');
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=? WHERE session=?;');
|
||||||
$stmt->execute(array($reg['status'], $reg['session']));
|
$stmt->execute(array($reg['status'], $reg['session']));
|
||||||
}else{
|
}else{
|
||||||
@ -2408,14 +2413,19 @@ function register_guest($status, $nick){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function register_new($nick, $pass){
|
function register_new($nick, $pass){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
if(empty($nick)){
|
if(empty($nick)){
|
||||||
return '';
|
return '';
|
||||||
}elseif(isSet($P[$nick])){
|
}
|
||||||
|
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'sessions WHERE nickname=?');
|
||||||
|
$stmt->execute([$nick]);
|
||||||
|
if($stmt->fetch(PDO::FETCH_NUM)){
|
||||||
return sprintf($I['cantreg'], $nick);
|
return sprintf($I['cantreg'], $nick);
|
||||||
}elseif(!valid_nick($nick)){
|
}
|
||||||
|
if(!valid_nick($nick)){
|
||||||
return sprintf($I['invalnick'], get_setting('maxname'), get_setting('nickregex'));
|
return sprintf($I['invalnick'], get_setting('maxname'), get_setting('nickregex'));
|
||||||
}elseif(!valid_pass($pass)){
|
}
|
||||||
|
if(!valid_pass($pass)){
|
||||||
return sprintf($I['invalpass'], get_setting('minpass'), get_setting('passregex'));
|
return sprintf($I['invalpass'], get_setting('minpass'), get_setting('passregex'));
|
||||||
}
|
}
|
||||||
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'members WHERE nickname=?');
|
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'members WHERE nickname=?');
|
||||||
@ -2444,7 +2454,7 @@ function register_new($nick, $pass){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function change_status($nick, $status){
|
function change_status($nick, $status){
|
||||||
global $I, $P, $U, $db;
|
global $I, $U, $db;
|
||||||
if(empty($nick)){
|
if(empty($nick)){
|
||||||
return '';
|
return '';
|
||||||
}elseif($U['status']<=$status || !preg_match('/^[023567\-]$/', $status)){
|
}elseif($U['status']<=$status || !preg_match('/^[023567\-]$/', $status)){
|
||||||
@ -2462,9 +2472,6 @@ function change_status($nick, $status){
|
|||||||
$stmt->execute(array($nick));
|
$stmt->execute(array($nick));
|
||||||
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=1, incognito=0 WHERE nickname=?;');
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=1, incognito=0 WHERE nickname=?;');
|
||||||
$stmt->execute(array($nick));
|
$stmt->execute(array($nick));
|
||||||
if(isSet($P[$nick])){
|
|
||||||
$P[$nick][2]=1;
|
|
||||||
}
|
|
||||||
return sprintf($I['succdel'], $nick);
|
return sprintf($I['succdel'], $nick);
|
||||||
}else{
|
}else{
|
||||||
if($status<5){
|
if($status<5){
|
||||||
@ -2474,9 +2481,6 @@ function change_status($nick, $status){
|
|||||||
$stmt->execute(array($status, $old[0], $nick));
|
$stmt->execute(array($status, $old[0], $nick));
|
||||||
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=?, incognito=? WHERE nickname=?;');
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=?, incognito=? WHERE nickname=?;');
|
||||||
$stmt->execute(array($status, $old[0], $nick));
|
$stmt->execute(array($status, $old[0], $nick));
|
||||||
if(isSet($P[$nick])){
|
|
||||||
$P[$nick][2]=$status;
|
|
||||||
}
|
|
||||||
return sprintf($I['succchg'], $nick);
|
return sprintf($I['succchg'], $nick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2686,7 +2690,7 @@ function add_user_defaults(){
|
|||||||
// message handling
|
// message handling
|
||||||
|
|
||||||
function validate_input(){
|
function validate_input(){
|
||||||
global $P, $U, $db;
|
global $U, $db;
|
||||||
$inbox=false;
|
$inbox=false;
|
||||||
$maxmessage=get_setting('maxmessage');
|
$maxmessage=get_setting('maxmessage');
|
||||||
$U['message']=substr($_REQUEST['message'], 0, $maxmessage);
|
$U['message']=substr($_REQUEST['message'], 0, $maxmessage);
|
||||||
@ -2734,17 +2738,17 @@ function validate_input(){
|
|||||||
if(get_setting('disablepm')){
|
if(get_setting('disablepm')){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'members WHERE nickname=? AND eninbox!=0 AND eninbox<=? AND nickname NOT IN (SELECT nickname FROM ' . PREFIX . 'sessions WHERE incognito=0) AND nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);');
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=? AND eninbox!=0 AND eninbox<=? AND nickname NOT IN (SELECT nickname FROM ' . PREFIX . 'sessions WHERE incognito=0) AND nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);');
|
||||||
$stmt->execute(array($_REQUEST['sendto'], $U['status'], $U['nickname'], $U['nickname']));
|
$stmt->execute(array($_REQUEST['sendto'], $U['status'], $U['nickname'], $U['nickname']));
|
||||||
if($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
if($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
$P[$tmp['nickname']]=[$tmp['nickname'], $tmp['style'], $tmp['status'], $tmp['nickname']];
|
|
||||||
$inbox=true;
|
$inbox=true;
|
||||||
}
|
}
|
||||||
if(isSet($P[$_REQUEST['sendto']])){
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=? AND nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=?) AND nickname NOT IN (SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);');
|
||||||
$U['recipient']=$P[$_REQUEST['sendto']][0];
|
$stmt->execute(array($_REQUEST['sendto'], $U['nickname'], $U['nickname']));
|
||||||
$U['displayrecp']=style_this($U['recipient'], $P[$_REQUEST['sendto']][1]);
|
if($tmp || $tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
||||||
|
$U['recipient']=$_REQUEST['sendto'];
|
||||||
$U['poststatus']='9';
|
$U['poststatus']='9';
|
||||||
$U['displaysend']=sprintf(get_setting('msgsendprv'), style_this($U['nickname'], $U['style']), $U['displayrecp']);
|
$U['displaysend']=sprintf(get_setting('msgsendprv'), style_this($U['nickname'], $U['style']), style_this($U['recipient'], $tmp[0]));
|
||||||
}
|
}
|
||||||
if(empty($U['recipient'])){// nick left already or ignores us
|
if(empty($U['recipient'])){// nick left already or ignores us
|
||||||
$U['message']='';
|
$U['message']='';
|
||||||
@ -2785,22 +2789,28 @@ function apply_filter(){
|
|||||||
$U['displaysend']=substr($U['displaysend'], 0, -3);
|
$U['displaysend']=substr($U['displaysend'], 0, -3);
|
||||||
$U['message']=preg_replace("~^/me~i", '', $U['message']);
|
$U['message']=preg_replace("~^/me~i", '', $U['message']);
|
||||||
}
|
}
|
||||||
$U['message']=preg_replace_callback('/\@([a-z0-9]{1,})/i', function ($matched){
|
$U['message']=preg_replace_callback('/\@([^\s]+)/i', function ($matched){
|
||||||
global $P, $db;
|
global $db;
|
||||||
if(isSet($P[$matched[1]])){
|
//match case-sensitive present nicknames
|
||||||
return style_this($matched[0], $P[$matched[1]][1]);
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=?;');
|
||||||
|
$stmt->execute([$matched[1]]);
|
||||||
|
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
|
return style_this($matched[0], $tmp[0]);
|
||||||
}
|
}
|
||||||
$nick=strtolower($matched[1]);
|
$nick=strtolower($matched[1]);
|
||||||
foreach($P as $user){
|
//match case-insensitive present nicknames
|
||||||
if(strtolower($user[0])===$nick){
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE LOWER(nickname)=?;');
|
||||||
return style_this($matched[0], $user[1]);
|
$stmt->execute([$nick]);
|
||||||
}
|
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
|
return style_this($matched[0], $tmp[0]);
|
||||||
}
|
}
|
||||||
|
//match case-sensitive members
|
||||||
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;');
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;');
|
||||||
$stmt->execute([$matched[1]]);
|
$stmt->execute([$matched[1]]);
|
||||||
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
return style_this($matched[0], $tmp[0]);
|
return style_this($matched[0], $tmp[0]);
|
||||||
}
|
}
|
||||||
|
//match case-insensitive members
|
||||||
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=?;');
|
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=?;');
|
||||||
$stmt->execute([$nick]);
|
$stmt->execute([$nick]);
|
||||||
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
|
||||||
|
@ -289,7 +289,7 @@ $T=array(
|
|||||||
'suregmsg' => '%s ist jetzt ein registrierter Anwerber.',
|
'suregmsg' => '%s ist jetzt ein registrierter Anwerber.',
|
||||||
'kickmsg' => '%s wurde rausgeschmissen.',
|
'kickmsg' => '%s wurde rausgeschmissen.',
|
||||||
'multikickmsg' => '%s wurden rausgeschmissen.',
|
'multikickmsg' => '%s wurden rausgeschmissen.',
|
||||||
'allkickmsg' => 'Alle Chatter wurden rausgeschmissen.',
|
'allkickmsg' => 'Alle Gäste wurden rausgeschmissen.',
|
||||||
'cleanmsg' => '%s wurde geleert.',
|
'cleanmsg' => '%s wurde geleert.',
|
||||||
'sendallmsg' => '%s - ',
|
'sendallmsg' => '%s - ',
|
||||||
'sendmemmsg' => '[M] %s - ',
|
'sendmemmsg' => '[M] %s - ',
|
||||||
|
@ -289,7 +289,7 @@ $I=array(
|
|||||||
'suregmsg' => '%s is now a registered applicant.',
|
'suregmsg' => '%s is now a registered applicant.',
|
||||||
'kickmsg' => '%s has been kicked.',
|
'kickmsg' => '%s has been kicked.',
|
||||||
'multikickmsg' => '%s have been kicked.',
|
'multikickmsg' => '%s have been kicked.',
|
||||||
'allkickmsg' => 'All chatters have been kicked.',
|
'allkickmsg' => 'All guests have been kicked.',
|
||||||
'cleanmsg' => '%s has been cleaned.',
|
'cleanmsg' => '%s has been cleaned.',
|
||||||
'sendallmsg' => '%s - ',
|
'sendallmsg' => '%s - ',
|
||||||
'sendmemmsg' => '[M] %s - ',
|
'sendmemmsg' => '[M] %s - ',
|
||||||
|
Reference in New Issue
Block a user