]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Sitemap/Sitemap_notice_count.php
72bb2b9d41b44446dc38c1596ba71f6e23582b4d
[quix0rs-gnu-social.git] / plugins / Sitemap / Sitemap_notice_count.php
1 <?php
2 /**
3  * Data class for counting notice postings by date
4  *
5  * PHP version 5
6  *
7  * @category Data
8  * @package  StatusNet
9  * @author   Evan Prodromou <evan@status.net>
10  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
11  * @link     http://status.net/
12  *
13  * StatusNet - the distributed open-source microblogging tool
14  * Copyright (C) 2010, StatusNet, Inc.
15  *
16  * This program is free software: you can redistribute it and/or modify
17  * it under the terms of the GNU Affero General Public License as published by
18  * the Free Software Foundation, either version 3 of the License, or
19  * (at your option) any later version.
20  *
21  * This program is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the
24  * GNU Affero General Public License for more details.
25  *
26  * You should have received a copy of the GNU Affero General Public License
27  * along with this program. If not, see <http://www.gnu.org/licenses/>.
28  */
29
30 if (!defined('STATUSNET')) {
31     exit(1);
32 }
33
34 require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
35
36 /**
37  * Data class for counting notices by date
38  *
39  * We make a separate sitemap for each notice posted by date.
40  * To save ourselves some (not inconsiderable) processing effort,
41  * we cache this data in the sitemap_notice_count table. Each
42  * row represents a day since the site has been started, with a count
43  * of notices posted on that day. Since, after the end of the day,
44  * this number doesn't change, it's a good candidate for persistent caching.
45  *
46  * @category Data
47  * @package  StatusNet
48  * @author   Evan Prodromou <evan@status.net>
49  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
50  * @link     http://status.net/
51  *
52  * @see      DB_DataObject
53  */
54
55 class Sitemap_notice_count extends Memcached_DataObject
56 {
57     public $__table = 'sitemap_notice_count'; // table name
58
59     public $notice_date;                       // date primary_key not_null
60     public $notice_count;                      // int(4)
61     public $created;
62     public $modified;
63
64     /**
65      * Get an instance by key
66      *
67      * This is a utility method to get a single instance with a given key value.
68      *
69      * @param string $k Key to use to lookup (usually 'notice_id' for this class)
70      * @param mixed  $v Value to lookup
71      *
72      * @return Sitemap_notice_count object found, or null for no hits
73      *
74      */
75
76     function staticGet($k, $v=null)
77     {
78         return Memcached_DataObject::staticGet('Sitemap_notice_count', $k, $v);
79     }
80
81     /**
82      * return table definition for DB_DataObject
83      *
84      * DB_DataObject needs to know something about the table to manipulate
85      * instances. This method provides all the DB_DataObject needs to know.
86      *
87      * @return array array of column definitions
88      */
89
90     function table()
91     {
92         return array('notice_date' => DB_DATAOBJECT_DATE + DB_DATAOBJECT_NOTNULL,
93                      'notice_count' => DB_DATAOBJECT_INT,
94                      'created'   => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
95                      'modified'  => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
96     }
97
98     /**
99      * return key definitions for DB_DataObject
100      *
101      * DB_DataObject needs to know about keys that the table has; this function
102      * defines them.
103      *
104      * @return array key definitions
105      */
106
107     function keys()
108     {
109         return array('notice_date' => 'K');
110     }
111
112     /**
113      * return key definitions for Memcached_DataObject
114      *
115      * Our caching system uses the same key definitions, but uses a different
116      * method to get them.
117      *
118      * @return array key definitions
119      */
120
121     function keyTypes()
122     {
123         return $this->keys();
124     }
125 }