Skip to content
Snippets Groups Projects
chat.class.php 4.68 KiB
Newer Older
Eric Laufer's avatar
Eric Laufer committed
<?php

class chat{
	private $db;
	private $id = 0;
	private $error = 0;
	private $meldung;
	private $post = array();
Eric Laufer's avatar
Eric Laufer committed
	const upload_folder = 'images/chat/';
	const allowed_extensions = array('png', 'jpg', 'jpeg', 'gif');
	const max_size = 5120*1024;
	const allowed_types = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
	private $filename;
	private $extension;
Eric Laufer's avatar
Eric Laufer committed
	
	function __construct(){
		global $datenbank;
		$this->db = $datenbank;
	}
	
	public function SettingSave($post){
		$this->make_array($post);
		$this->save();
		meldung($this->error,$this->meldung);
	}
	
	private function save(){
		if($this->db->update(PREFIX . CHATSE, $this->post, array("id" => 1)) == true){
			$this->meldung = CHAT_SETTING_SAVE_TRUE;
		}else{
			$this->error = 1;
			$this->meldung = CHAT_SESSTING_SAVE_FALSE;
		}
	}
	
	private function make_array($post){
		foreach($post AS $key => $value){
Eric Laufer's avatar
Eric Laufer committed
			if($key != '' && $key != 'run' && $value != ''){
Eric Laufer's avatar
Eric Laufer committed
				$this->post[$key] = $this->db->escape($value);
			}
		}
	}
	
	public function Verlauf(){
		$aus = '<ul class="list-group">';
		foreach($this->db->get_results("SELECT * FROM ". PREFIX . CHAT ." ORDER BY id DESC LIMIT 100") AS $res){
			$aus .= '
				<li class="list-group-item">
					<form method="post" action="">
					<input type="hidden" name="id" value="'.$res->id.'">
						<div class="row">
							<div class="col-md-2">'.$res->absender.'</div>
							<div class="col-md-9">'.$res->nachricht.'</div>
Eric Laufer's avatar
Eric Laufer committed
							<div class="col-md-1"><input type="submit" name="run[chat_nachricht_loeschen]" class="btn btn-danger" value="L&ouml;schen"></div>
Eric Laufer's avatar
Eric Laufer committed
						</div>
					</form>
				</li>';
		}
Eric Laufer's avatar
Eric Laufer committed
		$aus .= '</ul>';
Eric Laufer's avatar
Eric Laufer committed
		return $aus;
	}
	
	public function DeleteMessage($id){
		if(is_numeric($id['id'])){ $this->id = htmlspecialchars($id['id']);}
		$this->delete();
		meldung($this->error,$this->meldung);
	}
	
	private function delete(){
		if($this->db->delete(PREFIX . CHAT,array("id" => $this->id)) == true){
			$this->meldung = CHAT_DELETE_TRUE;
		}else{
			$this->error = 1;
			$this->meldung = CHAT_DELETE_FALSE.$this->db->error();
		}
	}
Eric Laufer's avatar
Eric Laufer committed
	
	private function CheckDateiendung(){
		if(!in_array($this->extension, self::allowed_extensions)) {
			$this->error = 1;
			$this->meldung = PICUPLOADEXTENSENFALSE;
		}
	}
	
	private function MaxSize($files){
		if($files['datei']['size'] > self::max_size) {
			$this->error = 1;
			$this->meldung = PICUPLOADMAXSIZE;
		}
	}
	
	private function ErrorFiles($files){
		if(function_exists('exif_imagetype')) { 
			$detected_type = exif_imagetype($files['datei']['tmp_name']);
			if(!in_array($detected_type, self::allowed_types)) {
				$this->error = 1;
				$this->meldung = PICUPLOADERRORFILES;
			}
		}
	}
	
	private function CheckExist(){
		if($this->db->num_rows("SELECT id FROM ". PREFIX . CHATP ." WHERE kurz = '". $this->post['kurz'] ."' ") != 0){
			$this->error = 1;
			$this->meldung = CHATSMILEYKURZEXIST;
		}
	}
	
	public function SmileyUpload($post,$files){
		$this->make_array($post);
		$this->filename = pathinfo($files['datei']['name'], PATHINFO_FILENAME);
		$this->extension = strtolower(pathinfo($files['datei']['name'], PATHINFO_EXTENSION));
		$this->CheckExist();
		if($this->error == 0) $this->CheckDateiendung();
		if($this->error == 0) $this->MaxSize($files);
		if($this->error == 0) $this->ErrorFiles($files);
		if($this->error == 0){
			$new_path = $_SERVER['DOCUMENT_ROOT'].'/'.self::upload_folder . $this->filename .'.'.$this->extension;
			move_uploaded_file($files['datei']['tmp_name'], $new_path);
			$this->db->insert(PREFIX . CHATP , array("kurz" => $this->post['kurz'], "pic" => $this->filename .'.'.$this->extension));
			$this->meldung = CHATSMILEYUPLOADTRUE;
		}
		
		meldung($this->error,$this->meldung);
	}
	
	public function SmileyAnsicht(){
		$aus = '<div class="row" style="max-height:500px; overflow:auto">';
		foreach($this->db->get_results("SELECT * FROM ". PREFIX . CHATP ." ") AS $res){
			$aus .= '
				<div class="col">
					<form method="post" action="">
						<input type="hidden" name="id" value="'. $res->id .'">
						<img src="'. IMGtoBase64 ( $res->pic, 'chat' ) .'"><br>
						<small>'. $res->kurz .'</small><br>
						<input type="submit" name="run[SmileyDelete]" value="L&ouml;schen" class="btn btn-danger btn-sm">
					</form>
				</div>
			';
		}
		$aus .= '</div>';
		return $aus;
	}
	
	public function SmileyDelete($post){
		$this->make_array($post);
		$row = $this->db->get_row("SELECT pic FROM ". PREFIX . CHATP ." WHERE id = '". $this->post['id'] ."' ");
		if($this->db->delete(PREFIX . CHATP, array("id" => $this->post['id'])) == true){
			$this->meldung = SMILEYDELETETRUE;
			unlink($_SERVER['DOCUMENT_ROOT'].'/images/chat/'. $row[0]);
		}else{
			$this->error = 1;
			$this->meldung = SMILEYDELETEFALSE;
		}
		
		meldung($this->error,$this->meldung);
	}
Eric Laufer's avatar
Eric Laufer committed
}