From 0720091ca73b9714aab2b38c3682c15a0cbd4533 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Thu, 2 Jun 2011 17:20:54 -0700 Subject: Added pages --- htdocs/src/Page.inc.php | 132 ++++++++++++++++++++++++++++++++++++++++ htdocs/src/PageIterator.inc.php | 79 ++++++++++++++++++++++++ htdocs/src/header.inc.php | 4 +- 3 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 htdocs/src/Page.inc.php create mode 100644 htdocs/src/PageIterator.inc.php (limited to 'htdocs/src') diff --git a/htdocs/src/Page.inc.php b/htdocs/src/Page.inc.php new file mode 100644 index 0000000..edb0583 --- /dev/null +++ b/htdocs/src/Page.inc.php @@ -0,0 +1,132 @@ + + * + */ + +require_once "base.inc.php"; + +class Page { + private $info; + private $indatabase; + + public function __construct($info=null) { + $this->info = is_null($info) ? array() : $info; + + if ($info !== null and isset($info['id'])) { + $this->indatabase = true; + + } else { + $this->indatabase = false; + } + } + + public static function getById($id) { + $where = "id='$id'"; + + return Page::getPage($where); + } + + public static function getByUrl($url) { + $where = "url='$url'"; + + return Page::getPage($where); + } + + private static function getPage($where) { + $query = "SELECT * FROM page WHERE $where"; + + $db = getDatabase(); + + $row = $db->fetchAssocRow($query); + + if ($row) { + $page = new Page(); + $page->info = $row; + $page->indatabase = true; + + return $page; + + } else { + return false; + } + } + + public function save() { + $db = getDatabase(); + + // Cleanup Info + foreach ($this->info as $key=>$value) + $info[$key] = addslashes($value); + + // Save or create? + if ($this->indatabase) { + try { + $db->update('page', $info, "WHERE `id`='" + . $this->getId() ."'"); + return true; + + } catch (Cif_Database_Exception $e) { + return false; + } + + } else { + // Creating... + try { + $ret = $db->insert('page', $info); + + if ($ret) { + $this->info['id'] = $ret; + $this->indatabase = true; + } + + return true; + + } catch (Cif_Database_Exception $e) { + return false; + } + } + } + + public function delete() { + $db = getDatabase(); + + $db->delete('page', 'id=' . $this->getId()); + + $this->indatabase = false; + } + + public function getId() { + return $this->info['id']; + } + + public function getTitle() { + return $this->info['title']; + } + + public function setTitle($value) { + $this->info['title'] = $value; + } + + public function getURL() { + return $this->info['url']; + } + + public function setURL($value) { + $this->info['url'] = $value; + } + + public function getContent() { + return $this->info['content']; + } + + public function setContent($value) { + $this->info['content'] = $value; + } +} + +?> diff --git a/htdocs/src/PageIterator.inc.php b/htdocs/src/PageIterator.inc.php new file mode 100644 index 0000000..080c4db --- /dev/null +++ b/htdocs/src/PageIterator.inc.php @@ -0,0 +1,79 @@ + + * + */ + +require_once "base.inc.php"; + +class PageIterator implements Iterator { + private $where; + private $rows; + private $position; + private $order; + private $limit; + + public function __construct() { + $this->where = array(); + $this->rows = array(); + $this->position = 0; + $this->order = "title asc"; + $this->limit = 0; + } + + public function orderBy($order) { + $this->order = $order; + } + + public function limit($limit) { + $this->limit = $limit; + } + + public function rewind() { + $this->position = 0; + } + + public function current() { + return new Page($this->rows[$this->position]); + } + + public function key() { + return $this->rows[$this->position]['id']; + } + + public function next() { + ++$this->position; + } + + public function valid() { + return isset($this->rows[$this->position]); + } + + public function query() { + $query = "SELECT * FROM page"; + + if (count($this->where) > 0) { + $where = join(' AND ', $this->where); + $query .= " WHERE $where"; + } + + $query .= " ORDER BY ". $this->order; + + if ($this->limit != 0) { + $query .= " LIMIT ". $this->limit; + } + + $db = getDatabase(); + + $this->rows = $db->fetchAssocRows($query); + $this->position = 0; + } +} + +?> + + diff --git a/htdocs/src/header.inc.php b/htdocs/src/header.inc.php index 3d7f4b0..db5906d 100644 --- a/htdocs/src/header.inc.php +++ b/htdocs/src/header.inc.php @@ -23,8 +23,8 @@ -- cgit v1.2.3