page_begin('Chat', FALSE);
$this->nav["right"]=FALSE;
class chat extends module{
function output(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
if($session->userdata['uid']==0){
$core->message('Sorry', "Du must eingeloggt sein um zu chatten.");
//}elseif($session->userdata['betatester']==false){
//$core->message('Sorry', 'You are currently not invited to this Betatest.');
}else{
$data=chat_online();
if (!$data["chat_offline"]) {
if ($data["usercount"]==1) {
$befinden="ist";
} else {
$befinden="sind";
}
$rooms=array(array('room'=>'Lounge','selected'=>'selected="selected"'),array('room'=>'Flirt','selected'=>''),array('room'=>'Quiz','selected'=>''));
$this->tpl->assign('options',$rooms);
if($session->userdata['allow_grimdark']==0){
$this->tpl->assign('usercount',$data['usercount']);
}else{
$this->tpl->assign('usercount',$data['usercount']+$data['gdusercount']);
}
unset($data['usercount']);
unset($data['gdusercount']);
$this->tpl->assign('user', $data);
$this->tpl->assign('befinden',$befinden);
return $this->tpl->fetch('chat.tpl', 'chat_front');
}else{
$core->message('Sorry', 'Scheint so als hätte der Chat gerade Probleme. Wir kümmern uns sofort darum!',FALSE,$config['path'].'/index.php');
}
}
}
function output_in(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
if($session->userdata['uid']==0){
$core->message('Sorry', "Du must eingeloggt sein um zu chatten.");
}else{
if(isset($_POST['room']) && $_POST['room']!=""){
$rctemplate=1;
if($config['switcharoo']==1){
$result=$db->query("SELECT `new_id` FROM `" . $config["prefix"] . "switch` WHERE `uid`='".$db->escape($_POST['nick'])."'") or die($db->error());
$row=$db->fetch_array($result);
if($db->num_rows($result)>0){
$_POST['nick']=$row['new_id'];
}
}
$subs=array('1'=>'Enter','2'=>'Shift+Enter');
$ch = curl_init();
// setze die URL und andere Optionen
curl_setopt($ch, CURLOPT_URL, 'https://chat.funch.at/login?uid='.$session->userdata['uid'].'&room='.$_POST['room'].'&ip=' . $_SERVER['REMOTE_ADDR'] . '&browser=' . urlencode($_SERVER['HTTP_USER_AGENT']) . '&loginkey='.$config['LOGINKEY'].'&template='.$rctemplate);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
// führe die Aktion aus und gebe die Daten an den Browser weiterChanged VCall name back
$fh=curl_exec($ch);
//var_dump(curl_getinfo($ch));
// schließe den cURL-Handle und gebe die Systemresourcen frei
curl_close($ch);
if ($fh) {
$buffer = trim($fh);
}
if (substr($buffer, 0, 6) == "Error:") {
die("Fatal " . $buffer);
}
if (substr($buffer, 0, 8) == "blocked:") {
$time=explode(" ",$buffer);
$timeout = date("d.m.Y, H:i:s",$time[1]/1000);
$core->message('Oje...', 'Du bist vorübergehend gebannt bis: '.$timeout,FALSE,$config['path'].'/index.php');
} else {
$ooc=false;
$cookie = trim($buffer);
$result=$db->query("SELECT `name`,`color`,`submit`,`whisperwindow`,`notice` FROM `v_ptc_users` WHERE `uid`='".$session->userdata['uid']."'") or die($db->error());
while($row=$db->fetch_array($result)){
$nick=$row['name'];
$col=$row['color'];
//$bg=$row['bgmusic'];
$nc=$row['notice'];
//$ooc=$row['ooc_shown'];
$sub=$row['submit'];
$whisper=$row['whisperwindow'];
}
$meta.= '';
if($whisper=='true'){
$whtext='Füsterfenster: An';
}else{
$whtext='Füsterfenster: Aus';
}
if($ooc=='true'){
$ooctext='OOC: Shown';
}else{
$ooctext='OOC: Hidden';
}
if($col=="" || $col=="000000"){
$col=="FFFFFF";
}
if(file_exists($config['fullpath'].'/modules/rp/images/'.intval($_POST['nick']).'.small')){
$simg=':';
}else{
$simg=''.$nick.':';
}
$content = "";
$tpl->assign('cookie', $cookie);
$tpl->assign('username', $nick);
$tpl->assign('id', $_POST['nick']);
$this->titleaddon = $nick.' - ';
$tpl->assign('whtext', $whtext);
$tpl->assign('ooctext', $ooctext);
$tpl->assign('submit', $subs[$sub]);
$tpl->assign('subm', $sub);
$tpl->assign('col', $col);
$tpl->assign('simg', $simg);
$tpl->assign('port', $config['SOCK_PORT']);
//return $this->tpl->fetch('chatin.tpl','chat');
$meta.= $this->inmeta2();
$ctpl='chat_full_ws.tpl';
$core->make_page($content,TRUE,$config['fullpath'].'/modules/chat/templates/default/'.$ctpl,$config['fullpath'].'/modules/chat/templates/default/chat_header.tpl',$config['fullpath'].'/modules/chat/templates/default/chat_footer.tpl');
}
}else{
$core->message('Error!', 'something did not work!',True,$config['path'].'/chat.html',3);
}
}
}
function output_online(){
global $core, $config;
$data=chat_online();
unset($data["usercount"]);
unset($data["gdusercount"]);
if (!$data["chat_offline"]) {
$this->tpl->assign('data', $data);
return $this->tpl->fetch('online.tpl');
} else {
$core->message('Sorry', 'Der Chat ist zurzeit offline.',FALSE,$config['path'].'/index.php');
}
}
function output_editlog(){
global $session,$config,$db,$core,$meta;
$meta.= '';
$logs=$db->query("SELECT c.*, u.`username` FROM `" . $config["prefix"] . "conversations` c LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=c.`owner` WHERE c.`owner`='".$session->userdata['uid']."' AND c.`id`='".intval($_GET['id'])."'");
if($db->num_rows($logs)<=0){
$core->message('Sorry', 'This won\'t work, Punk.',FALSE,$config['path'].'/index.php');
}
while($rowl=$db->fetch_array($logs)){
$rowl['date']=date('d.m.Y, H:i',$rowl['timestamp']);
$convos[]=$rowl;
}
$shares =$db->query("SELECT u.`uid`,u.`username` FROM `" . $config["prefix"] . "conversations` c LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=c.`uid` WHERE c.`owner`='".$session->userdata['uid']."' AND c.`room`='".$db->escape($convos[0]['room'])."' AND c.`timestamp`='".$convos[0]['timestamp']."' AND c.`uid`<>c.`owner`");
while($sh=$db->fetch_array($shares)){
$share[]=$sh;
}
if($convos[0]['shared']!=''){
$this->tpl->assign('checked','checked="checked"');
$this->tpl->assign('pupl','Use this link to share this log with everyone: ');
}
$this->tpl->assign('share',$share);
$this->tpl->assign('id',intval($_GET['id']));
return $this->tpl->fetch('editlog.tpl', 'editlog');
}
function output_deletelog(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
$shares =$db->query("SELECT * FROM `" . $config["prefix"] . "conversations` WHERE `id`='".intval($_GET['id'])."'");
$rowl=$db->fetch_array($shares);
if($rowl['owner']==$session->userdata['uid']){
$did=$db->query("SELECT `id` from `" . $config["prefix"] . "conversations` WHERE `room`= '".$db->escape($rowl['room'])."' AND `timestamp`='".$rowl['timestamp']."' AND `owner`='".$session->userdata['uid']."'");
while($delid=$db->fetch_array($did)){
$ids[]=$delid['id'];
}
$sql="DELETE FROM `" . $config["prefix"] . "conversations` WHERE `id` in('".join('\',\'', $ids)."')";
$db->query($sql);
$db->query("DELETE FROM `" . $config["prefix"] . "private_logs` WHERE `cid`='".$rowl['id']."'");
}else{
$sql="DELETE FROM `" . $config["prefix"] . "conversations` WHERE `id`='".intval($_GET['id'])."' AND `uid`='".$session->userdata['uid']."'";
$db->query($sql);
}
$core->message('Deleted', 'The log was deleted.',TRUE,$config['path'].'/private.html');
}
function output_privatelogs(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
$parser=$db->query("SELECT * FROM `ptc_replacer`");
$counter = 0;
while($rowp=$db->fetch_array($parser)){
$rowp['search']=str_replace('(?i)','',$rowp['search']);
$regparser_s[$counter]="/".$rowp['search']. "/i";
$regparser_r[$counter]=$rowp['replace'];
$counter++;
}
if(!isset($_GET['user']) && !isset($_GET['key']) && !isset($_GET['id'])){
$logs=$db->query("SELECT u.`username`,c.* FROM `" . $config["prefix"] . "conversations` c LEFT JOIN `" . $config["prefix"] . "users` u ON c.`owner`=u.`uid` WHERE c.`uid`='".$session->userdata['uid']."'");
while($rowl=$db->fetch_array($logs)){
$rowl['date']=date('d.m.Y, H:i',$rowl['timestamp']);
if($rowl['owner']==$session->userdata['uid']){
$rowl['sname']='You';
}else{
$rowl['sname']=$rowl['username'];
}
$convos[]=$rowl;
}
$this->tpl->assign('convos',$convos);
return $this->tpl->fetch('privatechatlogs.tpl', 'privatechatlogs');
}
if(isset($_GET['id'])){
$sql="SELECT o.`id` as `id`,o.`timestamp`,o.`room` FROM `" . $config["prefix"] . "conversations` c LEFT JOIN `" . $config["prefix"] . "conversations` o ON c.`room`=o.`room` AND c.`timestamp`=o.`timestamp` AND o.`uid`=c.`owner` WHERE c.`id`='".intval($_GET['id'])."' AND c.`uid`='".$session->userdata['uid']."'";
$read=$db->query($sql);
}elseif(isset($_GET['user']) && isset($_GET['key'])){
$sql="SELECT c.`id` as `id`,c.`timestamp`,c.`room` FROM `" . $config["prefix"] . "users` u LEFT JOIN `" . $config["prefix"] . "conversations` c ON c.`uid`=u.`uid` AND c.`owner`=u.`uid` WHERE u.`username`='".$db->escape($_GET['user'])."' AND c.`shared`='".$db->escape($_GET['key'])."'";
$read=$db->query($sql);
}else{
$core->message('Sorry', 'I seem to be missing some vital information here.',True,$config['path'].'/index.php');
}
if($db->num_rows($read)==1){
$id=$db->fetch_array($read);
$chid=$id['id'];
}
$log=$db->query("SELECT * FROM `" . $config["prefix"] . "private_logs` WHERE `cid`='".$chid."' ORDER BY `timestamp` ASC");
while($rowl=$db->fetch_array($log)){
$rowl['date']=date('H:i:s',$rowl['timestamp']);
if(file_exists($config['fullpath'].'/modules/rp/images/'.$rowl['uid'].'.small') && $rowl['action']!='txtNarr'){
$rowl['img'] = ''; // Eyecon
}
switch($rowl['action']){
case 'txtMe':
$rowl['line']=''.$rowl['user'].' '.$rowl['text'].'';
break;
case 'txtMes':
$rowl['line']=''.$rowl['user'].'\'s '.$rowl['text'].'';
break;
case 'txtOOC':
$rowl['line']=$rowl['user'].': (('.$rowl['text'].'))';
break;
case 'txtScream':
$rowl['line']=''.$rowl['user'].' shouts: '.$rowl['text'].'';
break;
case 'txtGroan':
$rowl['line']=''.$rowl['user'].' groans: '.$rowl['text'].'';
break;
case 'txtNarr':
$rowl['line']='Narrator: '.$rowl['text'].'';
break;
default:
$rowl['line']=$rowl['user'].': '.$rowl['text'];
break;
}
$rowl['line'] = preg_replace($regparser_s, $regparser_r, $rowl['line']);
$logs[]=$rowl;
}
$this->tpl->assign('logs',$logs);
$this->tpl->assign('room',$id['room']);
$this->tpl->assign('date',date('d.m.Y, H:i',$id['timestamp']));
if($_GET['out']=='pdf'){
require_once($config['fullpath'].'/thirdparty/tcpdf/config/lang/eng.php');
require_once($config['fullpath'].'/thirdparty/tcpdf/mypdf.php');
// create new PDF document
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setFooterData($tc=array(255,255,255), $lc=array(255,255,255));
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->AddPage();
$data = $this->tpl->fetch('pdf_log.tpl', 'log_pdf'.intval($_GET['id']));
$pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $data, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);
$pdf->Output('log-'.$id['room'].'-'.date('d.m.Y, H:i',$id['timestamp']).'.pdf', 'I');
}else{
return $this->tpl->fetch('log.tpl', 'log'.intval($_GET['id']));
}
}
function output_logs(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
$specialdates=array();
if($session->userdata['uid']==0){
$core->message('Sorry', "You have to be logged in to participate.");
}else{
$date='';
$logs = array();
$cd='';
if(isset($_POST['nicks']) && $_POST['nicks']!=""){
$chars=explode(', ',$_POST['nicks']);
array_pop($chars);
$char = '\''.join ('\',\'', $chars).'\'';
$cd = ' AND `user` IN ('.$char.')';
}
if(isset($_POST['date']) && $_POST['date']!=""){
$d=$_POST['date'];
$date=' AND `timestamp` BETWEEN \''.strtotime($_POST['date']).'\' AND \''.strtotime($_POST['date'].'+1 day').'\'';
}else{
$d=date('d.m.Y');
$date=' AND `timestamp` BETWEEN \''.strtotime('today').'\' AND \''.strtotime('tomorrow').'\'';
}
$regparser_s = array();
$regparser_r = array();
$parser=$db->query("SELECT * FROM `ptc_replacer`");
$counter = 0;
while($rowp=$db->fetch_array($parser)){
$rowp['search']=str_replace('(?i)','',$rowp['search']);
$regparser_s[$counter]="/".$rowp['search']. "/i";
$regparser_r[$counter]=$rowp['replace'];
$counter++;
}
if(isset($_POST['room']) && $_POST['room']!=""){
if($_POST['room']!='Chitchat' || $session->userdata['chatrights']>=50){
$log=$db->query("SELECT * FROM `ptc_chatlog` WHERE `room`='".$db->escape($_POST['room'])."'".$date.$cd." ORDER BY `timestamp`");
while($rowl=$db->fetch_array($log)){
$rowl['date']=date('H:i:s',$rowl['timestamp']);
if(file_exists($config['fullpath'].'/modules/rp/images/'.$rowl['uid'].'.small') && $rowl['action']!='txtNarr'){
$rowl['img'] = ''; // Eyecon
}
switch($rowl['action']){
case 'txtMe':
$rowl['line']=''.$rowl['user'].' '.$rowl['text'].'';
break;
case 'txtMes':
$rowl['line']=''.$rowl['user'].'\'s '.$rowl['text'].'';
break;
case 'txtOOC':
$rowl['line']=$rowl['user'].': (('.$rowl['text'].'))';
break;
case 'txtScream':
$rowl['line']=''.$rowl['user'].' shouts: '.$rowl['text'].'';
break;
case 'txtYodel':
$rowl['line']=''.$rowl['user'].' yodles: '.$rowl['text'].'';
break;
case 'txtGroan':
$rowl['line']=''.$rowl['user'].' groans: '.$rowl['text'].'';
break;
case 'txtNarr':
$rowl['line']='Narrator: '.$rowl['text'].'';
break;
default:
$rowl['line']=$rowl['user'].': '.$rowl['text'];
break;
}
$rowl['line'] = preg_replace($regparser_s, $regparser_r, $rowl['line']);
$logs[]=$rowl;
}
}else{
$logs[]="";
}
}
$rooms='';
$result=$db->query("SELECT `room` FROM `ptc_chatlog` GROUP BY `room`");
while($row=$db->fetch_array($result)){
if($session->userdata['chatrights']<50 && $row['room']=='Chitchat'){
continue;
}
if($_POST['room']==$row['room']){
$rooms.='';
}else{
$rooms.='';
}
}
if(isset($specialdates[$_POST['date']][1])){
$this->tpl->assign('extrareason',$specialdates[$_POST['date']][0]);
$this->tpl->assign('divextra','style="padding: 3px; background: '.$specialdates[$_POST['date']][1].';"');
}
$this->tpl->assign('nicks',$_POST['nicks']);
$this->tpl->assign('date',$d);
$this->tpl->assign('rooms',$rooms);
$this->tpl->assign('logs',$logs);
return $this->tpl->fetch('chatlogs.tpl', 'chat_logs');
}
}
function output_report(){
global $session,$config,$db,$tpl,$core,$plugin,$meta;
if($session->userdata['uid']==0){
$core->message('Sorry', "You have to be logged in to participate.");
}else{
if(!$session->userdata['chatrights']>=50){
$core->message('Sorry', "Can't touch this.");
}else{
if($_GET['uid']==''){
$nreport=$db->query("SELECT r.*,u.username,u.fuid,s.fuid as `cpid`,s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` WHERE `seen`='0' ORDER BY `time` DESC");
//echo "SELECT r.*,u.username,u.fuid,c.name,s.fuid as `cpid`,s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` LEFT JOIN `" . $config["prefix"] . "rp_chars` c ON c.`id`=r.`chid` WHERE `seen`='0' ORDER BY `time` DESC";
while($rown=$db->fetch_array($nreport)){
$rown['date']=date('d.m.Y H:i:s',$rown['time']);
$nrep[]=$rown;
}
$report=$db->query("SELECT r.*,u.username,u.fuid,s.fuid as `cpid`,s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` WHERE `seen`='1' ORDER BY `time` DESC");
while($rowp=$db->fetch_array($report)){
$rowp['date']=date('d.m.Y H:i:s',$rowp['time']);
$rep[]=$rowp;
}
$tpl->assign('nrep',$nrep);
$tpl->assign('rep',$rep);
$meta.= $this->repmeta();
$content = "";
$core->make_page($content,TRUE,$config['fullpath'].'/modules/chat/templates/default/reports.tpl',$config['fullpath'].'/modules/chat/templates/default/chat_header.tpl',$config['fullpath'].'/modules/chat/templates/default/chat_footer.tpl');
}else{
//echo "SELECT r.*,u.username,u.fuid,c.name,r.fuid as `cpid`,s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` LEFT JOIN `" . $config["prefix"] . "rp_chars` c ON c.`id`=r.`chid` WHERE `seen`='0' AND r.`uid`='". intval($_GET['uid']) ."' ORDER BY `time` DESC";
$nreport=$db->query("SELECT r.*,u.username,u.fuid,s.fuid as `cpid`,s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` WHERE `seen`='0' AND r.`uid`='". intval($_GET['uid']) ."' ORDER BY `time` DESC");
while($rown=$db->fetch_array($nreport)){
$rown['date']=date('d.m.Y H:i:s',$rown['time']);
$nrep[]=$rown;
}
$report=$db->query("SELECT r.*,u.username,u.fuid,s.fuid as `cpid`, s.username as `cname` FROM `ptc_reports` r LEFT JOIN `" . $config["prefix"] . "users` u ON u.`uid`=r.`rpid` LEFT JOIN `" . $config["prefix"] . "users` s ON s.`uid`=r.`uid` WHERE `seen`='1' AND r.`uid`='". intval($_GET['uid']) ."' ORDER BY `time` DESC");
while($rowp=$db->fetch_array($report)){
$rowp['date']=date('d.m.Y H:i:s',$rowp['time']);
$rep[]=$rowp;
}
$tpl->assign('nrep',$nrep);
$tpl->assign('rep',$rep);
$meta.= $this->repmeta();
$content = "";
$core->make_page($content,TRUE,$config['fullpath'].'/modules/chat/templates/default/reports.tpl',$config['fullpath'].'/modules/chat/templates/default/chat_header.tpl',$config['fullpath'].'/modules/chat/templates/default/chat_footer.tpl');
}
}
}
}
function repmeta(){
global $yacsid,$config, $meta;
$meta.="
";
$meta.='';
return $meta;
}
function inmeta2(){
global $yacsid,$config;
$meta='';
$meta.='';
/* $meta.='';*/
$meta.="
";
return $meta;
}
function meta_editlog(){
global $config;
$meta="
";
return $meta;
}
function footer_logs(){
global $config, $footer;
$footer.="
";
return $footer;
}
function footer(){
return "";
}
function meta_logs(){
global $yacsid;
$meta="
";
return $meta;
}
}
?>