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=''.$nick.':'; }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; } } ?>