Topic.php
Go to the documentation of this file.00001 <?PHP
00002 #
00003 # FILE: Topic.php
00004 #
00005 # FUNCTIONS PROVIDED:
00006 # Topic->Topic($TopicId)
00007 # - constructor
00008 # Topic->TopicId()
00009 # Topic->ForumId()
00010 # Topic->CreatorId()
00011 # Topic->DateCreated()
00012 # Topic->TopicName()
00013 # Topic->ViewCount()
00014 # Topic->MessageCount()
00015 # Topic->Delete()
00016 # - methods to retrieve resource attributes
00017 #
00018 # Copyright 2011 Internet Scout Project
00019 # http://scout.wisc.edu/
00020 #
00021
00027 class Topic {
00028
00029 # ---- PUBLIC INTERFACE --------------------------------------------------
00030
00031
00032 # Error codes for the TOPIC
00033 const OK = 0;
00034 const NONEXISTENT = 1;
00035
00038
00046 function Topic($TopicId = NULL )
00047 {
00048 $this->ErrorStatus = Topic::OK;
00049 # locate class in database
00050 $this->DB = new SPTDatabase();
00051 $DB = $this->DB;
00052 # if ID supplied
00053 if ($TopicId !== NULL)
00054 {
00055 $this->TopicId = intval($TopicId);
00056 $DB->Query("SELECT * FROM Topics WHERE TopicId = ".$this->TopicId);
00057
00058 # if row was loaded
00059 if ($DB->NumRowsSelected() > 0)
00060 {
00061 # set attributes to values returned by database
00062 $this->DBFields = $DB->FetchRow();
00063 }
00064 else
00065 {
00066 $this->ErrorStatus = Topic::NONEXISTENT;
00067 }
00068 }
00069 elseif (func_num_args()==0)
00070 {
00071 # add record to database with that ID
00072 $DB->Query("INSERT INTO Topics (TopicId) VALUES (NULL)");
00073 $this->TopicId = $DB->Query("SELECT LAST_INSERT_ID()"
00074 ." AS TopicId FROM Topics", "TopicId");
00075 }
00076 else
00077 {
00078 $this->ErrorStatus = Topic::NONEXISTENT;
00079 }
00080 }
00081
00085 function Delete()
00086 {
00087 if ($this->ErrorStatus == Topic::OK)
00088 {
00089 # decrement the topic count for the parent forum
00090 $Forum = new Forum($this->ForumId());
00091 $Forum->TopicCount($Forum->TopicCount() - 1);
00092
00093 $this->DB->Query("Select * from Messages where ParentId = ".
00094 $this->TopicId." AND ParentType = 1");
00095
00096 # delete messages associated with this topic
00097 while ($Entry = $this->DB->FetchRow())
00098 {
00099 $Message = new Message($Entry["MessageId"]);
00100 $Message->Delete();
00101 }
00102 $this->DB->Query("DELETE FROM Topics WHERE TopicId=".$this->TopicId);
00103 }
00104 }
00105
00110
00115 function GetMessageList()
00116 {
00117 $Messages = array();
00118
00119 $this->DB->Query("Select * from Messages where ParentId = ".
00120 $this->TopicId.
00121 " AND ParentType = 1 ORDER BY DatePosted DESC");
00122
00123 # delete messages associated with this topic
00124 while ($Entry = $this->DB->FetchRow())
00125 {
00126 $Messages[$Entry["MessageId"]] = new Message($Entry["MessageId"]);
00127 }
00128
00129 return $Messages;
00130 }
00131
00136 function TopicId() { return $this->TopicId; }
00137
00142 function CreatorName()
00143 {
00144 $CreatorName = new User($this->DB, (int)$this->CreatorId());
00145 return $CreatorName->Get("UserName");
00146 }
00147
00152 function CreatorEmail()
00153 {
00154 $CreatorName = new User($this->DB, (int)$this->CreatorId());
00155 return $CreatorName->Get("EMail");
00156 }
00157
00163 function ForumId($NewValue = DB_NOVALUE) { return $this->UpdateValue("ForumId", $NewValue); }
00164
00170 function CreatorId($NewValue = DB_NOVALUE) { return $this->UpdateValue("CreatorId", $NewValue); }
00171
00177 function DateCreated($NewValue = DB_NOVALUE) { return $this->UpdateValue("DateCreated", $NewValue); }
00178
00184 function TopicName($NewValue = DB_NOVALUE) { return $this->UpdateValue("TopicName", $NewValue); }
00185
00191 function ViewCount($NewValue = DB_NOVALUE) { return $this->UpdateValue("ViewCount", $NewValue); }
00192
00198 function MessageCount($NewValue = DB_NOVALUE) { return $this->UpdateValue("MessageCount", $NewValue); }
00199
00204 function GetErrorStatus() { return $this->ErrorStatus; }
00205
00208 # ---- PRIVATE INTERFACE -------------------------------------------------
00209
00210 private $TopicId;
00211 private $DB;
00212 private $DBFields;
00213 private $ErrorStatus;
00214
00215 # convenience function to supply parameters to Database->UpdateValue()
00216 private function UpdateValue($FieldName, $NewValue)
00217 {
00218 if ($this->ErrorStatus == Topic::OK)
00219 {
00220 return $this->DB->UpdateValue("Topics", $FieldName, $NewValue,
00221 "TopicId = '".$this->TopicId."'", $this->DBFields, TRUE);
00222 }
00223 else
00224 {
00225 return NULL;
00226 }
00227 }
00228 }
00229
00230 ?>