OSDN Git Service

Merge branch 'skinnable-master'
[nucleus-jp/nucleus-next.git] / nucleus / libs / BAN.php
1 <<<<<<< HEAD
2 <?php\r
3 /*\r
4  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
5  * Copyright (C) 2002-2012 The Nucleus Group\r
6  *\r
7  * This program is free software; you can redistribute it and/or\r
8  * modify it under the terms of the GNU General Public License\r
9  * as published by the Free Software Foundation; either version 2\r
10  * of the License, or (at your option) any later version.\r
11  * (see nucleus/documentation/index.html#license for more info)\r
12  */\r
13 /**\r
14  * PHP class responsible for ban-management.\r
15  *\r
16  * @license http://nucleuscms.org/license.txt GNU General Public License\r
17  * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
18  * @version $Id: BAN.php 1525 2011-06-21 10:20:19Z sakamocchi $\r
19  */\r
20 \r
21 class Ban\r
22 {\r
23         /**\r
24          * Checks if a given IP is banned from commenting/voting\r
25          *\r
26          * Returns 0 when not banned, or a BanInfo object containing the\r
27          * message and other information of the ban\r
28          */\r
29         public function isBanned($blogid, $ip)\r
30         {\r
31                 $blogid = intval($blogid);\r
32                 $query = sprintf('SELECT * FROM %s WHERE blogid=%d', sql_table('ban'), intval($blogid));\r
33                 $res = DB::getResult($query);\r
34                 foreach ( $res as $row )\r
35                 {\r
36                         $found = i18n::strpos ($ip, $row['iprange']);\r
37                         if ( $found !== false )\r
38                         {\r
39                                 // found a match!\r
40                                 return new BanInfo($row['iprange'], $row['reason']);\r
41                         }\r
42                 }\r
43                 return 0;\r
44         }\r
45 \r
46         /**\r
47          * Ban::addBan()\r
48          * Adds a new ban to the banlist. Returns 1 on success, 0 on error\r
49          * \r
50          * @param       Integer $blogid ID for weblog\r
51          * @param       String  $iprange        IP range\r
52          * @param       String  $reason reason for banning\r
53          * @return      Boolean\r
54          * \r
55          */\r
56         public function addBan($blogid, $iprange, $reason)\r
57         {\r
58                 global $manager;\r
59                 \r
60                 $manager->notify(\r
61                         'PreAddBan',\r
62                         array(\r
63                                 'blogid' => $blogid,\r
64                                 'iprange' => &$iprange,\r
65                                 'reason' => &$reason\r
66                         )\r
67                 );\r
68                 \r
69                 $query = 'INSERT INTO %s (blogid, iprange, reason) VALUES (%d, %s, %s)';\r
70                 $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange), DB::quoteValue($reason));\r
71                 $res = DB::execute($query);\r
72                 \r
73                 $manager->notify(\r
74                         'PostAddBan',\r
75                         array(\r
76                                 'blogid' => $blogid,\r
77                                 'iprange' => $iprange,\r
78                                 'reason' => $reason\r
79                         )\r
80                 );\r
81                 \r
82                 return $res !== FALSE ? 1 : 0;\r
83         }\r
84         \r
85         /**\r
86          * Removes a ban from the banlist (correct iprange is needed as argument)\r
87          * Returns 1 on success, 0 on error\r
88          */\r
89         public function removeBan($blogid, $iprange)\r
90         {\r
91                 global $manager;\r
92                 \r
93                 $manager->notify(\r
94                         'PreDeleteBan',\r
95                         array(\r
96                                 'blogid' => $blogid,\r
97                                 'range' => $iprange\r
98                         )\r
99                 );\r
100                 \r
101                 $query = 'DELETE FROM %s WHERE blogid=%d and iprange=%s';\r
102                 $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange));\r
103                 $res = DB::execute($query);\r
104                 \r
105                 $manager->notify(\r
106                         'PostDeleteBan',\r
107                         array(\r
108                                 'blogid' => $blogid,\r
109                                 'range' => $iprange\r
110                         )\r
111                 );\r
112                 \r
113                 return $res !== FALSE ? 1 : 0;\r
114         }\r
115 }\r
116 \r
117 class BanInfo\r
118 {\r
119         public $iprange;\r
120         public $message;\r
121         \r
122         public function __construct($iprange, $message)\r
123         {\r
124                 $this->iprange = $iprange;\r
125                 $this->message = $message;\r
126                 return;\r
127         }\r
128 }\r
129 =======
130 <?php
131 /*
132  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
133  * Copyright (C) 2002-2009 The Nucleus Group
134  *
135  * This program is free software; you can redistribute it and/or
136  * modify it under the terms of the GNU General Public License
137  * as published by the Free Software Foundation; either version 2
138  * of the License, or (at your option) any later version.
139  * (see nucleus/documentation/index.html#license for more info)
140  */
141 /**
142  * PHP class responsible for ban-management.
143  *
144  * @license http://nucleuscms.org/license.txt GNU General Public License
145  * @copyright Copyright (C) 2002-2009 The Nucleus Group
146  * @version $Id: BAN.php 1812 2012-05-01 14:59:07Z sakamocchi $
147  */
148
149 class Ban
150 {
151         /**
152          * Checks if a given IP is banned from commenting/voting
153          *
154          * Returns 0 when not banned, or a BanInfo object containing the
155          * message and other information of the ban
156          */
157         public function isBanned($blogid, $ip)
158         {
159                 $blogid = intval($blogid);
160                 $query = sprintf('SELECT * FROM %s WHERE blogid=%d', sql_table('ban'), intval($blogid));
161                 $res = DB::getResult($query);
162                 foreach ( $res as $row )
163                 {
164                         $found = i18n::strpos ($ip, $row['iprange']);
165                         if ( $found !== false )
166                         {
167                                 // found a match!
168                                 return new BanInfo($row['iprange'], $row['reason']);
169                         }
170                 }
171                 return 0;
172         }
173
174         /**
175          * Ban::addBan()
176          * Adds a new ban to the banlist. Returns 1 on success, 0 on error
177          * 
178          * @param       Integer $blogid ID for weblog
179          * @param       String  $iprange        IP range
180          * @param       String  $reason reason for banning
181          * @return      Boolean
182          * 
183          */
184         public function addBan($blogid, $iprange, $reason)
185         {
186                 global $manager;
187
188                 $data = array(
189                                 'blogid'        => $blogid,
190                                 'iprange'       => &$iprange,
191                                 'reason'        => &$reason
192                         );
193                 $manager->notify('PreAddBan', $data);
194                 
195                 $query = 'INSERT INTO %s (blogid, iprange, reason) VALUES (%d, %s, %s)';
196                 $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange), DB::quoteValue($reason));
197                 $res = DB::execute($query);
198                 
199                 $manager->notify('PostAddBan', $data);
200                 
201                 return $res !== FALSE ? 1 : 0;
202         }
203         
204         /**
205          * Removes a ban from the banlist (correct iprange is needed as argument)
206          * Returns 1 on success, 0 on error
207          */
208         public function removeBan($blogid, $iprange)
209         {
210                 global $manager;
211                 
212                 $data = array(
213                         'blogid'        => $blogid,
214                         'range'         => $iprange
215                 );
216                 $manager->notify('PreDeleteBan', $data);
217                 
218                 $query = 'DELETE FROM %s WHERE blogid=%d and iprange=%s';
219                 $query = sprintf($query, sql_table('ban'), intval($blogid), DB::quoteValue($iprange));
220                 $res = DB::execute($query);
221                 
222                 $manager->notify('PostDeleteBan', $data);
223                 
224                 return $res !== FALSE ? 1 : 0;
225         }
226 }
227
228 class BanInfo
229 {
230         public $iprange;
231         public $message;
232         
233         public function __construct($iprange, $message)
234         {
235                 $this->iprange = $iprange;
236                 $this->message = $message;
237                 return;
238         }
239 }
240 >>>>>>> skinnable-master