PHP Classes

File: guestbook.class.php

Recommend this page to a friend!
  Classes of Tom Taylor   Guestbook v1   guestbook.class.php   Download  
File: guestbook.class.php
Role: Class source
Content type: text/plain
Description: guestbook class file
Class: Guestbook v1
Post and display comments in a guestbook
Author: By
Last change: Form validation error, incorrect variable name.
Date: 17 years ago
Size: 13,938 bytes
 

Contents

Class file image Download
<?php ############################################################ /* * Guestbook Class by Tom Taylor * Theatons Website Design * http://www.theatons.com * 28th July 06 * For PHP 4.x.x * Developed using Zend Development Studio 5 */ ############################################################ class Guestbook { var $TableWidth = 690; var $TableBorder = 1; var $TableId = null; var $RowClass = null; var $TdClass = null; var $h4class = null; var $DivTitleClass = null; var $DivTimeClass = null; var $DivAuthorClass = null; var $Add_TextInputSize = 14; var $Add_TextareaSize = 400; var $Add_TextareaHeight = 150; var $MessageLimit = 1000; var $NameAlign = 'right'; var $TimeSetting = 'jS F y'; // date format for the guestbook var $GuestbookPage = ''; var $FormError = null; var $isSent = false; var $EmailsFrom = ''; var $SubmitConfirmationEmail = 'Your entry to the guestbook has been submitted. It will be reviewed before appearing on the website'; var $ConfirmMessage = 0; var $myEmail = null; function showEntrys() { $p = new Pager(); $limit = 20; $start = $p->findStart($limit); $count = mysql_num_rows(mysql_query("SELECT * FROM guestbook WHERE Verified='1' ORDER BY id DESC")); $pages = $p->findPages($count, $limit); $result = mysql_query("SELECT * FROM guestbook WHERE Verified='1' ORDER BY id DESC LIMIT ".$start.", ".$limit); $pagelist = $p->pageList($_GET['page'], $pages); echo '<h4 class="'.$this->h4class.'">Autographink Guestbook.</h4>'; echo '<table width="'.$this->TableWidth.'" id="'.$this->TableId.'" border="'.$this->TableBorder.'">'; if(isset($_GET['code'])) { $this->showCoded($_GET['code']); } echo '<tr class="'.$this->RowClass.'"><td class="'.$this->TdClass.'" colspan="2" align="right">'.$pagelist.'</td></tr>'; echo '<tr class="'.$this->RowClass.'"><td colspan="2"></td></tr>'; while($info = mysql_fetch_array($result)) { echo '<tr class="'.$this->RowClass.'">'; echo '<td class="'.$this->TdClass.'"><div class="'.$this->DivTitleClass.'">'.$this->HasWebsite($info['Website'],$info['Title']).'</div></td>'; echo '<td class="'.$this->TdClass.'"><div class="'.$this->DivTimeClass.'">'.$this->TimeFormat($info['Timestamp']).'</div></td>'; echo '</tr>'; echo '<tr class="'.$this->RowClass.'">'; echo '<td colspan="2" class="'.$this->TdClass.'">'.$this->ReturnMessage($info['Message']).'</td>'; echo '</tr>'; echo '<tr class="'.$this->RowClass.'">'; echo '<td colspan="2" class="'.$this->TdClass.'" align="'.$this->NameAlign.'"><div class="'.$this->DivAuthorClass.'">'.$this->Author($info['Email'], $info['Name']).'</div></td>'; echo '</tr>'; echo '<tr><td colspan="2" height="20"></td></tr>'; } echo '<tr class="'.$this->RowClass.'"><td class="'.$this->TdClass.'" colspan="2" align="right">'.$pagelist.'</td></tr>'; echo '<tr><td colspan="2" align="left" class="'.$this->TdClass.'"><a href="javascript:toggleLayer(\'addToGuestbook\');">Add a comment</a>'; echo '<div id="addToGuestbook" '.$this->AutoDisplayAddForm().'>'; $this->showAddForm(); echo '</div>'; echo '</td></tr>'; echo '</table>'; } // does the person have a website ? function HasWebsite($website = null, $title = null) { if($website != '') { $website = str_replace("https://", "", $website); $website = str_replace("http://", "", $website); return '<a href="http://'.$website.'" title="'.$this.'">'.$title.'</a>'; } else { return $title; } } // return the correct time format function TimeFormat($var) { return date($this->TimeSetting,$var); } // replace the linebreaks, allow p tags. function ReturnMessage($text) { $text = str_replace("\n", "<br>", $text); $text = strip_tags($text, "<p> <br>"); return $text; } // has the personal left an email ? function Author($email = null, $name = null) { if(!empty($email)) { return '<a href="mailto:'.$email.'" title="'.$name.'">'.$name.'</a>'; } else { return $name; } } function showCoded($code) { $sql = "SELECT * FROM guestbook WHERE Code='".$this->Escape($code)."'"; $res = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($res) > 0) { $info = mysql_fetch_assoc($res); echo '<form method="post" action="'.$this->GuestbookPage.'">'; echo '<tr class="'.$this->RowClass.'"><td colspan="2" class="'.$this->TdClass.'"><h4 align="center">Confirm or delete post</h4></td></tr>'; echo '<tr class="'.$this->RowClass.'">'; echo '<td class="'.$this->TdClass.'"><div class="'.$this->DivTitleClass.'">'.$this->HasWebsite($info['Website'],$info['Title']).'</div></td>'; echo '<td class="'.$this->TdClass.'"><div class="'.$this->DivTimeClass.'">'.$this->TimeFormat($info['Timestamp']).'</div></td>'; echo '</tr>'; echo '<tr class="'.$this->RowClass.'">'; echo '<td colspan="2" class="'.$this->TdClass.'">'.$this->ReturnMessage($info['Message']).'</td>'; echo '</tr>'; echo '<tr class="'.$this->RowClass.'">'; echo '<td colspan="2" class="'.$this->TdClass.'" align="'.$this->NameAlign.'"><div class="'.$this->DivAuthorClass.'">'.$this->Author($info['Email'], $info['Name']).'</div></td>'; echo '</tr>'; echo '<input type="hidden" name="Code" value="'.$info['Code'].'" />'; echo '<tr class="'.$this->RowClass.'"><td colspan="2" class="'.$this->TdClass.'">'; echo '<input type="submit" name="Delete" value="Delete" />'; echo '<input type="submit" name="Approve" value="Approve" />'; echo '</td></tr>'; echo '<tr class="'.$this->RowClass.'"><td colspan="2" height="20"></td></tr>'; } } function checkAddorDelete() { if(isset($_POST['Delete'])) { mysql_query("DELETE from guestbook WHERE Code='".$_POST['Code']."'") or die(mysql_error()); } elseif (isset($_POST['Approve'])) { mysql_query("UPDATE guestbook SET Verified='1' WHERE Code='".$_POST['Code']."'"); } } ############################################################ /* * The adding side of the guestbook */ ############################################################ function showAddForm() { echo '<h4 class="'.$this->h4class.'">Add an entry to the guestbook.</h4>'; echo '<form action="'.$this->GuestbookPage.'?add=1" method="POST">'; echo '<table cellpadding="4">'; if(isset($this->FormError)) { echo '<tr><td colspan="2><h5 align="center" style="color:red">'.$this->FormError.'</h5></td></tr>'; } if($this->isSent == false) { echo '<tr>'; echo '<td>Name*:</td>'; echo '<td><input type="text" name="Name" value="'.$this->sent('Name').'" size="'.$this->Add_TextInputSize.'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Email*:</td>'; echo '<td><input type="text" name="Email" value="'.$this->sent('Email').'" size="'.$this->Add_TextInputSize.'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Website:</td>'; echo '<td><input type="text" name="Website" value="'.$this->sent('Website').'" size="'.$this->Add_TextInputSize.'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Title*:</td>'; echo '<td><input type="text" name="Title" value="'.$this->sent('Title').'" size="'.$this->Add_TextInputSize.'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td valign="top">Message*:</td>'; echo "<td><textarea name=\"Message\" style=\"width:".$this->Add_TextareaSize."; height:".$this->Add_TextareaHeight."\" id=\"Message\" onKeyUp=\"Contar('Message','sMessage','{CHAR} characters left.',".$this->MessageLimit.");\">".$this->sent('Message')."</textarea><br /><span id=\"sMessage\">".$this->MessageLimit." characters left.</span></td>"; echo '</tr>'; echo '<tr>'; echo '<td colspan="2" align="left"><input type="submit" name="addToGuestbook" value="Add Comments" /></td>'; echo '</tr>'; // hidden fields echo '<input type="hidden" name="TimeStamp" value="'.time().'" />'; } else { echo ''; } echo '</table>'; } // value for form input fields function sent($value) { if(isset($_POST[$value])) { return $_POST[$value]; } else { return ''; } } // if the form has been submitted, set the display so you dont havt to click the link to open it function AutoDisplayAddForm() { if(isset($_GET['add'])) { return 'style="display:block;"'; } else { return; } } // form validation function CheckForm($post) { if( (isset($post['Name']) && $post['Name'] != '') && (isset($post['Title']) && $post['Title'] != '') && (isset($post['Email']) && $post['Email'] != '') && (isset($post['Message']) && $post['Message'] != '') ) { if(!$post['Email'] == "" && (!strstr($post['Email'],"@")) || !strstr($post['Email'],".")) { // the email is not empty, does contain @ and has a . - return false $this->FormError = 'Email is not valid'; return false; } return true; } else { $this->FormError = 'Please ensure all fields are filled in.'; return false;; } } // sending the emails function SendConfirmEmail() { $code = sha1($this->RandomString()); $sql = "INSERT into guestbook (TimeStamp, Email, Name, Website, Title, Message, Verified, Code) VALUES ('".$this->Escape($_POST['TimeStamp'])."', '".$this->Escape($_POST['Email'])."', '".$this->Escape($_POST['Name'])."', '".$this->Escape($_POST['Website'])."', '".$this->Escape($_POST['Title'])."', '".$this->Escape($_POST['Message'])."', '0', '".$this->Escape($code)."')"; $res = mysql_query($sql) or die(mysql_error()); $id = mysql_insert_id(); if($this->ConfirmMessage == 1) { $message = $this->SubmitConfirmationEmail; $this->email($_POST['Email'], 'Your Guestbook entry.', $message); } $message = '<h4>Guestbook Entry</h4>'; $message .= '<p>A sucessfull submission was made to the guestbook.</p> <p>Name: '.$_POST['Name'].'</p><p>Time:'.$this->TimeFormat($_POST['TimeStamp']).'</p>'; $message .= '<p><a href="'.$this->GuestbookPage.'?id='.$id.'&code='.$code.'">Click here to view ( then confirm or delete )</a></p>'; $message .= '<p>Regards, <br />Guestbook</p>'; $subject = 'Guestbook Entry'.$this->TimeFormat($_POST['TimeStamp']); if($this->email($this->myEmail, $subject, $message) == false ) { die("There was a problem sending an email to the guestbook owner"); } $this->isSent = true; } // escape the strings for sql function Escape($string) { return mysql_real_escape_string($string); } // email function function email($to, $subject, $message) { $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'To: '.$to. "\r\n"; $headers .= 'From: '.$this->EmailsFrom. "\r\n"; if(mail($to, $subject, $message, $headers)) return true; else return false; } function RandomString($length=11) { $randstr=''; srand((double)microtime()*1000000); //our array add all letters and numbers if you wish $chars = array ( 'a','b','c','d','e','f'); for ($rand = 0; $rand <= $length; $rand++) { $random = rand(0, count($chars) -1); $randstr .= $chars[$random]; } return $randstr; } ############################################################ /* * Javascript show/hide add to guestbook form */ ############################################################ function JavascriptShowHide() { ###################################################### # # * Javascript toggle layer function # * Unkown author # ###################################################### echo ' <script type="text/javascript" language="javascript"> function toggleLayer(whichLayer) { if (document.getElementById) { // this is the way the standards work var style2 = document.getElementById(whichLayer).style; style2.display = style2.display? "":"block"; } else if (document.all) { // this is the way old msie versions work var style2 = document.all[whichLayer].style; style2.display = style2.display? "":"block"; } else if (document.layers) { // this is the way nn4 works var style2 = document.layers[whichLayer].style; style2.display = style2.display? "":"block"; } } </script>'; } function JavascriptMessageLimit() { ###################################################### # # * Javascript Message Limit # * Written by Steve # ###################################################### echo " <script type=\"text/javascript\" language=\"javascript\"> function getObject(obj) { var theObj; if(document.all) { if(typeof obj==\"string\") { return document.all(obj); } else { return obj.style; } } if(document.getElementById) { if(typeof obj==\"string\") { return document.getElementById(obj); } else { return obj.style; } } return null; } function Contar(entrada,salida,texto,caracteres) { var entradaObj=getObject(entrada); var salidaObj=getObject(salida); var longitud=caracteres - entradaObj.value.length; if(longitud <= 0) { longitud=0; texto='<span class=\"disable\"> '+texto+' </span>'; entradaObj.value=entradaObj.value.substr(0,caracteres); } salidaObj.innerHTML = texto.replace(\"{CHAR}\",longitud); } </script>"; } } ?>