|
|
|
@ -284,7 +284,8 @@ function print_start($class='', $ref=0, $url=''){
|
|
|
|
|
echo "<!DOCTYPE html><html><head>$H[meta_html]";
|
|
|
|
|
if(!empty($url)){
|
|
|
|
|
echo "<meta http-equiv=\"Refresh\" content=\"$ref; URL=$url\">";
|
|
|
|
|
$ref*=1000;
|
|
|
|
|
$ref+=5;//only use js if browser refresh stopped working
|
|
|
|
|
$ref*=1000;//js uses milliseconds
|
|
|
|
|
echo "<script type=\"text/javascript\">setTimeout(function(){window.location.replace(\"$url\");}, $ref);</script>";
|
|
|
|
|
}
|
|
|
|
|
if($class==='init'){
|
|
|
|
@ -299,6 +300,7 @@ function print_start($class='', $ref=0, $url=''){
|
|
|
|
|
|
|
|
|
|
function send_redirect($url){
|
|
|
|
|
global $I;
|
|
|
|
|
$url=htmlspecialchars_decode(rawurldecode($url));
|
|
|
|
|
preg_match('~^(.*)://~', $url, $match);
|
|
|
|
|
$url=preg_replace('~^(.*)://~', '', $url);
|
|
|
|
|
$escaped=htmlspecialchars($url);
|
|
|
|
@ -1304,7 +1306,7 @@ function send_messages(){
|
|
|
|
|
echo '</div><div id="chatters">';
|
|
|
|
|
print_chatters();
|
|
|
|
|
echo "</div><a style=\"position:fixed;top:0.5em;right:0.5em\" href=\"#bottom\">$I[bottom]</a><div id=\"messages\">";
|
|
|
|
|
if($U['status']>=2 && $U['eninbox']==1){
|
|
|
|
|
if($U['status']>=2 && $U['eninbox']!=0){
|
|
|
|
|
$stmt=$db->prepare('SELECT COUNT(*) FROM ' . PREFIX . 'inbox WHERE recipient=?;');
|
|
|
|
|
$stmt->execute(array($U['nickname']));
|
|
|
|
|
$tmp=$stmt->fetch(PDO::FETCH_NUM);
|
|
|
|
@ -1620,8 +1622,8 @@ function send_post(){
|
|
|
|
|
$ignored[]=$ign['ignored'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'members WHERE eninbox=1 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['nickname'], $U['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->execute(array($U['status'], $U['nickname'], $U['nickname']));
|
|
|
|
|
while($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
|
|
|
|
$P[$tmp['nickname']]=["$tmp[nickname] $I[offline]", $tmp['style'], $tmp['status']];
|
|
|
|
|
}
|
|
|
|
@ -1774,15 +1776,12 @@ function send_profile($arg=''){
|
|
|
|
|
echo '<tr><td>'.style_this("$U[nickname] : $I[fontexample]", $U['style']).'</td></tr>';
|
|
|
|
|
thr();
|
|
|
|
|
$bool_settings=['timestamps', 'nocache'];
|
|
|
|
|
if(get_setting('imgembed') && isSet($_COOKIE[COOKIENAME])){
|
|
|
|
|
if(get_setting('imgembed')){
|
|
|
|
|
$bool_settings[]='embed';
|
|
|
|
|
}
|
|
|
|
|
if($U['status']>=5 && get_setting('incognito')){
|
|
|
|
|
$bool_settings[]='incognito';
|
|
|
|
|
}
|
|
|
|
|
if($U['status']>=2 && get_setting('eninbox')){
|
|
|
|
|
$bool_settings[]='eninbox';
|
|
|
|
|
}
|
|
|
|
|
foreach($bool_settings as $setting){
|
|
|
|
|
echo '<tr><td><table class="left-table"><tr><th>'.$I[$setting].'</th><td class="right">';
|
|
|
|
|
echo "<input type=\"checkbox\" name=\"$setting\" id=\"$setting\" value=\"on\"";
|
|
|
|
@ -1792,6 +1791,32 @@ function send_profile($arg=''){
|
|
|
|
|
echo "><label for=\"$setting\"><b>$I[enabled]</b></label></td></tr></table></td></tr>";
|
|
|
|
|
thr();
|
|
|
|
|
}
|
|
|
|
|
if($U['status']>=2 && get_setting('eninbox')){
|
|
|
|
|
echo "<tr><td><table class=\"left-table\"><tr><th>$I[eninbox]</th><td class=\"right\">";
|
|
|
|
|
echo "<select name=\"eninbox\" id=\"eninbox\">";
|
|
|
|
|
echo '<option value="0"';
|
|
|
|
|
if($U['eninbox']==0){
|
|
|
|
|
echo ' selected';
|
|
|
|
|
}
|
|
|
|
|
echo ">$I[disabled]</option>";
|
|
|
|
|
echo '<option value="1"';
|
|
|
|
|
if($U['eninbox']==1){
|
|
|
|
|
echo ' selected';
|
|
|
|
|
}
|
|
|
|
|
echo ">$I[eninall]</option>";
|
|
|
|
|
echo '<option value="3"';
|
|
|
|
|
if($U['eninbox']==3){
|
|
|
|
|
echo ' selected';
|
|
|
|
|
}
|
|
|
|
|
echo ">$I[eninmem]</option>";
|
|
|
|
|
echo '<option value="5"';
|
|
|
|
|
if($U['eninbox']==5){
|
|
|
|
|
echo ' selected';
|
|
|
|
|
}
|
|
|
|
|
echo ">$I[eninstaff]</option>";
|
|
|
|
|
echo '</select></td></tr></table></td></tr>';
|
|
|
|
|
thr();
|
|
|
|
|
}
|
|
|
|
|
echo "<tr><td><table class=\"left-table\"><tr><th>$I[tz]</th><td class=\"right\">";
|
|
|
|
|
echo "<select name=\"tz\" id=\"tz\">";
|
|
|
|
|
$tzs=[-12=>'-12', -11=>'-11', -10=>'-10', -9=>'-9', -8=>'-8', -7=>'-7', -6=>'-6', -5=>'-5', -4=>'-4', -3=>'-3', -2=>'-2', -1=>'-1', 0=>'', 1=>'+1', 2=>'+2', 3=>'+3', 4=>'+4', 5=>'+5', 6=>'+6', 7=>'+7', 8=>'+8', 9=>'+9', 10=>'+10', 11=>'+11', 12=>'+12', 13=>'+13', 14=>'+14'];
|
|
|
|
@ -2243,7 +2268,7 @@ function logout_chatter($names){
|
|
|
|
|
$stmt1->execute(array($name));
|
|
|
|
|
$stmt2->execute(array($name));
|
|
|
|
|
$stmt3->execute(array($name, $name));
|
|
|
|
|
$stmt4->execute(array($name, $name));
|
|
|
|
|
$stmt4->execute(array($name));
|
|
|
|
|
}
|
|
|
|
|
unset($P[$name]);
|
|
|
|
|
}
|
|
|
|
@ -2446,33 +2471,35 @@ function change_status($nick, $status){
|
|
|
|
|
}elseif($U['status']<=$status || !preg_match('/^[023567\-]$/', $status)){
|
|
|
|
|
return sprintf($I['cantchgstat'], $nick);
|
|
|
|
|
}
|
|
|
|
|
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'members WHERE nickname=? AND status<?;');
|
|
|
|
|
$stmt=$db->prepare('SELECT incognito FROM ' . PREFIX . 'members WHERE nickname=? AND status<?;');
|
|
|
|
|
$stmt->execute(array($nick, $U['status']));
|
|
|
|
|
if($stmt->fetch(PDO::FETCH_ASSOC)){
|
|
|
|
|
if(!$old=$stmt->fetch(PDO::FETCH_NUM)){
|
|
|
|
|
return sprintf($I['cantchgstat'], $nick);
|
|
|
|
|
}
|
|
|
|
|
if($_REQUEST['set']==='-'){
|
|
|
|
|
$stmt=$db->prepare('DELETE FROM ' . PREFIX . 'inbox WHERE recipient=?;');
|
|
|
|
|
$stmt->execute(array($nick));
|
|
|
|
|
$stmt=$db->prepare('DELETE FROM ' . PREFIX . 'members WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($nick));
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=1 WHERE nickname=?;');
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=1, incognito=0 WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($nick));
|
|
|
|
|
if(isSet($P[$nick])){
|
|
|
|
|
$P[$nick][2]=1;
|
|
|
|
|
}
|
|
|
|
|
return sprintf($I['succdel'], $nick);
|
|
|
|
|
}else{
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'members SET status=? WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($status, $nick));
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=? WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($status, $nick));
|
|
|
|
|
if($status<5){
|
|
|
|
|
$old[0]=0;
|
|
|
|
|
}
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'members SET status=?, incognito=? WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($status, $old[0], $nick));
|
|
|
|
|
$stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET status=?, incognito=? WHERE nickname=?;');
|
|
|
|
|
$stmt->execute(array($status, $old[0], $nick));
|
|
|
|
|
if(isSet($P[$nick])){
|
|
|
|
|
$P[$nick][2]=$status;
|
|
|
|
|
}
|
|
|
|
|
return sprintf($I['succchg'], $nick);
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
return sprintf($I['cantchgstat'], $nick);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function passreset($nick, $pass){
|
|
|
|
@ -2564,10 +2591,8 @@ function amend_profile(){
|
|
|
|
|
$U['tz']=$_REQUEST['tz'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(isSet($_REQUEST['eninbox'])){
|
|
|
|
|
$U['eninbox']=1;
|
|
|
|
|
}else{
|
|
|
|
|
$U['eninbox']=0;
|
|
|
|
|
if(isSet($_REQUEST['eninbox']) && $_REQUEST['eninbox']>=0 && $_REQUEST['eninbox']<=5){
|
|
|
|
|
$U['eninbox']=$_REQUEST['eninbox'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2730,8 +2755,8 @@ function validate_input(){
|
|
|
|
|
$stmt=$db->prepare('SELECT * FROM ' . PREFIX . 'ignored WHERE (ignby=? AND ign=?) OR (ignby=? AND ign=?);');
|
|
|
|
|
$stmt->execute(array($U['nickname'], $_REQUEST['sendto'], $_REQUEST['sendto'], $U['nickname']));
|
|
|
|
|
if(!$stmt->fetch(PDO::FETCH_NUM)){
|
|
|
|
|
$stmt=$db->prepare('SELECT nickname, style, status FROM ' . PREFIX . 'members WHERE eninbox=1 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['nickname'], $U['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->execute(array($U['status'], $U['nickname'], $U['nickname']));
|
|
|
|
|
while($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
|
|
|
|
|
$P[$tmp['nickname']]=[$tmp['nickname'], $tmp['style'], $tmp['status']];
|
|
|
|
|
$inboxes[$tmp['nickname']]=true;
|
|
|
|
@ -2846,7 +2871,7 @@ function apply_linkfilter(){
|
|
|
|
|
if(get_setting('forceredirect')){
|
|
|
|
|
$U['message']=preg_replace_callback('/<a href="([^"]+)" target="_blank">(.*?(?=<\/a>))<\/a>/',
|
|
|
|
|
function ($matched) use($redirect){
|
|
|
|
|
return "<a href=\"$redirect".$matched[1]."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
return "<a href=\"$redirect".rawurlencode($matched[1])."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
}
|
|
|
|
|
, $U['message']);
|
|
|
|
|
}elseif(preg_match_all('/<a href="([^"]+)" target="_blank">(.*?(?=<\/a>))<\/a>/', $U['message'], $matches)){
|
|
|
|
@ -2854,7 +2879,7 @@ function apply_linkfilter(){
|
|
|
|
|
if(!preg_match('~^http(s)?://~', $match)){
|
|
|
|
|
$U['message']=preg_replace_callback('/<a href="('.str_replace('/', '\/', $match).')\" target=\"_blank\">(.*?(?=<\/a>))<\/a>/',
|
|
|
|
|
function ($matched) use($redirect){
|
|
|
|
|
return "<a href=\"$redirect".$matched[1]."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
return "<a href=\"$redirect".rawurlencode($matched[1])."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
}
|
|
|
|
|
, $U['message']);
|
|
|
|
|
}
|
|
|
|
@ -3074,7 +3099,7 @@ function prepare_message_print(&$message, $injectRedirect, $redirect, $removeEmb
|
|
|
|
|
if($injectRedirect){
|
|
|
|
|
$message['text']=preg_replace_callback('/<a href="([^"]+)" target="_blank">(.*?(?=<\/a>))<\/a>/',
|
|
|
|
|
function ($matched) use($redirect) {
|
|
|
|
|
return "<a href=\"$redirect".$matched[1]."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
return "<a href=\"$redirect".rawurlencode($matched[1])."\" target=\"_blank\">$matched[2]</a>";
|
|
|
|
|
}
|
|
|
|
|
, $message['text']);
|
|
|
|
|
}
|
|
|
|
@ -3717,7 +3742,7 @@ function load_lang(){
|
|
|
|
|
|
|
|
|
|
function load_config(){
|
|
|
|
|
date_default_timezone_set('UTC');
|
|
|
|
|
define('VERSION', '1.19.2'); // Script version
|
|
|
|
|
define('VERSION', '1.20.1'); // Script version
|
|
|
|
|
define('DBVERSION', 23); // Database version
|
|
|
|
|
define('MSGENCRYPTED', false); // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing!
|
|
|
|
|
define('ENCRYPTKEY', 'MY_KEY'); // Encryption key for messages
|
|
|
|
|