blob: a2698536c3fe526b7ed21d0c50f854267484a339 (
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<?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 filterCategory($category_id) {
$this->where[] = "category_id='$category_id'";
}
public function filterCreated($after, $before = false) {
$sqlafter = date('Y-m-d H:i:s', $after);
$this->where[] = "created > '$sqlafter'";
if ($before !== false) {
$sqlbefore = date('Y-m-d H:i:s', $before);
$this->where[] = "created < '$sqlbefore'";
}
}
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;
}
}
?>
|