Login   Register  
PHP Classes
elePHPant
Icontem

File: SForum_class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Wojciech Napierala  >  Simple Forum  >  SForum_class.php  >  Download  
File: SForum_class.php
Role: Class source
Content type: text/plain
Description: Class file
Class: Simple Forum
Manages and displays the posts of a forum
Author: By
Last change: changed polish word 'Gość' to english one 'Guest' and changes date displaying on main threads site (last message date) v1.3 -> v1.4
Date: 2005-01-10 11:14
Size: 8,397 bytes
 

Contents

Class file image Download
<?php

/*********************************
* SForum class v1.4
**********************************
*
* This class makes very Simle Forum.
* The forum is for everybody. There
* is no autorisation module.
* If you post message you fill
* only four inputs: title, text,
* your name or nick and e-mail.
* You do not need registration nor
* authorization just start using it.
* The class working with MySQL but in
* the near future it will spread on
* other DBs (with your help)
*
* I am looking forward your help.
*
**********************************
* How to use the class  (Quick Start)
**********************************
*
* At first create DB -> SForum.sql
*
* Include the class file
* include_once('SForum_class.php');
*
* A new object is created in the class
*
* 1. If... statment for active form
*    if (isset($_POST['submit'])) {
*        $forum->add_new_post($_POST['frm_ptitle'],$_POST['frm_text'],$_POST['frm_mail'],$_POST['frm_ip'],$_POST['frm_name'],$_POST['frm_wid']);
*    }
* 2. Display 1st message of threads or
*    all messages form thread
*    if (isset($_GET['wid'])) {
*        $forum->Show_SForum_Threads($_GET['wid']);
*        $forum->pansw = $_GET['wid'];
*    } else {
*        $forum->Show_SForum();
*        $forum->pansw = 0;
*    }
* 3. Show form w or w/o title of the
*    main thread you are answering
*    $forum->Show_frm($forum->ptitle);
*
*
**********************************
*
* @autor: Wojciech Napierała XII.2004
* @help: Ondra Marek ondra.marek@interval.cz;Pepe josegiambruno@adinet.com.uy
* @
* voytass@op.pl
*
*
* @license: GNU
**********************************
*/


class SForum {
    var 
$SFname "SForum";
    var 
$ptitle;
    var 
$react;              // number of answers in a thread
    
var $pansw;
    var 
$title;

    
// SForum: constructor, connecting to DB
    
function SForum() {
        
$this->ptitle NULL;
        
$this->pansw 0;
        
$this->title "<TITLE>$this->SFname</TITLE>";
        print(
$this->title);
        include_once(
"config.php");  // DB Config Data
        
$pol mysql_connect($dbhost,$dbuname,$dbpass) or die ("Couldn't connect to server.<br>\n");
        
$db mysql_select_db($dbname,$pol) or die ("Couldn't connect to database.<br>\n");
    }

    
// Show_frm: displays the form
    
function Show_frm($ptitle=NULL) {
        if(!empty(
$ptitle)) {
            
$this->ptitle "Re: ".$ptitle;
        }
        
$zawartosc "\n\n<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"frm\">\n"
        
"<TABLE><TR>\n"
        
"<TD>Title:</TD><TD><INPUT TYPE=\"text\" NAME=\"frm_ptitle\" VALUE=\"$this->ptitle\" SIZE=\"65\"></TD>\n"
        
"</TR><TR>\n"
        
"<TD>Text:</TD><TD><TEXTAREA NAME=\"frm_text\" cols=\"50\" rows=\"10\"></TEXTAREA></TD>\n"
        
"</TR><TR>\n"
        
"<TD>Name or nick:</TD><TD><INPUT TYPE=\"text\" NAME=\"frm_name\" VALUE=\"\" SIZE=\"25\"></TD>\n"
        
"</TR><TR>\n"
        
"<TD>e-mail:</TD><TD><INPUT TYPE=\"text\" NAME=\"frm_mail\" VALUE=\"\" SIZE=\"25\"></TD>\n"
        
"</TR><TR>\n"
        
"<TD COLLSPAN=\"2\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Post\"></TD>\n"
        
"</tr></TABLE>\n"
        
"<INPUT TYPE=\"hidden\" NAME=\"frm_ip\" VALUE=\"".$_SERVER['REMOTE_ADDR']."\">\n"
        
"<INPUT TYPE=\"hidden\" NAME=\"frm_wid\" VALUE=\"".$this->pansw."\">\n"
        
"</FORM>\n\n";
        print(
$zawartosc);
    }

    
// Show_SFname : Show SForum name as text
    
function Show_SFname() {
        print(
"<H1>$this->SFname</H1>\n");
    }

    
// Add_new_post: Adds new record to DB
    
function Add_new_post($ptitle,$text,$mail,$ip,$name,$frm_wid) {
        if(
$ptitle=="" or $text==""){
            return;
        }
        
$this->ptitle addslashes(htmlspecialchars(trim($ptitle)));
        
$this->text addslashes(htmlspecialchars(trim($text)));

        if (
$frm_wid == 0) {
            
$zapytanie "INSERT INTO SForum (wid,for_ptitle,for_text,for_mail,for_data,for_dataw,for_ip,for_name) VALUES('$frm_wid', '$this->ptitle', '$this->text', '$mail', now(), now(), '$ip', '$name')";
            
$sql mysql_query($zapytanie) or die (mysql_error());
        } else {
            
$zapytanie "INSERT INTO SForum (wid,for_ptitle,for_text,for_mail,for_data,for_ip,for_name) VALUES('$frm_wid', '$this->ptitle', '$this->text', '$mail', now(), '$ip', '$name')";
            
$sql mysql_query($zapytanie) or die (mysql_error());
        }
        
$id mysql_insert_id();
        if (
$frm_wid == 0) {
            
$zapytanie "UPDATE SForum SET wid='$id' WHERE id='$id'";
            
#print $zapytanie;
            
$sql mysql_query($zapytanie) or die (mysql_error());
        } else {
            
$zapytanie "UPDATE SForum SET for_dataw=now() WHERE id='$frm_wid'";
            
#print $zapytanie;
            
$sql mysql_query($zapytanie) or die (mysql_error());
        }

    }

    
// Show_SForum: Displays the main message of threads
    
function Show_SForum() {
        
$sql 'SELECT * FROM SForum WHERE id=wid ORDER BY for_dataw DESC';
        
#print $sql."<br>\n";
        
$sql mysql_query($sql) or die (mysql_error());
        
$iledokumentow mysql_affected_rows();
        if (
$iledokumentow 0) {
            print(
"<TABLE BORDER=\"1\" WIDTH=\"90%\">\n");
            while (
$row mysql_fetch_array($sql)) {
                
$sql1 "SELECT COUNT(wid)-1 AS num FROM SForum WHERE wid=".$row['id']." GROUP BY wid";
                
#print $sql1."<br>\n";
                
$sql1 mysql_query($sql1) or die (mysql_error());
                
$row1 mysql_fetch_array($sql1);
                
//number of reactions
                
$this->react=$row1['num'];
                if (
$row['for_name'] == "") {
                    
$row['for_name'] = "Guest";
                }
                
$this->ptitle stripslashes($row['for_ptitle']);
                print(
"<tr><TD><A HREF=\"".$_SERVER['PHP_SELF']."?wid=".$row['id']."\">".$this->ptitle."</A></TD><TD ALIGN=\"center\">reactions:&nbsp;".$this->react."</TD><TD ALIGN=\"center\"  WIDTH=\"20%\">".$row['for_name']."</TD><TD ALIGN=\"center\"  WIDTH=\"20%\">".$row['for_dataw']."</TD></tr>\n\n");
            }
            unset(
$this->react);
            print(
"</TABLE>\n");
        } else {
            print(
"No threads<br>\n");
        }
        
$this->ptitle ""//the new thread's title is empty
    
}

    
// Show_SForum_Threads: Displays all messages of a thread
    
function Show_SForum_Threads($wid) {
        
//$this->pansw = $wid;
        
$zapytanie "SELECT * FROM SForum WHERE wid='$wid' ORDER BY for_data ASC";
        
//print $zapytanie;
        
$sql mysql_query($zapytanie) or die (mysql_error());
        
$iledokumentow mysql_affected_rows();
        if (
$iledokumentow 0) {
            print(
"<TABLE BORDER=\"1\" WIDTH=\"90%\">\n");
            while (
$row mysql_fetch_array($sql)) {
                
$this->ptitle stripslashes($row['for_ptitle']);
                
$this->text nl2br(stripslashes($row['for_text']));
                if (
$row['for_name'] == "") {
                    
$row['for_name'] = "Gość";
                }
                if (
$row['for_mail'] !== "") {
                    
$pmail "<A HREF=\"mailto:".$row['for_mail']."\">";
                    
$kmail "</a>";
                } else {
                    
$pmail NULL;
                    
$kmail NULL;
                }
                print(
"<tr><TD><b>".$this->ptitle."</b><br><div ALIGN=\"right\"><i><U>$pmail".$row['for_name']."$kmail</u> <FONT SIZE=\"1\">".$row['for_data']."</FONT></i></DIV>\n\n");
                print(
"<hr>".$this->text."<br><br></TD></tr>\n\n");
            }
            print(
"</TABLE>\n");
        } else {
            print(
"No threads<br>\n");
        }
        
$zapytanie "SELECT * FROM SForum WHERE id='$wid' LIMIT 0,1";
        
$sql mysql_query($zapytanie) or die (mysql_error());
        
$row mysql_fetch_array($sql);
        
$this->ptitle stripslashes($row['for_ptitle']);  //Re title for form
    
}

    
// Main_page: Show back-to-main link
    
function Main_page() {
        print(
"<A HREF=\"".$_SERVER['PHP_SELF']."\">Go to Main Page</A>\n");
    }
}

if (!isset(
$forum)) {
    
$forum = new SForum;
}

?>