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 -------------------------------------------------- 28 # set up database access values 29 $ClassName = get_class($this);
30 static::SetDatabaseAccessValues($ClassName);
31 $this->ItemIdColumnName = self::$ItemIdColumnNames[$ClassName];
32 $this->ItemNameColumnName = self::$ItemNameColumnNames[$ClassName];
33 $this->ItemTableName = self::$ItemTableNames[$ClassName];
36 $this->
Id = static::GetCanonicalId(
$Id);
38 # load item info from database 40 $this->DB->Query(
"SELECT * FROM `".$this->ItemTableName.
"`" 41 .
" WHERE `".$this->ItemIdColumnName.
"` = " 43 $this->ValueCache = $this->DB->FetchRow();
45 # error out if item not found in database 46 if ($this->ValueCache === FALSE)
48 throw new Exception(
"Attempt to load ".$ClassName
49 .
" with unknown ID (".
$Id.
").");
58 # delete item from database 59 $this->DB->Query(
"DELETE FROM `".$this->ItemTableName.
"`" 60 .
" WHERE `".$this->ItemIdColumnName.
"` = ".intval($this->
Id));
97 # set up database access values 98 $ClassName = get_called_class();
99 static::SetDatabaseAccessValues($ClassName);
101 # build database query to check for item 102 $Query =
"SELECT COUNT(*) AS ItemCount" 103 .
" FROM ".self::$ItemTableNames[$ClassName]
104 .
" WHERE ".self::$ItemIdColumnNames[$ClassName].
" = ".intval(
$Id);
106 # check for item and return result to caller 108 $ItemCount =
$DB->Query($Query,
"ItemCount");
109 return ($ItemCount > 0) ? TRUE : FALSE;
113 # ---- PRIVATE INTERFACE ------------------------------------------------- 134 # set up database access values 135 $ClassName = get_called_class();
136 static::SetDatabaseAccessValues($ClassName);
138 # set up query to add item to database 139 $Query =
"INSERT INTO `".self::$ItemTableNames[$ClassName].
"`";
141 # add initial values to query if supplied 145 foreach ($Values as $Column => $Value)
147 $Assignments[] =
"`".$Column.
"` = '".addslashes($Value).
"'";
149 $Query .= implode(
", ", $Assignments);
152 # add item to database 156 # retrieve ID for newly-created item 157 $NewItemId =
$DB->LastInsertId();
160 $NewItem =
new $ClassName($NewItemId);
162 # return new item object to caller 174 if (!isset(self::$ItemIdColumnNames[$ClassName]))
176 self::$ItemIdColumnNames[$ClassName] = $ClassName.
"Id";
177 self::$ItemNameColumnNames[$ClassName] = $ClassName.
"Name";
191 return $this->DB->UpdateValue($this->ItemTableName, $ColumnName, $NewValue,
192 "`".$this->ItemIdColumnName.
"` = ".intval($this->
Id),
static $ItemIdColumnNames
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.
static $ItemNameColumnNames
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.
static GetCanonicalId($Id)
Normalize item ID to canonical form.