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 ?>