Passed
Pull Request — master (#4690)
by David
08:22
created

BoincNotify::enum()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
// This file is part of BOINC.
3
// http://boinc.berkeley.edu
4
// Copyright (C) 2008 University of California
5
//
6
// BOINC is free software; you can redistribute it and/or modify it
7
// under the terms of the GNU Lesser General Public License
8
// as published by the Free Software Foundation,
9
// either version 3 of the License, or (at your option) any later version.
10
//
11
// BOINC 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.
14
// See the GNU Lesser General Public License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public License
17
// along with BOINC.  If not, see <http://www.gnu.org/licenses/>.
18
19
require_once("../inc/boinc_db.inc");
20
21
class BoincCategory {
22
    static function lookup_id($id) {
23
        $db = BoincDb::get();
24
        return $db->lookup_id($id, 'category', 'BoincCategory');
25
    }
26
    static function lookup($clause) {
27
        $db = BoincDb::get();
28
        return $db->lookup('category', 'BoincCategory', $clause);
29
    }
30
    static function enum($clause=null) {
31
        $db = BoincDb::get();
32
        return $db->enum('category', 'BoincCategory', $clause);
33
    }
34
}
35
36
class BoincForum {
37
    static function insert($clause) {
38
        $db = BoincDb::get();
39
        $ret = $db->insert('forum', $clause);
40
        if (!$ret) return null;
41
        return $db->insert_id();
42
    }
43
    static function lookup_id($id) {
44
        $db = BoincDb::get();
45
        return $db->lookup_id($id, 'forum', 'BoincForum');
46
    }
47
    static function lookup($clause) {
48
        $db = BoincDb::get();
49
        return $db->lookup('forum', 'BoincForum', $clause);
50
    }
51
    static function enum($clause) {
52
        $db = BoincDb::get();
53
        return $db->enum('forum', 'BoincForum', $clause);
54
    }
55
    function update($clause) {
56
        $db = BoincDb::get();
57
        return $db->update($this, 'forum', $clause);
58
    }
59
    function delete() {
60
        $db = BoincDb::get();
61
        return $db->delete($this, 'forum');
62
    }
63
}
64
65
class BoincThread {
66
    static function insert($clause) {
67
        $db = BoincDb::get();
68
        $ret = $db->insert('thread', $clause);
69
        if (!$ret) return null;
70
        return $db->insert_id();
71
72
    }
73
    static function lookup_id($id) {
74
        $db = BoincDb::get();
75
        return $db->lookup_id($id, 'thread', 'BoincThread');
76
    }
77
    function update($clause) {
78
        $db = BoincDb::get();
79
        return $db->update($this, 'thread', $clause);
80
    }
81
    static function enum($clause="") {
82
        $db = BoincDb::get();
83
        return $db->enum('thread', 'BoincThread', $clause);
84
    }
85
86
    function rating() {
87
        return $this->score*$this->votes;
0 ignored issues
show
Bug Best Practice introduced by
The property votes does not exist on BoincThread. Did you maybe forget to declare it?
Loading history...
Bug Best Practice introduced by
The property score does not exist on BoincThread. Did you maybe forget to declare it?
Loading history...
88
    }
89
    function delete() {
90
        $db = BoincDb::get();
91
        return $db->delete($this, 'thread');
92
    }
93
}
94
95
class BoincPost {
96
    static function insert($clause) {
97
        $db = BoincDb::get();
98
        $ret = $db->insert('post', $clause);
99
        if (!$ret) return null;
100
        return $db->insert_id();
101
    }
102
    static function lookup_id($id) {
103
        $db = BoincDb::get();
104
        return $db->lookup_id($id, 'post', 'BoincPost');
105
    }
106
    static function count($clause) {
107
        $db = BoincDb::get();
108
        return $db->count('post', $clause);
109
    }
110
    function update($clause) {
111
        $db = BoincDb::get();
112
        return $db->update($this, 'post', $clause);
113
    }
114
    static function enum($clause) {
115
        $db = BoincDb::get();
116
        return $db->enum('post', 'BoincPost', $clause);
117
    }
118
    static function enum_general($query) {
119
        $db = BoincDb::get();
120
        return $db->enum_general('BoincPost', $query);
121
    }
122
    function rating() {
123
        return $this->score*$this->votes;
0 ignored issues
show
Bug Best Practice introduced by
The property score does not exist on BoincPost. Did you maybe forget to declare it?
Loading history...
Bug Best Practice introduced by
The property votes does not exist on BoincPost. Did you maybe forget to declare it?
Loading history...
124
    }
125
    function delete() {
126
        $db = BoincDb::get();
127
        return $db->delete($this, 'post');
128
    }
129
    static function delete_aux($clause) {
130
        $db = BoincDb::get();
131
        return $db->delete_aux('post', $clause);
132
    }
133
}
134
135
class BoincForumPrefs {
136
    static $cache;
137
    static function lookup_userid($id) {
138
        $db = BoincDb::get();
139
        return $db->lookup('forum_preferences', 'BoincForumPrefs', "userid=$id");
140
    }
141
    static function insert($clause) {
142
        $db = BoincDb::get();
143
        $ret = $db->insert('forum_preferences', $clause);
144
    }
145
    static function lookup(&$user, $nocache=false) {
146
        if (!$user) return;
147
        if (isset($user->prefs)) return;
148
        if (!$nocache && isset(self::$cache[$user->id])) {
149
            $prefs = self::$cache[$user->id];
150
        } else {
151
            $prefs = self::lookup_userid($user->id);
152
            if (!$prefs) {
153
                $db = BoincDb::get();
154
                if ($db->readonly) {
155
                    return;
156
                }
157
                self::insert("(userid, last_post, forum_sorting, thread_sorting, rated_posts, ignorelist, pm_notification) values ($user->id, 0, 0, 8, '', '', 0)");
158
                $prefs = self::lookup_userid($user->id);
159
                $prefs->userid = $user->id;
160
                $prefs->thread_sorting = 6;
161
            }
162
            self::$cache[$user->id] = $prefs;
163
        }
164
        $user->prefs = $prefs;
165
    }
166
    function privilege($specialbit) {
167
         return (substr($this->special_user, $specialbit,1)==1);
0 ignored issues
show
Bug Best Practice introduced by
The property special_user does not exist on BoincForumPrefs. Did you maybe forget to declare it?
Loading history...
168
    }
169
    function update($clause) {
170
        $db = BoincDb::get();
171
        $clause = "$clause where userid=$this->userid";
172
        return $db->update_aux('forum_preferences', $clause);
173
    }
174
    function delete() {
175
        $db = BoincDb::get();
176
        return $db->delete_aux('forum_preferences', "userid=$this->userid");
177
    }
178
    static function enum($clause=null) {
179
        $db = BoincDb::get();
180
        return $db->enum('forum_preferences', 'BoincForumPrefs', $clause);
181
    }
182
}
183
184
class BoincForumLogging {
185
    static $cache;
186
    static function replace($userid, $threadid, $timestamp) {
187
        $db = BoincDb::get();
188
        return $db->replace('forum_logging', "userid=$userid, threadid=$threadid, timestamp=$timestamp");
189
    }
190
    static function lookup($userid, $threadid) {
191
        $db = BoincDb::get();
192
        return $db->lookup('forum_logging', 'BoincForumLogging', "userid=$userid and threadid=$threadid");
193
    }
194
    static function lookup_cached($userid, $threadid) {
195
        if (isset(self::$cache[$threadid])) {
196
            return self::$cache[$threadid];
197
        }
198
        $x = self::lookup($userid, $threadid);
199
        if (!$x) {
200
            $x = new BoincForumLogging();
201
            $x->timestamp = 0;
202
        }
203
        self::$cache[$threadid] = $x;
204
    }
205
    static function delete_aux($clause) {
206
        $db = BoincDb::get();
207
        return $db->delete_aux('forum_logging', $clause);
208
    }
209
    static function cleanup() {
210
        // Every 28 days, delete records older than 28 days.
211
        // Keep track of the last time we did this in a special record
212
        // with userid = threadid = 0.
213
        // This gets called from forum_index.php
214
        // (i.e. each time the forum main page is loaded).
215
        //
216
        $fl = BoincForumLogging::lookup(0, 0);
217
        if ($fl) {
218
            if ($fl->timestamp<time()-MAX_FORUM_LOGGING_TIME){
219
                BoincForumLogging::delete_aux("timestamp<'".(time()-MAX_FORUM_LOGGING_TIME)."' and userid != 0");
220
                BoincForumLogging::replace(0, 0, time());
221
            }
222
        } else {
223
            // No cleanup timestamp found, make one
224
            //
225
            BoincForumLogging::replace(0, 0, 0);
226
        }
227
    }
228
}
229
230
class BoincSubscription {
231
    static function lookup($userid, $threadid) {
232
        $db = BoincDb::get();
233
        return $db->lookup('subscriptions', 'BoincSubscription', "userid=$userid and threadid=$threadid");
234
    }
235
    static function delete($userid, $threadid) {
236
        $db = BoincDb::get();
237
        return $db->delete_aux('subscriptions', "userid=$userid and threadid=$threadid");
238
    }
239
    static function enum($clause) {
240
        $db = BoincDb::get();
241
        return $db->enum('subscriptions', 'BoincSubscription', $clause);
242
    }
243
    static function replace($userid, $threadid) {
244
        $db = BoincDb::get();
245
        return $db->replace('subscriptions', "userid=$userid, threadid=$threadid");
246
    }
247
}
248
249
class BoincPostRating {
250
    static function lookup($userid, $postid) {
251
        $db = BoincDb::get();
252
        return $db->lookup('post_ratings', 'BoincPostRating', "user=$userid and post=$postid");
253
    }
254
    static function replace($userid, $postid, $rating) {
255
        $db = BoincDb::get();
256
        return $db->replace('post_ratings', "user=$userid, post=$postid, rating=$rating");
257
    }
258
}
259
260
class BoincFriend {
261
    static function insert($clause) {
262
        $db = BoincDb::get();
263
        return $db->insert('friend', $clause);
264
    }
265
    static function lookup($uid1, $uid2) {
266
        $db = BoincDb::get();
267
        return $db->lookup('friend', 'BoincFriend', "user_src=$uid1 and user_dest=$uid2");
268
    }
269
    function update($clause) {
270
        $db = BoincDb::get();
271
        return $db->update_aux('friend', "$clause where user_src=$this->user_src and user_dest=$this->user_dest");
0 ignored issues
show
Bug Best Practice introduced by
The property user_src does not exist on BoincFriend. Did you maybe forget to declare it?
Loading history...
Bug Best Practice introduced by
The property user_dest does not exist on BoincFriend. Did you maybe forget to declare it?
Loading history...
272
    }
273
    static function enum($clause) {
274
        $db = BoincDb::get();
275
        return $db->enum('friend', 'BoincFriend', $clause);
276
    }
277
    static function delete_aux($clause) {
278
        $db = BoincDb::get();
279
        return $db->delete_aux('friend', $clause);
280
    }
281
    static function delete($id1, $id2) {
282
        $db = BoincDb::get();
283
        $db->delete_aux('friend', "user_src=$id1 and user_dest=$id2");
284
        $db->delete_aux('friend', "user_src=$id2 and user_dest=$id1");
285
    }
286
    static function replace($clause) {
287
        $db = BoincDb::get();
288
        return $db->replace('friend', $clause);
289
    }
290
}
291
292
class BoincNotify {
293
    static function insert($clause) {
294
        $db = BoincDb::get();
295
        $ret = $db->insert('notify', $clause);
296
        if (!$ret) return null;
297
        return $db->insert_id();
298
    }
299
    static function replace($clause) {
300
        $db = BoincDb::get();
301
        return $db->replace('notify', $clause);
302
    }
303
    static function enum($clause) {
304
        $db = BoincDb::get();
305
        return $db->enum('notify', 'BoincNotify', $clause);
306
    }
307
    static function lookup($userid, $type, $opaque) {
308
        $db = BoincDb::get();
309
        return $db->lookup('notify', 'BoincNotify', "userid=$userid and type=$type and opaque=$opaque");
310
    }
311
    function delete() {
312
        $db = BoincDb::get();
313
        return $db->delete($this, 'notify');
314
    }
315
    static function delete_aux($clause) {
316
        $db = BoincDb::get();
317
        $db->delete_aux('notify', $clause);
318
    }
319
    static function enum_general($query) {
320
        $db = BoincDb::get();
321
        return $db->enum_general('BoincNotify', $query);
322
    }
323
    function update($clause) {
324
        $db = BoincDb::get();
325
        return $db->update($this, 'notify', $clause);
326
    }
327
}
328
329
define ('NOTIFY_FRIEND_REQ', 1);
330
define ('NOTIFY_FRIEND_ACCEPT', 2);
331
define ('NOTIFY_PM', 3);
332
define ('NOTIFY_SUBSCRIBED_POST', 4);
333
334
?>
335