blob: 52eb750766e212d394e4653a89937033a1977e0b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<?php
/* Foursquare Community Site
*
* Copyright (C) 2011 Foursquare Church.
*
* Developers: Jesse Morgan <jmorgan@foursquarestaff.com>
*
*/
require_once "base.inc.php";
class PostIterator 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 = "created desc";
$this->limit = 0;
}
public function filterStage($stage) {
$this->where[] = "stage='$stage'";
}
public function filterSource($source) {
$this->where[] = "source_id='$source'";
}
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 Post($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 *, UNIX_TIMESTAMP(created) AS createdts FROM post";
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;
}
}
?>
|