abstract class Messaging_Object in Messaging 6.4
Same name and namespace in other branches
- 7 messaging.module \Messaging_Object
Messaging persistent object
This will be the base class for all objects that:
- Are persistent (db storage)
- Have a user account associated and language (Messaging_User_Object)
Hierarchy
- class \Messaging_Object extends \Messaging_User_Object
Expanded class hierarchy of Messaging_Object
File
- includes/
messaging_object.class.inc, line 144 - Drupal Messaging Framework - Base classes
View source
abstract class Messaging_Object extends Messaging_User_Object {
// Database properties
const DB_TABLE = '';
const DB_KEY = '';
// Deletion mark. Deleted objects will keep their id, may be needed to remove related data, but will be marked
protected $deleted = FALSE;
/**
* Constructor, with predefined array of data
*/
public function __construct($template = NULL) {
if ($template) {
foreach ($template as $key => $value) {
$this->{$key} = $value;
}
}
// If loaded from db, may need unserialize
if ($this
->key()) {
$this
->unserialize();
}
// Make sure all objects have language
if (!isset($this->language)) {
$this
->set_language();
}
}
/**
* Build object from template
*/
public static function object_build($template, $class) {
if (is_object($template) && is_a($template, $class)) {
return $template;
}
else {
// This seems to be the only way of invoking the build method of the class
return call_user_func(array(
$class,
'build',
), $template);
}
}
/**
* Get unike id key
*/
function key() {
return isset($this->{$this
->db_key()}) ? $this->{$this
->db_key()} : NULL;
}
/**
* Save to database
*/
public function save() {
if ($this
->key()) {
return $this
->update();
}
else {
return $this
->insert();
}
}
/**
* Create object in database
*/
public function insert() {
return drupal_write_record($this
->db_table(), $this);
}
/**
* Update object in database
*/
public function update() {
return drupal_write_record($this
->db_table(), $this, $this
->db_key());
}
/**
* Delete from system database
*/
public function delete() {
if ($this
->key()) {
db_query('DELETE FROM {' . $this
->db_table() . '} WHERE ' . $this
->db_key() . ' = %d', $this
->key());
//unset($this->{$this->db_key()});
$this->deleted = TRUE;
}
}
/**
* Check whether this object is an instance or just a template
*/
public function is_instance() {
return !$this->deleted && $this
->key();
}
/**
* Load object by unique key, no static caching
*/
public static function object_load($table, $key, $value, $class = NULL) {
if ($object = self::db_load($table, $key, $value)) {
return $class ? self::object_build($object, $class) : $object;
}
}
/**
* Unserialize after loading. It does nothing but can be overridden
*/
public function unserialize() {
}
/**
* Load object from DB
*/
public static function db_load($table, $key, $value) {
return db_fetch_object(db_query("SELECT * FROM {" . $table . "} WHERE {$key} = %d", $value));
}
/**
* Magic function. Set protected properties
*
* We have a problem when creating records. Serial fields are unset() by drupal_write_record
* For these fields, though they're public, when there's a __set function it is called too
*/
public function __set($name, $value) {
if ($name == $this
->db_key()) {
$this->{$name} = $value;
}
else {
parent::__set($name, $value);
}
}
// Get table name for storage
public static abstract function db_table();
// Get key field name for storage
public static abstract function db_key();
// Load from key field
public static abstract function load($key);
// Build object form template
public static abstract function build($template);
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Messaging_Object:: |
protected | property | ||
Messaging_Object:: |
abstract public static | function | 1 | |
Messaging_Object:: |
abstract public static | function | ||
Messaging_Object:: |
constant | 2 | ||
Messaging_Object:: |
public static | function | Load object from DB | |
Messaging_Object:: |
abstract public static | function | ||
Messaging_Object:: |
constant | 2 | ||
Messaging_Object:: |
public | function | Delete from system database | 1 |
Messaging_Object:: |
public | function | Create object in database | 1 |
Messaging_Object:: |
public | function | Check whether this object is an instance or just a template | |
Messaging_Object:: |
function | Get unike id key | ||
Messaging_Object:: |
abstract public static | function | 1 | |
Messaging_Object:: |
public static | function | Build object from template | |
Messaging_Object:: |
public static | function | Load object by unique key, no static caching | 1 |
Messaging_Object:: |
public | function | Save to database | |
Messaging_Object:: |
public | function | Unserialize after loading. It does nothing but can be overridden | |
Messaging_Object:: |
public | function | Update object in database | |
Messaging_Object:: |
public | function | Constructor, with predefined array of data | 1 |
Messaging_Object:: |
public | function | Magic function. Set protected properties |