diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-01-22 18:48:52 +0100 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-01-22 18:48:52 +0100 |
commit | e2869fcf0a4f64132b989fd6223e3bbd3e7c78d3 (patch) | |
tree | 5078b3bb89c8d7f679a1080164e04916951107d2 | |
parent | e6211c4c22eae51d78142056180f7b9e706179e4 (diff) |
Move NoticeWrapper to a generalized ArrayWrapper class
We need to use array wrappers for other kinds of queries, so
I generalized the NoticeWrapper and tested it in the Notice class.
-rw-r--r-- | classes/Notice.php | 6 | ||||
-rw-r--r-- | classes/NoticeWrapper.php | 62 | ||||
-rw-r--r-- | lib/arraywrapper.php | 79 |
3 files changed, 82 insertions, 65 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index 5fa078205..de7540705 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -443,7 +443,7 @@ class Notice extends Memcached_DataObject # On a cache hit, return a DB-object-like wrapper if ($notices !== false) { - $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); + $wrapper = new ArrayWrapper(array_slice($notices, $offset, $limit)); return $wrapper; } @@ -483,7 +483,7 @@ class Notice extends Memcached_DataObject # return a wrapper of the array for use now - return new NoticeWrapper(array_slice($notices, $offset, $limit)); + return new ArrayWrapper(array_slice($notices, $offset, $limit)); } } @@ -514,7 +514,7 @@ class Notice extends Memcached_DataObject # return a wrapper of the array for use now - $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); + $wrapper = new ArrayWrapper(array_slice($notices, $offset, $limit)); return $wrapper; } diff --git a/classes/NoticeWrapper.php b/classes/NoticeWrapper.php deleted file mode 100644 index 233340ccd..000000000 --- a/classes/NoticeWrapper.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/* - * Laconica - a distributed open-source microblogging tool - * Copyright (C) 2008, Controlez-Vous, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -if (!defined('LACONICA')) { exit(1); } - -require_once(INSTALLDIR.'/classes/Notice.php'); - -class NoticeWrapper extends Notice -{ - - public $id; // int(4) primary_key not_null - public $profile_id; // int(4) not_null - public $uri; // varchar(255) unique_key - public $content; // varchar(140) - public $rendered; // text() - public $url; // varchar(255) - public $created; // datetime() not_null - public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - public $reply_to; // int(4) - public $is_local; // tinyint(1) - public $source; // varchar(32) - - var $notices = null; - var $i = -1; - - function __construct($arr) - { - $this->notices = $arr; - } - - function fetch() - { - static $fields = array('id', 'profile_id', 'uri', 'content', 'rendered', - 'url', 'created', 'modified', 'reply_to', 'is_local', 'source'); - $this->i++; - if ($this->i >= count($this->notices)) { - return false; - } else { - $n = $this->notices[$this->i]; - foreach ($fields as $f) { - $this->$f = $n->$f; - } - return true; - } - } -}
\ No newline at end of file diff --git a/lib/arraywrapper.php b/lib/arraywrapper.php new file mode 100644 index 000000000..ef0eeffa5 --- /dev/null +++ b/lib/arraywrapper.php @@ -0,0 +1,79 @@ +<?php +/* + * Laconica - a distributed open-source microblogging tool + * Copyright (C) 2008, Controlez-Vous, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('LACONICA')) { + exit(1); +} + +class ArrayWrapper +{ + var $_items = null; + var $_count = 0; + var $_i = -1; + + function __construct($items) + { + $this->_items = $items; + $this->_count = count($this->_items); + } + + function fetch() + { + if (!$this->_items) { + return false; + } + $this->_i++; + if ($this->_i < $this->_count) { + return true; + } else { + return false; + } + } + + function __set($name, $value) + { + $item =& $this->_items[$this->_i]; + $item->$name = $value; + return $item->$name; + } + + function __get($name) + { + $item =& $this->_items[$this->_i]; + return $item->$name; + } + + function __isset($name) + { + $item =& $this->_items[$this->_i]; + return isset($item->$name); + } + + function __unset($name) + { + $item =& $this->_items[$this->_i]; + unset($item->$name); + } + + function __call($name, $args) + { + $item =& $this->_items[$this->_i]; + return call_user_func_array(array($item, $name), $args); + } +}
\ No newline at end of file |