Class: DatabaseTable
- Package: saf.Database
- Author: John Luxford <lux@simian.ca>
- Copyright: Copyright (C) 2001-2003, Simian Systems Inc.
- License: http://www.sitellite.org/index/license Simian Open Software License
- Version: 1.4, 2002-01-14, $Id: Table.php,v 1.4 2007/10/06 00:06:30 lux Exp $
- Access: public
DatabaseTable is an extension of the Database class, which provides
high-level functions, such as fetchAll(), that aim to lessen the need
to type common queries out each time you use them.
Note: This class does not worry about database abstraction, since that will
be handled by subclassing the I18n class and calling its get() method on
each query automatically in the Database class.
New in 1.2:
- Added the following properties: $info, $columns, $pkey, $alt, $datefield,
$statusfield, $queryfield, $orderfield, $treefield, $accessfield,
$add_form_template, $add_form_message, $edit_form_template, and
$edit_form_message.
- Added the following methods: getInfo(), getPkey(), _makeWidget(), and
changeType().
- This class is now not accessed directly, but through the saf.Database
driver system. This is done transparently however, since table objects
are always created using the saf.Database table() method.
New in 1.4:
- Added the addFacet() method.
Usage Example
<?php
$dt = new DatabaseTable ($db, 'tablename', 'pkeycolumn');
if ($res = $dt->fetchAll ()) {
// do something with $res
} else {
echo $dt->error;
}
?>
Return to Top
Properties
$connection = ''
Contains a local copy of the database connection resource.
$path
Path to the Berkeley Database.
$mode
Mode to use when opening the database (corresponds to
the modes available to the dba_open () function.
$handler
The database implementation used (db2, db3, gdbm, etc.).
$persistent
A 1 or 0 (true or false, and true by default), specifying whether
to establish a persistent connection or not.
$transactions = 0
Boolean value denoting whether to enable transactions in the
current database.
$driver
Contains the name of the database driver being used.
$host
Contains the name of the database host.
$name
The name of the table.
$user
Contains the username used to connect to the current database.
$pass
Contains the password used to connect to the current database.
$dbd
Contains the loaded database driver.
$error
Contains the error message if there is one, or false otherwise.
$sql
The sql from the previous query, if an error occurred.
$rows
The number of rows returned by the previous query.
$lastid
Contains the lastid() of the last insert query sent to the execute()
method.
$tables = false
Contains a list of tables in the database. Set by getTables().
$pearEmu = false
$sequenceFormat = '%s_seq'
$fetchMode = DB_FETCHMODE_OBJECT
$result = ''
Contains the result identifier for the current execution.
$field = ''
Currently unused.
$_fetchModeFunctions = array ()
$typemap = array ()
Contains a key/value list of database types (regular
expressions are used here to save repeating ourselves) and their
corresponding MailForm widget types. Used internally by the drivers.
$column
Column name of the facet.
$title
Dispaly name of the facet.
$extra
Extra info about the facet.
$tableObj
DatabaseTable object.
$items = array ()
List of options in the facet.
$type = 'normal'
Type of the facet. Possible values are 'normal', 'self_ref', 'date', and 'time'.
This value is auto-determined by compile(), but can be customized as well.
$table
Table name.
$fields = array ()
Field list.
$pkey = false
The name of the primary key field. This property is also duplicated
in the $primary_key property, which is a reference to this one.
$fkey = ''
Optional name of a foreign key field, for use in simplified find() calls.
$listFields = '*'
The list of fields to return on find(). Default is '*' to return all fields.
$isAuto = true
Whether the pkey is auto-incrementing or not.
$orderBy = ''
Contains the "order by" clause value (ie. "name asc") for calls to find().
$groupBy = ''
Contains the "group by" clause value (ie. "name asc") for calls to find().
$limit = false
Contains the "limit" clause value for calls to find().
$offset = false
Contains the "offset" clause value for calls to find().
$invalid = array ()
A list of invalid fields and their corresponding error messages,
from the previous validate() call.
$usePermissions = false
Determines whether to automatically add access control to find(), count(),
and get() calls.
$multilingual = false
Enables automatic translation of items pulled from the database through
Sitellite's new multilingual capabilities.
$_cascade = array ()
This is the list of external types to cascade deletions across. In the
case of external objects, the keys are the object names and the values
are the referencing field in the external object's table. In the case
of join tables for many-to-many relationships, the keys are simply
numeric and the value is an array containing the join table name and the
name of the field referring to the current object's primary key field.
Ordinarily, these values are set automatically via the load() method,
and the relationships are defined in an INI file.
$server
The name of the server to connect to.
$port
The port to use to connect to the server.
$rdn
The rdn (username, essentially) to use to bind to
the connection.
$password
The password to use to bind to the connection.
$secure
Whether to use TLS for LDAP connections.
$resource
The current search resource.
$firstCalled
Says whether or not the first search result entry has
been returned.
$errno
Contains the error number if there is one, or false otherwise.
$connections = array ()
Connection list.
$current
Active tree root ID.
$key
Primary key field name.
$root
Root field name.
$left
Left field name.
$right
Right field name.
$order
Sorting order field name.
$level
Level field name.
$indexes = array ()
Index list.
$collection
Name of the collection PropertySet should map onto. Usually this is
the name of another database table.
$entity
ID of the item from the collection which properties should map onto.
This is usually the value of the primary key of a database record.
$db
Contains a reference to the database connection resource.
$info = false
The unparsed info from the database about this table and
its columns.
$columns = array ()
An array of MailForm widgets created based on the $info data.
$alt = ''
An alternate name to display for this table, which makes it nicer to
read for people. By default the $alt is the $name with underscores
converted to spaces and the first letter (of the first word only)
capitalized.
$datefield = ''
Contains the column to search for date values in the Sitellite CMS
database manager.
$statusfield = ''
Contains the column to search for status values in the Sitellite CMS
database manager.
$queryfield = ''
Contains the column to search for any string values in the Sitellite
CMS database manager.
$orderfield = ''
Contains the column to order search results by in the Sitellite CMS
database manager.
$treefield = ''
Contains the column that makes a self-reference (a reference to
the primary key of its own table), which can be used in the Sitellite CMS
database manager to show a tree representation of this table.
$accessfield = ''
Contains the column to search for access level values in the Sitellite
CMS database manager.
$add_form_template = ''
Contains the template to use for displaying the Add Record form
in the Sitellite CMS.
$add_form_message = ''
Contains the message to use for displaying the Add Record form
in the Sitellite CMS.
$edit_form_template = ''
Contains the template to use for displaying the Edit Record form
in the Sitellite CMS.
$edit_form_message = ''
Contains the message to use for displaying the Edit Record form
in the Sitellite CMS.
$facets = array ()
Return to Top
Methods
DatabaseTable (&$db, $name, $pkey)
Constructor method.
fetch ($keyval, $columns = '', $order = '', $ascdesc = '')
- Access: public
- Return: mixed
Creates a SELECT query based on the key given to it.
$keyval may be a value to query against the primary key column
or an associative array of values to be
placed in the WHERE clause of the SELECT query. $columns is an
optional array of columns to return. $ascdesc can be either
'asc' or 'desc'. Returns an object if the query returns a
single result (ie. for queries against the primary key column),
or an array of objects, or false.
fetchAll ($columns = '', $order = '', $ascdesc = '')
- Access: public
- Return: array
Creates a SELECT query without a WHERE clause, returning
all columns from the table. $columns is an
optional array of columns to return. $ascdesc can be either
'asc' or 'desc'. Returns an array of objects, or false on failure.
insert ($columns)
- Access: public
- Return: mixed
Creates an INSERT query from the columns provided. Returns the
lastid() of the query, or the $columns[$this->pkey] value if there is
no sequential key in this table, or false on failure.
update ($keyval, $columns)
- Access: public
- Return: boolean
Creates an UPDATE query from the $keyval and $columns provided.
Returns true if successful, false on failure.
delete ($keyval)
- Access: public
- Return: boolean
Creates an DELETE query from the key value or values provided.
getPkey ()
- Access: public
- Return: string
Gets the name of the primary key field for this table using the
results of getInfo() (see below). Used by the constructor method to
set the $pkey property if a primary key column was not specified.
Returns false on failure. This method is left entirely to the drivers
to implement, as its workings will always be database-specific.
getInfo ()
- Access: public
- Return: boolean
Gets all the info it can from the database about this table and
its columns, stores it in the $info property, and parses it into an
associative array ($columns) of MailForm widgets. This method is left
entirely to the drivers to implement, as its workings will always be
database-specific.
getRefInfo ($name, $table)
- Access: public
- Return: boolean
Uses the global $tables array (Sitellite CMS specific) to get
the primary key, referencing column, display column, and a true or false
self-reference value, when given a Ref column name and its corresponding
table. This method is left to the drivers to implement, since some of
it may be database-specific, namely the logic that the display column
should be a concatenation of the first two columns that are not of the
types Hidden, File, or Password.
_makeWidget ($col)
- Access: private
- Return: object
Takes an object with at least $name and $type properties and
converts it into a MailForm widget. Additional properties are also
transfered. Returns the new MailForm widget.
changeType ($name, $type, $extra = array ())
- Access: public
- Return: boolean
PLEASE NOTE: This method is deprecated in favour of the built-in
changeType() method in the base MF_Widget class.
Takes a widget name, a new type, and any extra properties
that should be set immediately, and translates one MailForm widget
(from the $columns list) into another type. This is the new way
to change types of columns in the columns.php configuration file
in the Sitellite CMS.
&addFacet ($column, $title, $extra = '')
- Access: public
- Return: object reference
Creates a "facet" about this widget based on one of its
columns. See saf.Database.Facet for more info about those.
Return to Top