]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - lib/arraywrapper.php
Merge remote-tracking branch 'origin/1.0.x' into 1.0.x
[quix0rs-gnu-social.git] / lib / arraywrapper.php
1 <?php
2 /*
3  * StatusNet - the distributed open-source microblogging tool
4  * Copyright (C) 2008, 2009, StatusNet, Inc.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 if (!defined('STATUSNET') && !defined('LACONICA')) {
21     exit(1);
22 }
23
24 class ArrayWrapper
25 {
26     var $_items = null;
27     var $_count = 0;
28     var $N = 0;
29     var $_i = -1;
30
31     function __construct($items)
32     {
33         $this->_items = $items;
34         $this->_count = count($this->_items);
35         $this->N = $this->_count;
36     }
37
38     function fetch()
39     {
40         if (!$this->_items) {
41             return false;
42         }
43         $this->_i++;
44         if ($this->_i < $this->_count) {
45             return true;
46         } else {
47             return false;
48         }
49     }
50
51         function fetchAll($k= false, $v = false, $method = false)
52         {
53                 if ($k !== false || $v !== false || $method !== false)
54                 {
55                         $item =& $this->_items[$this->_i];
56                         return $item->fetchAll($k, $v, $method);
57                 }
58                 return $this->_items;
59         }
60         
61     function __set($name, $value)
62     {
63         $item =& $this->_items[$this->_i];
64         $item->$name = $value;
65         return $item->$name;
66     }
67
68     function __get($name)
69     {
70         $item =& $this->_items[$this->_i];
71         return $item->$name;
72     }
73
74     function __isset($name)
75     {
76         $item =& $this->_items[$this->_i];
77         return isset($item->$name);
78     }
79
80     function __unset($name)
81     {
82         $item =& $this->_items[$this->_i];
83         unset($item->$name);
84     }
85
86     function __call($name, $args)
87     {
88         $item =& $this->_items[$this->_i];
89         if (!is_object($item)) {
90             common_log(LOG_ERR, "Invalid entry " . var_export($item, true) . " at index $this->_i of $this->N; calling $name()");
91             throw new ServerException("Internal error: bad entry in array wrapper list.");
92         }
93         return call_user_func_array(array($item, $name), $args);
94     }
95 }