5 # Part of the ScoutLib application support library 6 # Copyright 2016 Edward Almasy and Internet Scout Research Group 7 # http://scout.wisc.edu 16 # ---- PUBLIC INTERFACE -------------------------------------------------- 29 # set up database access values 30 $ClassName = get_class($this);
31 static::SetDatabaseAccessValues($ClassName);
32 $this->ItemIdColumnName = self::$ItemIdColumnNames[$ClassName];
33 $this->ItemNameColumnName = self::$ItemNameColumnNames[$ClassName];
34 $this->ItemTableName = self::$ItemTableNames[$ClassName];
37 $this->
Id = static::GetCanonicalId(
$Id);
39 # load item info from database 41 $this->DB->Query(
"SELECT * FROM `".$this->ItemTableName.
"`" 42 .
" WHERE `".$this->ItemIdColumnName.
"` = " 44 $this->ValueCache = $this->DB->FetchRow();
46 # error out if item not found in database 47 if ($this->ValueCache === FALSE)
49 throw new InvalidArgumentException(
"Attempt to load ".$ClassName
50 .
" with unknown ID (".
$Id.
").");
59 # delete item from database 60 $this->DB->Query(
"DELETE FROM `".$this->ItemTableName.
"`" 61 .
" WHERE `".$this->ItemIdColumnName.
"` = ".intval($this->
Id));
145 return $this->
UpdateValue(
"LastModifiedBy", $NewValue);
157 # check for NULL ID (usually used to indicate no value set) 163 # set up database access values 164 $ClassName = get_called_class();
165 static::SetDatabaseAccessValues($ClassName);
167 # build database query to check for item 168 $Query =
"SELECT COUNT(*) AS ItemCount" 169 .
" FROM ".self::$ItemTableNames[$ClassName]
170 .
" WHERE ".self::$ItemIdColumnNames[$ClassName].
" = ".intval(
$Id);
172 # check for item and return result to caller 174 $ItemCount =
$DB->Query($Query,
"ItemCount");
175 return ($ItemCount > 0) ? TRUE : FALSE;
179 # ---- PRIVATE INTERFACE ------------------------------------------------- 200 # set up database access values 201 $ClassName = get_called_class();
202 static::SetDatabaseAccessValues($ClassName);
204 # set up query to add item to database 205 $Query =
"INSERT INTO `".self::$ItemTableNames[$ClassName].
"`";
207 # add initial values to query if supplied 211 foreach ($Values as $Column => $Value)
213 $Assignments[] =
"`".$Column.
"` = '".addslashes($Value).
"'";
215 $Query .= implode(
", ", $Assignments);
218 # add item to database 222 # retrieve ID for newly-created item 223 $NewItemId =
$DB->LastInsertId();
226 $NewItem =
new $ClassName($NewItemId);
228 # return new item object to caller 240 if (!isset(self::$ItemIdColumnNames[$ClassName]))
242 self::$ItemIdColumnNames[$ClassName] = $ClassName.
"Id";
243 self::$ItemNameColumnNames[$ClassName] = $ClassName.
"Name";
257 return $this->DB->UpdateValue($this->ItemTableName, $ColumnName, $NewValue,
258 "`".$this->ItemIdColumnName.
"` = ".intval($this->
Id),
275 $Date =
new Date($NewValue);
276 $NewValue = $Date->FormattedForSql();
DateLastModified($NewValue=DB_NOVALUE)
Get/set when item was last modified.
static $ItemIdColumnNames
DateCreated($NewValue=DB_NOVALUE)
Get/set when item was created.
Name($NewValue=DB_NOVALUE)
Get/set name of item.
static CreateWithValues($Values)
Create a new item, using specified initial database values.
UpdateValue($ColumnName, $NewValue=DB_NOVALUE)
Convenience function to supply parameters to Database::UpdateValue().
SQL database abstraction object with smart query caching.
CreatedBy($NewValue=DB_NOVALUE)
Get/set ID of user who created the item.
static $ItemNameColumnNames
LastModifiedBy($NewValue=DB_NOVALUE)
Get/set ID of user who last modified the item.
static SetDatabaseAccessValues($ClassName)
Set the database access values (table name, ID column name, name column name) for specified class...
static Pluralize($Word)
Pluralize an English word.
Common base class for persistent items store in database.
__construct($Id)
Constructor, used to load existing items.
static ItemExists($Id)
Check whether an item exists with the specified ID.
UpdateDateValue($ColumnName, $NewValue=DB_NOVALUE)
Convenience function to supply parameters to Database::UpdateValue(), with preprocessing of new value...
static GetCanonicalId($Id)
Normalize item ID to canonical form.