Update status board classes to use new DatabaseObject base

Updated schema to include new views
This commit is contained in:
2011-12-19 12:21:39 +00:00
parent 6b53bf11bd
commit 8e55d57b55
6 changed files with 229 additions and 406 deletions

View File

@@ -1,87 +1,28 @@
<?php
class StatusBoard_Incident {
class StatusBoard_Incident extends StatusBoard_DatabaseObject {
protected static $table = 'incident';
protected $id;
protected $site;
protected $reference;
protected $description;
protected $start_time;
protected $estimated_end_time;
protected $actual_end_time;
protected $_db_id;
protected $_db_site;
protected $_db_reference;
protected $_db_description;
protected $_db_start_time;
protected $_db_estimated_end_time;
protected $_db_actual_end_time;
protected $current_status;
protected $current_status = null;
protected function __construct($id, $site, $reference, $description, $start_time, $estimated_end_time, $actual_end_time) {
$this->id = $id;
$this->site = $site;
$this->reference = $reference;
$this->description = $description;
$this->start_time = $start_time;
$this->estimated_end_time = $estimated_end_time;
$this->actual_end_time = $actual_end_time;
}
public static function fromDatabaseRow($row) {
return new self(
$row['id'],
$row['site'],
$row['reference'],
$row['description'],
$row['start_time'],
$row['estimated_end_time'],
$row['actual_end_time']
);
}
/**
* Load an Incident object given its ID
*
* @param int $id
* @return StatusBoard_Incident
*/
public static function fromId($id) {
$database = StatusBoard_Main::instance()->database();
$incident = self::fromDatabaseRow(
$database->selectOne('SELECT * FROM `incident` WHERE id=:id', array(
array('name' => 'id', 'value' => $id, 'type' => PDO::PARAM_INT)
)
)
);
return $incident;
}
public static function all() {
$incidents = array();
$database = StatusBoard_Main::instance()->database();
foreach ($database->selectList('SELECT * FROM `incident` WHERE `id` > 0 ORDER BY `id` DESC') as $row) {
$incidents[] = self::fromDatabaseRow($row);
}
return $incidents;
}
public static function open_for_site(StatusBoard_Site $site) {
$incidents = array();
$database = StatusBoard_Main::instance()->database();
foreach ($database->selectList('SELECT * FROM `incident_open` WHERE `site`=:site ORDER BY `id` DESC', array(
array('name' => 'site', 'value' => $site->id(), 'type' => PDO::PARAM_INT),
)) as $row) {
$incidents[] = self::fromDatabaseRow($row);
}
return $incidents;
return static::all_for('site', $site->id, 'incident_open');
}
public function currentStatus($ignore_cache = false) {
if ($this->current_status === null || $ignore_cache) {
$database = StatusBoard_Main::instance()->database();
$row = $database->selectOne('SELECT `status` FROM `incidentstatus_current` WHERE `incident`=:incident', array(
array('name' => 'incident', 'value' => $this->id(), 'type' => PDO::PARAM_INT),
array('name' => 'incident', 'value' => $this->id, 'type' => PDO::PARAM_INT),
)
);
@@ -113,65 +54,6 @@ class StatusBoard_Incident {
return $status;
}
protected function create() {
$database = StatusBoard_Main::instance()->database();
$database->insert(
'INSERT INTO `service`
(`id`, `site`, `reference`, `description`, `start_time`, `estimated_end_time`, `actual_end_time`)
VALUES(NULL, :site, :reference, :description, :start_time, :estimated_end_time, :actual_end_time)',
array(
array('name' => 'site', 'value' => $this->site, 'type' => PDO::PARAM_INT),
array('name' => 'reference', 'value' => $this->reference, 'type' => PDO::PARAM_STR),
array('name' => 'description', 'value' => $this->description, 'type' => PDO::PARAM_STR),
array('name' => 'start_time', 'value' => $this->start_time, 'type' => PDO::PARAM_INT),
array('name' => 'estimated_end_time', 'value' => $this->estimated_end_time, 'type' => PDO::PARAM_INT),
array('name' => 'actual_end_time', 'value' => $this->actual_end_time, 'type' => PDO::PARAM_INT),
)
);
$this->id = $database->lastInsertId();
}
public function delete() {
$database = StatusBoard_Main::instance()->database();
$database->update(
'DELETE FROM `incident` WHERE `id`=:id LIMIT 1',
array(
array('name' => 'id', 'value' => $this->id, 'type' => PDO::PARAM_INT),
)
);
$this->id = null;
}
public function id() {
return $this->id;
}
public function site() {
return $this->site;
}
public function reference() {
return $this->reference;
}
public function description() {
return $this->description;
}
public function start_time() {
return $this->start_time;
}
public function estimated_end_time() {
return $this->estimated_end_time;
}
public function actual_end_time() {
return $this->actual_end_time;
}
}
?>
?>

View File

@@ -1,83 +1,14 @@
<?php
class StatusBoard_IncidentStatus {
class StatusBoard_IncidentStatus extends StatusBoard_DatabaseObject {
protected static $table = 'incidentstatus';
protected $id;
protected $incident;
protected $status;
protected $ctime;
protected function __construct($id, $incident, $status, $ctime) {
$this->id = $id;
$this->incident = $incident;
$this->status = $status;
$this->ctime = $ctime;
}
/**
* Load an Incident object given its ID
*
* @param int $id
* @return StatusBoard_Incident
*/
public static function fromId($id) {
$database = StatusBoard_Main::instance()->database();
$incident_status = self::fromDatabaseRow(
$database->selectOne('SELECT * FROM `incidentstatus` WHERE id=:id', array(
array('name' => 'id', 'value' => $id, 'type' => PDO::PARAM_INT)
)
)
);
return $incident_status;
}
protected function create() {
$database = StatusBoard_Main::instance()->database();
$database->insert(
'INSERT INTO `incidentstatus`
(`id`, `incident`, `status`, `ctime`)
VALUES(NULL, :incident, :status, :ctime)',
array(
array('name' => 'incident', 'value' => $this->incident, 'type' => PDO::PARAM_INT),
array('name' => 'status', 'value' => $this->status, 'type' => PDO::PARAM_STR),
array('name' => 'ctime', 'value' => $this->ctime, 'type' => PDO::PARAM_STR),
)
);
$this->id = $database->lastInsertId();
}
public function delete() {
$database = StatusBoard_Main::instance()->database();
$database->update(
'DELETE FROM `incidentstatus` WHERE `id`=:id LIMIT 1',
array(
array('name' => 'id', 'value' => $this->id, 'type' => PDO::PARAM_INT),
)
);
$this->id = null;
}
public function id() {
return $this->id;
}
public function incident() {
return $this->incident;
}
public function status() {
return $this->status;
}
public function ctime() {
return $this->ctime;
}
protected $_db_id;
protected $_db_incident;
protected $_db_status;
protected $_db_ctime;
}
?>

View File

@@ -1,84 +1,15 @@
<?php
class StatusBoard_Service {
class StatusBoard_Service extends StatusBoard_DatabaseObject {
protected $id;
protected $name;
protected $description;
protected static $table = 'service';
protected $sites;
protected function __construct($id, $name, $description) {
$this->id = $id;
$this->name = $name;
$this->description = $description;
}
public static function fromDatabaseRow($row) {
return new self(
$row['id'],
$row['name'],
$row['description']
);
}
/**
* Load a Service object given its ID
*
* @param int $id
* @return StatusBoard_Service
*/
public static function fromId($id) {
$database = StatusBoard_Main::instance()->database();
$service = self::fromDatabaseRow(
$database->selectOne('SELECT * FROM `service` WHERE id=:id', array(
array('name' => 'id', 'value' => $id, 'type' => PDO::PARAM_INT)
)
)
);
return $service;
}
public static function all() {
$services = array();
$database = StatusBoard_Main::instance()->database();
foreach ($database->selectList('SELECT * FROM `service` WHERE `id` > 0 ORDER BY `id` DESC') as $row) {
$services[] = self::fromDatabaseRow($row);
}
return $services;
}
protected function create() {
$database = StatusBoard_Main::instance()->database();
$database->insert(
'INSERT INTO `service`
(`id`, `name`, `description`)
VALUES(NULL, :name, :description)',
array(
array('name' => 'name', 'value' => $this->name, 'type' => PDO::PARAM_STR),
array('name' => 'description', 'value' => $this->description, 'type' => PDO::PARAM_STR),
)
);
$this->id = $database->lastInsertId();
}
public function delete() {
$database = StatusBoard_Main::instance()->database();
$database->update(
'DELETE FROM `service` WHERE `id`=:id LIMIT 1',
array(
array('name' => 'id', 'value' => $this->id, 'type' => PDO::PARAM_INT),
)
);
$this->id = null;
}
protected $_db_id;
protected $_db_name;
protected $_db_description;
protected $sites = null;
public function sites($ignore_cache = false) {
if ($this->sites === null || $ignore_cache) {
$this->sites = StatusBoard_Site::all_for_service($this);
@@ -86,19 +17,7 @@ class StatusBoard_Service {
return $this->sites;
}
public function id() {
return $this->id;
}
public function name() {
return $this->name;
}
public function description() {
return $this->description;
}
}

View File

@@ -1,101 +1,20 @@
<?php
class StatusBoard_Site {
class StatusBoard_Site extends StatusBoard_DatabaseObject {
protected $id;
protected $service;
protected $name;
protected $description;
protected static $table = 'site';
protected $incidents;
protected $incidents_open;
protected $_db_id;
protected $_db_service;
protected $_db_name;
protected $_db_description;
protected function __construct($id, $service, $name, $description) {
$this->id = $id;
$this->service = $service;
$this->name = $name;
$this->description = $description;
}
public static function fromDatabaseRow($row) {
return new self(
$row['id'],
$row['service'],
$row['name'],
$row['description']
);
}
/**
* Load a Site object given its ID
*
* @param int $id
* @return StatusBoard_Site
*/
public static function fromId($id) {
$database = StatusBoard_Main::instance()->database();
$site = self::fromDatabaseRow(
$database->selectOne('SELECT * FROM `site` WHERE id=:id', array(
array('name' => 'id', 'value' => $id, 'type' => PDO::PARAM_INT)
)
)
);
return $site;
}
public static function all() {
$sites = array();
$database = StatusBoard_Main::instance()->database();
foreach ($database->selectList('SELECT * FROM `site` WHERE `id` > 0 ORDER BY `id` DESC') as $row) {
$sites[] = self::fromDatabaseRow($row);
}
return $sites;
}
protected $incidents = null;
protected $incidents_open = null;
public static function all_for_service(StatusBoard_Service $service) {
$sites = array();
$database = StatusBoard_Main::instance()->database();
foreach ($database->selectList('SELECT * FROM `site` WHERE `service`=:service ORDER BY `id` DESC', array(
array('name' => 'service', 'value' => $service->id(), 'type' => PDO::PARAM_INT),
)) as $row) {
$sites[] = self::fromDatabaseRow($row);
}
return $sites;
}
protected function create() {
$database = StatusBoard_Main::instance()->database();
$database->insert(
'INSERT INTO `service`
(`id`, `service`, `name`, `description`)
VALUES(NULL, :service, :name, :description)',
array(
array('name' => 'service', 'value' => $this->service, 'type' => PDO::PARAM_INT),
array('name' => 'name', 'value' => $this->name, 'type' => PDO::PARAM_STR),
array('name' => 'description', 'value' => $this->description, 'type' => PDO::PARAM_STR),
)
);
$this->id = $database->lastInsertId();
}
public function delete() {
$database = StatusBoard_Main::instance()->database();
$database->update(
'DELETE FROM `site` WHERE `id`=:id LIMIT 1',
array(
array('name' => 'id', 'value' => $this->id, 'type' => PDO::PARAM_INT),
)
);
$this->id = null;
}
return static::all_for('service', $service->id);
}
public function openIncidents() {
if ($this->incidents_open === null || $ignore_cache) {
@@ -108,23 +27,6 @@ class StatusBoard_Site {
public function status() {
return StatusBoard_Incident::highestSeverityStatus($this->openIncidents());
}
public function id() {
return $this->id;
}
public function service() {
return $this->service;
}
public function name() {
return $this->name;
}
public function description() {
return $this->description;
}
}