Search:

CWIS Developers Documentation

  • Main Page
  • Classes
  • Files
  • File List
  • File Members

Topic.php

Go to the documentation of this file.
00001 <?PHP
00002 
00003 #
00004 #   FILE:  SPT--Topic.php
00005 #
00006 #   FUNCTIONS PROVIDED:
00007 #       Topic->Topic($TopicId)
00008 #           - constructor
00009 #       Topic->TopicId()
00010 #       Topic->ForumId()
00011 #       Topic->CreatorId()
00012 #       Topic->DateCreated()
00013 #       Topic->TopicName()
00014 #       Topic->ViewCount()
00015 #       Topic->MessageCount()
00016 #       Topic->Delete()
00017 #           - methods to retrieve resource attributes
00018 #
00019 #   Part of the Scout Portal Toolkit
00020 #   Copyright 2002 Internet Scout Project
00021 #   http://scout.cs.wisc.edu
00022 #
00023 
00029 class Topic {
00030 
00031     # ---- PUBLIC INTERFACE --------------------------------------------------
00032 
00033 
00034     # Error codes for the TOPIC
00035     const OK = 0;
00036     const NONEXISTENT = 1;
00037 
00040 
00048     function Topic($TopicId = NULL )
00049     {
00050         $this->ErrorStatus = Topic::OK;
00051         # locate class in database
00052         $this->DB = new SPTDatabase();
00053         $DB =& $this->DB;
00054         # if ID supplied
00055         if ($TopicId !== NULL)
00056         {
00057             $this->TopicId = intval($TopicId);
00058             $DB->Query("SELECT * FROM Topics WHERE TopicId = ".$this->TopicId);
00059 
00060             # if row was loaded
00061             if ($DB->NumRowsSelected() > 0)
00062             {
00063                 # set attributes to values returned by database
00064                 $this->DBFields = $DB->FetchRow();
00065             }
00066             else
00067             {
00068                 $this->ErrorStatus = Topic::NONEXISTENT;
00069             }
00070         }
00071         elseif (func_num_args()==0)
00072         {
00073             # add record to database with that ID
00074             $DB->Query("INSERT INTO Topics (TopicId) VALUES (NULL)");
00075             $this->TopicId = $DB->Query("SELECT LAST_INSERT_ID()"
00076                     ." AS TopicId FROM Topics", "TopicId");
00077         }
00078         else
00079         {
00080             $this->ErrorStatus = Topic::NONEXISTENT;
00081         }
00082 
00083 
00084     }
00085 
00089     function Delete()
00090     {
00091         if ($this->ErrorStatus == Topic::OK)
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         return $Messages;
00129     }
00130 
00135     function TopicId()        {  return $this->TopicId;  }
00136 
00141     function CreatorName()
00142     {
00143         $CreatorName = new User($this->DB, (int)$this->CreatorId());
00144         return $CreatorName->Get("UserName");
00145     }
00146 
00151     function CreatorEmail()
00152     {
00153         $CreatorName = new User($this->DB, (int)$this->CreatorId());
00154         return $CreatorName->Get("EMail");
00155     }
00156 
00162     function ForumId($NewValue = DB_NOVALUE) {  return $this->UpdateValue("ForumId", $NewValue);  }
00163 
00169     function CreatorId($NewValue = DB_NOVALUE) {  return $this->UpdateValue("CreatorId", $NewValue);  }
00170 
00176     function DateCreated($NewValue = DB_NOVALUE) {  return $this->UpdateValue("DateCreated", $NewValue);  }
00177 
00183     function TopicName($NewValue = DB_NOVALUE) {  return $this->UpdateValue("TopicName", $NewValue);  }
00184 
00190     function ViewCount($NewValue = DB_NOVALUE) {  return $this->UpdateValue("ViewCount", $NewValue);  }
00191 
00197     function MessageCount($NewValue = DB_NOVALUE) {  return $this->UpdateValue("MessageCount", $NewValue);  }
00198 
00203     function GetErrorStatus() { return $this->ErrorStatus; }
00204 
00207     # ---- PRIVATE INTERFACE -------------------------------------------------
00208 
00209     private $TopicId;
00210     private $DB;
00211     private $DBFields;
00212     private $ErrorStatus;
00213 
00214     # convenience function to supply parameters to Database->UpdateValue()
00215     private function UpdateValue($FieldName, $NewValue)
00216     {
00217         if ($this->ErrorStatus == Topic::OK)
00218         {
00219             return $this->DB->UpdateValue("Topics", $FieldName, $NewValue,
00220                                           "TopicId = '".$this->TopicId."'", $this->DBFields, TRUE);
00221         }
00222         else
00223         {
00224             return NULL;
00225         }
00226     }
00227 }
00228 
00229 ?>

CWIS logo doxygen
Copyright 2010 Internet Scout