Source for file HistoryExport.class.php

Documentation is available at HistoryExport.class.php

  1. <?php
  2. /**
  3.  * Class HistoryExport, exports history of the chatmessages
  4.  *
  5.  * LICENSE: CREATIVE COMMONS PUBLIC LICENSE  "Namensnennung — Nicht-kommerziell 2.0"
  6.  *
  7.  * @copyright  2009 <SEDesign />
  8.  * @license    http://creativecommons.org/licenses/by-nc/2.0/de/
  9.  * @version    $3.0.6$
  10.  * @link       http://www.sedesign.de/de_produkte_chat-v3.html
  11.  * @since      File available since Alpha 1.0
  12.  */
  13.  
  14. {
  15.  
  16.     /**
  17.     * Constructor
  18.     *
  19.     * @uses ConnectDB::sqlGet()
  20.     * @uses ConnectDB::close()
  21.     * @uses LangXml object creation
  22.     * @uses LangXml::getLang() parser method
  23.     * @return void 
  24.     */
  25.     public function __construct ()
  26.         
  27.         // call parent Constructor from class DbConectionMaker
  28.         parent::__construct()
  29.  
  30.         session_start();
  31.  
  32.         if ($_SESSION['etchat_'.$this->_prefix.'user_priv']!="admin" && $_SESSION['etchat_'.$this->_prefix.'user_priv']!="mod"return false;
  33.         
  34.         $exportFormat $_GET['format'];
  35.         
  36.         header('Expires: 0');
  37.         header('Pragma: no-cache');
  38.         header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  39.         
  40.         
  41.         $privates=false;
  42.  
  43.         if(!empty($_GET['roomid'])) {
  44.             if ($_GET['roomid']!="priv")
  45.                 $raumauswahl "AND ({$this->_prefix}etchat_messages.etchat_fid_room = ".(int)$_GET['roomid']." OR {$this->_prefix}etchat_messages.etchat_fid_room = 0)";
  46.             else 
  47.                 $privates=true;
  48.             
  49.         }
  50.         else {
  51.             $raumauswahl = "AND ({$this->_prefix}etchat_messages.etchat_fid_room = 1 OR {$this->_prefix}etchat_messages.etchat_fid_room = 0)";
  52.             $_GET['roomid']=1;
  53.         }
  54.  
  55.         if($privates)
  56.             $feld=$this->dbObj->sqlGet("
  57.             SELECT {$this->_prefix}etchat_messages.etchat_id, {$this->_prefix}etchat_user.etchat_username, {$this->_prefix}etchat_messages.etchat_text, {$this->_prefix}etchat_messages.etchat_timestamp, {$this->_prefix}etchat_rooms.etchat_roomname, {$this->_prefix}etchat_messages.etchat_privat, {$this->_prefix}etchat_messages.etchat_user_fid, {$this->_prefix}etchat_messages.etchat_text_css
  58.             FROM ({$this->_prefix}etchat_messages JOIN {$this->_prefix}etchat_rooms ON {$this->_prefix}etchat_messages.etchat_fid_room = {$this->_prefix}etchat_rooms.etchat_id_room) INNER JOIN {$this->_prefix}etchat_user ON {$this->_prefix}etchat_messages.etchat_user_fid = {$this->_prefix}etchat_user.etchat_user_id
  59.             WHERE ({$this->_prefix}etchat_messages.etchat_user_fid=".$_SESSION['etchat_'.$this->_prefix.'user_id']." AND {$this->_prefix}etchat_messages.etchat_privat>0) OR {$this->_prefix}etchat_messages.etchat_privat=".$_SESSION['etchat_'.$this->_prefix.'user_id']."
  60.             ORDER BY {$this->_prefix}etchat_messages.etchat_id DESC");
  61.         else
  62.             $feld=$this->dbObj->sqlGet("
  63.             SELECT {$this->_prefix}etchat_messages.etchat_id, {$this->_prefix}etchat_user.etchat_username, {$this->_prefix}etchat_messages.etchat_text, {$this->_prefix}etchat_messages.etchat_timestamp, {$this->_prefix}etchat_rooms.etchat_roomname, {$this->_prefix}etchat_messages.etchat_privat, {$this->_prefix}etchat_messages.etchat_user_fid, {$this->_prefix}etchat_messages.etchat_text_css
  64.             FROM ({$this->_prefix}etchat_messages LEFT JOIN {$this->_prefix}etchat_rooms ON {$this->_prefix}etchat_messages.etchat_fid_room = {$this->_prefix}etchat_rooms.etchat_id_room ".$raumauswahl.") INNER JOIN {$this->_prefix}etchat_user ON {$this->_prefix}etchat_messages.etchat_user_fid = {$this->_prefix}etchat_user.etchat_user_id
  65.             WHERE  {$this->_prefix}etchat_messages.etchat_privat=0 ".$raumauswahl."
  66.             ORDER BY {$this->_prefix}etchat_messages.etchat_id DESC");
  67.         
  68.         $this->dbObj->close();
  69.         
  70.         // create new LangXml Object
  71.         $langObj = new LangXml();
  72.         $lang=$langObj->getLang()->history_php[0];
  73.         
  74.         if ($exportFormat=="csv"){
  75.             header('Content-Type: text/csv');
  76.             header("Content-Type: application/octet-stream");
  77.             header( "Content-Disposition: attachment; filename=history.csv" );
  78.             $this->printCSV($feld$lang);
  79.         }
  80.         if ($exportFormat=="xls"){
  81.             header("Content-Type: application/vnd.ms-excel; charset=utf-8");
  82.             header( "Content-Disposition: attachment; filename=history.xls" );
  83.             $this->printXLS($feld$lang);
  84.         }
  85.         if ($exportFormat=="xml"){
  86.             header("Content-Type: text/xml");
  87.             header( "Content-Disposition: attachment; filename=history.xml" );
  88.             $this->printXML($feld$lang);
  89.         }
  90.         
  91.     }
  92.     
  93.     /**
  94.     * Creates CSV output
  95.     *
  96.     * @param Array $feld
  97.     * @param LangObj $lang
  98.     * @return bool
  99.     */
  100.     private function printCSV($feld, $lang){
  101.         
  102.         echo"ID\t".$lang->user[0]->tagData."\t".$lang->date[0]->tagData."\t".$lang->text[0]->tagData."\t".$lang->room[0]->tagData."\n";
  103.         
  104.         if (is_array($feld))
  105.             for ($a=0$a < count($feld)$a++)
  106.                 echo $feld[$a][0]."\t".html_entity_decode(strip_tags($feld[$a][1])ENT_QUOTES"UTF-8")."\t".date("d.m.Y (H:i)",$feld[$a][3])."\t".html_entity_decode(strip_tags($feld[$a][2])ENT_QUOTES"UTF-8")."\t".html_entity_decode(strip_tags($feld[$a][4])ENT_QUOTES"UTF-8")."\n";
  107.     }
  108.     
  109.     /**
  110.     * Creates XLS output
  111.     *
  112.     * @param Array $feld
  113.     * @param LangObj $lang
  114.     * @return bool
  115.     */
  116.     private function printXLS($feld, $lang){
  117.     
  118.         echo"<html>
  119.         <head>
  120.         <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />
  121.         </head>
  122.         <body>
  123.         <table border=\"1\"><tr><td>ID</td><td>".$lang->user[0]->tagData."</td><td>".$lang->date[0]->tagData."</td><td>".$lang->text[0]->tagData."</td><td>".$lang->room[0]->tagData."</td></tr>";
  124.  
  125.         if (is_array($feld)){
  126.             for ($a=0; $a < count($feld); $a++){
  127.                 echo "<tr>";
  128.                 echo "<td>".$feld[$a][0]."</td><td>".html_entity_decode(strip_tags($feld[$a][1]), ENT_QUOTES, "UTF-8")."</td><td>".date("d.m.Y (H:i)",$feld[$a][3])."</td><td>".html_entity_decode(strip_tags($feld[$a][2]), ENT_QUOTES, "UTF-8")."</td><td>".html_entity_decode(strip_tags($feld[$a][4]), ENT_QUOTES, "UTF-8")."</td>";
  129.                 echo "</tr>";
  130.             }
  131.         }
  132.         
  133.         echo"</table>
  134.         </body>
  135.         </html>";
  136.     }
  137.     
  138.     /**
  139.     * Creates XML output
  140.     *
  141.     * @param Array $feld
  142.     * @param LangObj $lang
  143.     * @return bool
  144.     */
  145.     private function printXML($feld, $lang){
  146.     
  147.         echo "<?xml version='1.0' encoding='utf-8'?>";
  148.         echo "<etchat>\n";
  149.         if (is_array($feld)){
  150.             for ($a=0; $a < count($feld); $a++){
  151.                 echo "<dataset>\n";
  152.                 echo "<id>".$feld[$a][0]."</id>\n<user>".html_entity_decode(strip_tags($feld[$a][1]), ENT_QUOTES, "UTF-8")."</user>\n<date>".date("d.m.Y (H:i)",$feld[$a][3])."</date>\n<message>".html_entity_decode(strip_tags($feld[$a][2]), ENT_QUOTES, "UTF-8")."</message>\n<room>".html_entity_decode(strip_tags($feld[$a][4]), ENT_QUOTES, "UTF-8")."</room>\n";
  153.                 echo "</dataset>\n";
  154.             }
  155.         }
  156.         echo "</etchat>";    
  157.     }
  158.     

Documentation generated on Thu, 05 May 2011 14:05:56 +0000 by phpDocumentor 1.4.3