<?php
##### Reactie systeem ######################
/*
Auteur: Gijs Middelkamp
Email: gkwmiddelkamp@gmail.com
Type reactie systeem:
Dit systeem is gebouwd om reacties te kunnen toevoegen aan (nieuws)berichten.
Hoe het te gebruiken?
Om het reactie syateem te gebruiken, is het enige wat er moet gebeuren:
- De instellingen goed zetten.
- de functies ergens oproepen, en de rest wordt voor gezorgd dor de functies zelf.
Lijst van functies:
- showUbbVeld($formnaam,$textveld);
Deze functie laat een tabel zien waarmee gemakkelijk de beschikbare BBcodes ingevoerd kan worden. De variabele $formnaam verwijst naar de naam van het formulier waar het textveld ($textveld) in staat, waar de BBcodes in moeten komen te staan.
- vervangUbb();
Vervangt bij het weergeven van de reacties de BBcodes door HTML tags.
- haal_num_reacties($id);
Dit weergeeft een getal en "reactie" bij 1 reactie en "reacties" bij meerdere reacties
- show_reacties($id);
Dit geeft de reacties op een bericht uit de database aan met de id $id.
- admin_login();
Dit geeft de administratie login weer. Als er al ingelogd is als admin, geeft deze een knop weer met loguit.
- edit_msg($id);
Met deze functie kan een reactie aangepast worden met de id $id.
- delete_reactie($reactie_id);
Deze functie vraagt eerst of de reactie met de id $reactie_id echt verwijderd mag worden.
Als daar op "Ja" wordt gedrukt, dan wordt de reactie direct verwijderd uit de database.
- post_reaction($bericht_id);
Dit geeft een invoerveld weer, als die gesubmit wordt, wordt er gecontroleerd op lege velden. Als alles correct is ingevuld, ookk het email adres, dan wordt de reactie geplaatst
*/
############################################
##### MySQL tabel ##########################
/*
CREATE TABLE `reacties` (
`id` INT( 8 ) NOT NULL AUTO_INCREMENT ,
`msg_id` INT( 8 ) NOT NULL ,
`plaatser` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`bericht` TEXT NOT NULL ,
`posted` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;
Waarom deze tabel?
- Het is klein, en er zitten geen overbodige velden in.
- De naam en email velden zijn gelimiteerd tot 100 tekens om veel dataverkeer te voorkomen
*/
############################################
##### instellingen berichten-tabel #########
$tabel = "berichten"; # de tabel waar de berichten staan waar op gereageerd moet worden
$msg_id = "id"; # de veldnaam met de bericht id's
$msg_subject = "onderwerp"; # de veldnaam met de onderwerpen
############################################
##### overige instellingen #################
$adminlogin = "sima"; # De loginnaam waarmee je wilt inloggen (Niet hoofdlettergevoelig)
$adminpass = "test"; # Het wachtwoord waarmee de admin mag inloggen (niet hoofdlettergevoelig)
$max_msg = 10; # Het aantal reacties dat maximaal per pagina weergeven mag worden
############################################
##### verbinding maken met de database #####
?>
<font style
="color:#FF0000;">Geen verbinding met de database
<br
/><?
=mysql_error();?
></font
> <?
}
############################################
##### bbcode invoegen ###################
# Plaats deze functie als extraatje boven ove onder het bericht_toevoegen en edit veld
function showUbbVeld($formnaam,$textveld){
# Voor bij een bericht plaatsen: showUbbVeld("post","bericht");
# Voor bij een bericht aanpassen: showUbbVeld("pasaan","bericht");
?>
<!-- BBcode tabel -->
<table style="border:1px ridge #DDDDDD;">
<tr>
<td style="font-weight:bold;" colspan="3">BB-Code</td>
</tr>
<tr>
<td><input type="button" name="B" value="B" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[b] [/b]'" /></td>
<td><input type="button" name="U" value="U" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[u] [/u]'" /></td>
<td><input type="button" name="I" value="I" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[i] [/i]'" /></td>
</tr>
<tr>
<td><input type="button" name="url" value="URL" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[url] [/url]'" /></td>
<td><input type="button" name="img" value="img" onmouseup="<?=$formnaam;?>.<?=$textveld;?>.value+='[img] [/img]'" /></td>
<td><select name="align" onchange="<?=$formnaam;?>.<?=$textveld;?>.value += '[align=' + this.value + '] [/align]'">
<option>-----</option>
<option value="right">Rechts</option>
<option value="left">Links</option>
<option value="center">Centreren</option>
</select></td>
</tr>
<tr>
<td><select name="size" onchange="<?=$formnaam;?>.<?=$textveld;?>.value+='[size='+this.value+'] [/size]'">
<option>-----</option>
<option value="8">8px</option>
<option value="10">10px</option>
<option value="12">12px</option>
<option value="16">16px</option>
<option value="20">20px</option>
<option value="24">24px</option>
</select></td>
<td><select name="color" onchange="<?=$formnaam;?>.<?=$textveld;?>.value+='[color='+this.value+'] [/color]'">
<option>-----</option>
<option value="#FF0000">Rood</option>
<option value="#0000FF">Blauw</option>
<option value="#FFFFFF">Wit</option>
<option value="#000000">Zwart</option>
</select>
</td>
<td></td>
</tr>
</table>
<!-- einde BBcode tabel -->
<?
}
############################################
##### De UBB-codes #########################
function vervangUbb($msg){
/* bold*/ $msg = preg_replace("#\[b\](.*?)\[/b\]#si","<b>\\1</b>", $msg); /* underline*/ $msg = preg_replace("#\[u\](.*?)\[/u\]#si","<u>\\1</u>", $msg); /* italic*/ $msg = preg_replace("#\[i\](.*?)\[/i\]#si","<i>\\1</i>", $msg); /* url 1*/ $msg = preg_replace("#\[url\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\">\\1</a>", $msg); /* url 2*/ $msg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\">\\2</a>", $msg); /* imagetag*/ $msg = preg_replace("#\[img\](.*?)\[/img\]#si","<img src=\"\\1\" alt=\"\">", $msg); /* align*/ $msg = preg_replace("#\[align=(.*?)\](.*?)\[/align\]#si","<p align=\"\\1\">\\2</p>", $msg); /* size*/ $msg = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si","<font size=\"\\1\">\\2</font>", $msg); /* color*/ $msg = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color=\"\\1\">\\2</font>", $msg); return $msg;
}
############################################
##### Functie "Haal aantal reacties op" ####
function haal_num_reacties($id){
##### Deze functie kan ergens neergeplaatst worden.
##### Dan komt daar het aantal reacties te staan
echo "\$id is niet numeriek"; return;
}
else{
return $isql.($isql==1)?' reactie':' reacties';
}
}
#############################################
##### functie "Laat alle reacties met een bepaals msg_id zien" ######
function show_reacties($id){
global $max_msg,$msg_subject,$tabel,$msg_id,$adminlogin; ##### Deze functie laat alle reacties uit de tabel "reacties" zien met msg_id = $id #####
echo "\$id is niet numeriek"; return;
}
else{
if($num_msg==0){
##### er zijn geen reacties op hetgene met dit id #####
?>
<table border="1">
<tr>
<td><b>Er zijn nog geen reacties</b></td>
</tr>
</table>
<?
}
else{
##### er zijn reacties #####
$p = (isset($_GET['p']))?
$_GET['p']:1; if($num_msg>$max_msg){
$aantal_paginas = ceil($num_msg/$max_msg); ?>
<table border="2" width="500" style="margin-bottom:5px;">
<tr>
<td>
<?php
if($p!=1){
?>
<a href="<?=$_SERVER['PHP_SELF'];?>?p=1"><<</a> <a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$p-1;?>"><</a>
<?
}
?>
<select name="nav" onchange="window.location.href='<?=$_SERVER['PHP_SELF'];?>?p='+this.value">
<?
for($i=1;$i<=$aantal_paginas;$i++){
?>
<option value="<?=$i;?>" <?=($p==$i)?'selected="selected"':'';?>><?=$i;?></option>
<?
}
?>
</select>
<?php
if($p!=$aantal_paginas){
?>
<a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$p+1;?>">></a> <a href="<?=$_SERVER['PHP_SELF'];?>?p=<?=$aantal_paginas;?>">>></a>
<?
}
?>
</td>
</tr>
</table>
<?
}
?>
<table border="1" width="500" style="margin-bottom:10px;">
<tr>
<td><b><?=$subject[$msg_subject];?></b></td>
</tr>
</table>
<?
$start = ($p*$max_msg)-$max_msg;
$sql = mysql_query("SELECT * FROM `reacties` WHERE `msg_id`='".$id."' ORDER by `posted` DESC LIMIT ".$start.",".$max_msg); ?>
<table border="1" style="height:125px; width:500px; margin-bottom:10px;">
<tr>
<td style="width:100px;vertical-align:top; padding: 5px; font-weight: bold;">
<?=wordwrap($msg->plaatser,13,"<br />",10);?
></td>
<td style="width:400px;vertical-align:top; padding: 5px;"><?=vervangUbb($msg->bericht);?></td>
</tr>
<tr>
<td style="padding-left: 5px; height:10px; font-size:16px; color:#666666;" colspan="2">Geplaatst:
<?=date("d-m-y, H:i",$msg->posted);?
></td>
</tr>
</table>
<?
}
}
}
}
#######################################
##### Functie "Laat adminlogin zien" ##
function admin_login(){
global $adminlogin,$adminpass; if(!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin){ if(isset($_POST['admin_login'])){ $_SESSION['reactie_admin']=$adminlogin;
header("location:".$_SERVER['REQUEST_URI']); }
else{
?>
<font style="color: #FF0000;">Verkeerde loginnaam of wachtwoord</font>
<?
}
}
else{
?>
<form name="admin_login" action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
<table border="1">
<tr>
<td>Admin-login</td>
</tr>
<tr>
<td><input type="text" name="loginnaam" value="<loginnaam>" style="color:#999999;" onfocus="javascript:if(this.value='<loginnaam>'){this.value='';this.style.color='#000000';};" /></td>
</tr>
<tr>
<td><input type="password" name="wachtwoord" value="wachtwoord" style="color:#999999;" onfocus="javascript:if(this.value='wachtwoord'){this.value='';this.style.color='#000000';};" /></td>
</tr>
<tr>
<td><input type="submit" name="admin_login" value="Login" /></td>
</tr>
</table>
</form>
<?
}
}
else{
if(isset($_POST['admin_logout'])){ header("location:".$_SERVER['REQUEST_URI']); }
else{
?>
<form name="admin_logout" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
<table>
<tr>
<td><input type="submit" name="admin_logout" value="log uit" /></td>
</tr>
</table>
</form>
<?
}
}
}
#######################################
##### functie "Edit" ##################
function edit_msg($id){
if(!is_numeric($id)||!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin){ ?>
<font style="color:#FF0000;">Je hebt het recht niet om dit te bekijken!</font>
<?
return;
}
else{
if(isset($_POST['submit'])){ $query = "UPDATE `reacties` SET `plaatser`='".$plaatser."',`email`='".$email."',`bericht`='".$bericht."' WHERE `id`='".$id."'";
?>
<font style="color:#00CC00;">Succesvol aangepast</font>
<?
}
else{
?>
<font style="color:#FF0000;">Niet aangepast vanwege een fout</font>
<?
}
}
else{
?>
<form name="pasaan" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
<table style="border:1px ridge #DDDDDD;">
<tr>
<td style="font-weight:bold;">Gepost door:</td>
<td><input type="text" name="plaatser" value="<?=$sql->plaatser;?>" maxlength="100" /></td>
</tr>
<tr>
<td style="font-weight:bold;">Email:</td>
<td><input type="text" name="email" value="<?=$sql->email;?>" maxlength="100" /></td>
</tr>
<tr>
<td style="font-weight:bold;">Voorbeeld text:</td>
<td><?=vervangUbb($sql->bericht);?></td>
</tr>
<tr>
<td style="font-weight:bold; vertical-align:top;">Bericht:</td>
<td><textarea name="bericht" cols="25" rows="7"><?=$sql->bericht;?></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;"><input type="submit" name="submit" value="Pas aan" /></td>
</tr>
</table>
</form>
<?
}
}
}
#######################################
##### functie "verwijder een niet-correct bericht"#
function delete_reactie($reactie_id){
if(!isset($_SESSION['reactie_admin'])||$_SESSION['reactie_admin']!=$adminlogin||!is_numeric($reactie_id)){ ?>
<font style="color:#FF0000;">Je hebt geen rechten tot dit gedeelte</font>
<?
return;
}
if(isset($_POST['delete'])){ $sql = "DELETE FROM `reacties` WHERE `id`='".$reactie_id."'";
?>
<font>De reactie is succesvol verwijderd</font>
<?
}
else{
?>
<font style="color:#FF0000;">Het verwijderen is mislukt</font>
<?
}
}
else{
?>
<form name="del" method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
<table style="border:1px rigde #DDDDDD">
<tr>
<td colspan="2" style="text-align:center; font-weight:bold;">Reactie verwijderen?</td>
</tr>
<tr>
<td style="text-align:center; width:50%;"><input type="submit" name="delete" value="Ja" /></td>
<td style="text-align:center; width:50%;"><input type="button" name="return" value="Nee" onmouseup="window.location.href='<?=$_SERVER['HTTP_REFERER'];?>'" /></td>
</tr>
</table>
</form>
<?
}
}
else{
?>
<font style="color:#FF0000;">Er bestaat geen reactie met dat id</font>
<?
}
}
###################################################
##### functie "Reactie plaatsen" ######
function post_reaction($bericht_id){
# het bericht is is de id van het nieuwbericht waar op gereageerd wordt
if(isset($_POST['plaats'])&&!empty($_POST['plaatser'])&&!empty($_POST['email'])&&!empty($_POST['bericht'])){ if(!preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]{2,}\.)+([a-z0-9_-]{2,})$/i",$email)){ ?>
<font style="color:#FF0000;">Het ingevoerde email adres is niet geldig</font>
<?
return;
}
$query = "INSERT INTO `reacties` (`msg_id`,`plaatser`,`email`,`bericht`,`posted`) VALUES ('".$bericht_id."','".$plaatser."','".$email."','".$bericht."','".time()."')"; ?>
<font>Je reactie is succesvol geplaatst</font>
<?
}
else{
?>
<font style="color:#FF0000;">Je reactie is niet geplaatst</font>
<?
}
}
else{
?>
<form name="post" action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
<table style="border:1px ridge #DDDDDD;">
<tr>
<td colspan="2" style="font-weight:bold;">Reactie plaatsen</td>
</tr>
<tr>
<td style="font-weight:bold;">Naam:</td>
<td><input type="text" value="" name="plaatser" maxlength="100" /></td>
</tr>
<tr>
<td style="font-weight:bold;">Email:</td>
<td><input type="text" name="email" value="" maxlength="100" /></td>
</tr>
<tr>
<td style="font-weight:bold;">Bericht:</td>
<td><textarea name="bericht" cols="27" rows="5"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="plaats" value="Plaats bericht" /></td>
</tr>
</table>
</form>
<?
}
}
#######################################
admin_login();
edit_msg(14);
showUbbVeld("pasaan","bericht");
?>