<html>
<head><title>Foro</title>
</head>
<body>
<?php
/*
# - Nombre = gForum v1.0
# -
Autor = gOnd0
# - Este archivo contiene todas las funciones y la estructura
del foro
*/
/*
Antes de nada , tienes que crear las BDS en MYSQL.
Introduce este codigo SQL en el phpmyAdmin
CREATE TABLE foros (
id int(11) NOT NULL auto_increment,
id_padre text NOT NULL,
mensage longtext NOT
NULL,
autor text NOT NULL,
asunto text NOT NULL,
fecha text
NOT NULL,
categoria text NOT NULL,
ip text NOT NULL,
contador
text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE
TABLE `foro_categorias` (
`categoria`
VARCHAR(40) NOT NULL
);
Para insertar las
categorias tienes que hacerlo desde el phpmyAdmin
*/
# -
Funciones - #
# Se conecta a la base de
datos
function mysql_conect($host,$user,$pass,$db) {
mysql_connect('$host','$user','$pass');
mysql_select_db('$db');
}
# Inserta un mensage en la BD y
redirecciona a la pagina indicada , si no se indica redirecciona a
index.php
function insertar_mensage($mensage,$fecha,$ip,$id_padre,$autor,$asunto,$categoria,$paginaaredireccionar) {
$pagina = (empty($paginaaredireccionar)) ? 'index.php' : $paginaaredireccionar ;
$mensage
= bbcode($mensage);
mysql_query('INSERT INTO foros
(id_padre,mensage,autor,asunto,fecha,categoria,ip) values ('$id_padre','$mensage','$autor','$asunto','$fecha','$categoria','$ip') ') or die (mysql_error());
echo '<META
HTTP-EQUIV=\'refresh\' content=\'1; URL=$pagina\'>';
}
# Muestra en pantalla el mensage
insertado y sus correspondientes respuestas.
function
mostrar_mensage($id,$categoria)
{
$query = mysql_query('SELECT * FROM foros
WHERE id='$id' and categoria='$categoria'
');
if($datos = mysql_fetch_array($query) )
{
$datos['contador']++;
mysql_query('update foros set
contador='$datos[contador]' where
id='$id'');
$date = date(' H:m - d/m/y',$datos['fecha']);
echo '<table
border='1' cellpadding='0' cellspacing='0'
style='border-collapse: collapse'
bordercolor='#111111'
width='97%' id='AutoNumber1'>
<tr>
<td
width='74%' bgcolor='#339966'>'.$datos['asunto'].' - '.$datos['autor'].' Palabras: '.count(explode(' ',$datos['mensage'])).' , Caracteres : '.strlen($datos['mensage']) .', Tamaño: '.round(strlen($datos['mensage']) / 1024,2).' Kb</td>
<td width='26%' bgcolor='#C0C0C0'> '.$date.' </td>
</tr>
</table>
<table
border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse; border: 1px dotted
#FFFFFF' bordercolor='#111111'
width='97%' id='AutoNumber2' bgcolor='#FFFFFF'>
<tr>
<td width='100%'><br><p> '.$datos['mensage']
.' </p></td>
</tr>
</table>';
$num_respuestas = mysql_num_rows(mysql_query('SELECT * FROM
`foros` WHERE categoria='$categoria' and
id_padre='$id' ORDER BY `id` DESC'));
echo '
<br>
<table border='1'
cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='52%' id='AutoNumber3' bgcolor='#FF6600'>
<tr>
<td width='100%'>Total Respuestas
'.$num_respuestas.'</td>
</tr>
</table>
<br>';
if($num_respuestas == '0')
{
echo 'Aun no hay respuestas
:-( ';
} else {
$resp =
mysql_query('SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='$id' ORDER BY id DESC LIMIT 0,30');
while($row=mysql_fetch_array($resp))
{
$date_res = date('H:m - d/m/y',$row['fecha']);
echo ' <br><br>
<table border='0'><table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='97%' id='AutoNumber1'>
<tr>
<td
width='74%' bgcolor='#339966'>'.$row['asunto'].' - '.$row['autor'].' Palabras: '.count(explode(' ',$row['mensage'])).' , Caracteres : '.strlen($row['mensage']) .', Tamaño: '.round(strlen($row['mensage']) / 1024,2).' Kb </td>
<td width='26%' bgcolor='#C0C0C0'>A las '.$date_res.'</td>
</tr>
</table>
<table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse; border: 1px dotted
#FFFFFF' bordercolor='#111111'
width='97%' id='AutoNumber2' bgcolor='#FFFFFF'>
<tr>
<td
width='100%'><br><p>'.$row['mensage'].'</p></td>
</tr>
</table>
</table>
<br>';
}
}
echo ' <br><a
href=foro.php?ac=nuevo&cat='.$categoria.'&idg='.$id.'> Responder </a>';
} else
{
echo 'la
ID del mensage que intentas mostrar, no corresponde con ningun mensage insertado
en la categoria '. $categoria .'';
}
}
# Muestra todos los mensages insertados a
una categoria
function
mostrar_mensages($categoria) {
echo '
<table width='515' border='0' >
<tr bgcolor='#003399'>
<td align='center' width='334'>
<p align='left'><font color='#FFFFFF'>Mensage</font></td>
<td align='center' width='76'><font color='#FFFFFF'>Por</font></td>
<td align='center' width='91'><font color='#FFFFFF'>Lecturas</font></td>
<td align='center' width='91'><font color='#FFFFFF'>Repuestas</font></td>
</tr>';
$query = mysql_query('SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='0' ORDER BY `id` DESC');
if(mysql_num_rows($query) == 0)
{
echo '<p><td>No hay mensajes Insertados
en nuestra Base de datos.</td></tr></table>' ;
exit();
} else
{
while($row=mysql_fetch_array($query))
{
$respuestas_mensage = mysql_num_rows(mysql_query('SELECT * FROM
`foros` WHERE categoria='$categoria' and
id_padre='{$row['id']}' ORDER BY `id` DESC'));
$respuestas_mensage = (empty($respuestas_mensage)) ? 0 :
$respuestas_mensage;
$lecturas =
(empty($row['contador'])) ? 0 :
$row['contador'];
$link = '?ac=leer&cat=$categoria&id=$row[id]';
echo '<tr>
<td style='border: 1px dotted #FFFFFF'> <a href=''.$link.'' title = ''.$row['asunto'].''>
'.$row['asunto'].' </a> </td>
<td style='border: 1px dotted #FFFFFF'> '.$row['autor'].' </td>
<td
style='border: 1px dotted #FFFFFF'> '.$lecturas.'
</td>
<td style='border: 1px dotted
#FFFFFF'> '.$respuestas_mensage.'
</td>
</tr>';
}
echo '</table>';
echo
'<br><a href='?ac=nuevo&cat='.$categoria.''
title='Postea un Mensage Nuevo'>Nuevo
Mensage</a>';
}
}
# Muestra todas las
categorias
function mostrar_categorias ()
{
echo '
<table width='515' border='0' >
<tr bgcolor='#003399'>
<td align='center' width='334'>
<p align='left'><font color='#FFFFFF'>Foros</font></td>
<td align='center' width='76'><font color='#FFFFFF'>Temas</font></td>
<td align='center' width='91'><font color='#FFFFFF'>Mensages</font></td>
</tr> ';
$x = mysql_query('SELECT * FROM
`foro_categorias`');
while($row=mysql_fetch_array($x))
{
$y
= mysql_query('SELECT id from foros WHERE categoria='$row[categoria]'');
$z = mysql_query('SELECT id from foros
WHERE categoria='$row[categoria]' and
id_padre='0'');
$mensages_escritos =
mysql_num_rows($y);
$temas_escritos =
mysql_num_rows($z);
echo '<tr>
<td
style='border: 1px dotted #FFFFFF'> <a
href='foro.php?ac=ver&cat='.$row['categoria'].''>'.$row['categoria'].' </a> </td>
<td style='border: 1px dotted
#FFFFFF'> '.$temas_escritos.'</td>
<td style='border: 1px dotted
#FFFFFF'> '.$mensages_escritos.'
</td>
</tr>';
}
}
#
Muestra el Formulario para insertar imagenes
function formulario_ins_msg($categoria,$id) {
echo
'<form action='foro.php'
method='post' name='form'>
<input type='hidden' name='id_padre' value=''.$id.'' readonly size='20'>
<input type='hidden' name='categoria' value=''.$categoria.'' readonly size='20'>
<input type='hidden' name='ins_msg' value='ok' readonly size='20'>
<div >
<div align='center'>
<label>Asunto</label>
<input name='asunto' size='50' maxlength='50' type='text'>
<label><br>
Autor</label>
<input name='autor' size='50' maxlength='50' type='text'>
</div>
</div>
<p align='center'>
<label>Mensaje</label>
</p>
<div align='center'>
<p>
<label>
<textarea name='mensage' rows='9'></textarea>
</label>
</p>
<p>
<label>
</p>
</div>
<div class='b'>
<div align='center'>
<input value='Enviar
Mensaje' type='submit'>
<input
value='Borrar' type='reset'>
</div>
</div>
<div class='b'>
<div align='center'></div>
</div>
</form>';
}
function
bbcode ($texto) {
$texto = str_replace('\n\r','<br>',$texto);
$texto = str_replace('\r\n','<br>',$texto);
$texto = str_replace('\n','<br>',$texto);
$texto =
eregi_replace('\[web=([^\[]*)\]([^\[]*)\[/web\]', '<a
target=\'_blank\' href=\'\1\'>\2</a>', $texto);
$texto = eregi_replace('\[web\]([^\[]*)\[/web\]','<a target=\'_blank\' href=\'\1\'>\1</a>',$texto);
while($i < 3) {
$texto = eregi_replace('\[u\]([^\[]*)\[/u\]','<u>\1</u>', $texto);
$texto = eregi_replace('\[i\]([^\[]*)\[/i\]','<em>\1</em>', $texto);
$texto = eregi_replace('\[b\]([^\[]*)\[/b\]','<strong>\1</strong>',
$texto);
$i++;
}
return $texto;
}
function ip ()
{
if (isset($_SERVER['X_FORWARDED_FOR'])) {
$ip = $_SERVER['X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
################# - ESTRUCTURA -
#################
mysql_conect('localhost','user','password','dbname');
if(isset($_GET['ac'])) {
switch($_GET['ac']) {
case 'leer':
mostrar_mensage($_GET['id'],$_GET['cat']);
break;
case 'ver':
mostrar_mensages($_GET['cat']);
break;
case 'nuevo':
if(!isset($_GET['cat'])) { exit('Faltan
Parametros'); }
if(!isset($_GET['idg'])) { $id = 0; } else { $id = $_GET['idg']; }
formulario_ins_msg($_GET['cat'],$id);
break;
}
} else {
if($_POST['ins_msg'] ==
'ok')
{
$fecha =
time();
$ip = ip();
insertar_mensage($_POST['mensage'],$fecha,$ip,$_POST['id_padre'],$_POST['autor'],$_POST['asunto'],$_POST['categoria'],'foro.php');
} else {
mostrar_categorias();
}
}
?>
</body>