OSDN Git Service

sync the original code
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / BAN.php
1 <?php\r
2 /*\r
3  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
4  * Copyright (C) 2002-2005 The Nucleus Group\r
5  *\r
6  * This program is free software; you can redistribute it and/or\r
7  * modify it under the terms of the GNU General Public License\r
8  * as published by the Free Software Foundation; either version 2\r
9  * of the License, or (at your option) any later version.\r
10  * (see nucleus/documentation/index.html#license for more info)\r
11  */\r
12 /**\r
13  * PHP class responsible for ban-management.\r
14  *\r
15  * @license http://nucleuscms.org/license.txt GNU General Public License\r
16  * @copyright Copyright (C) 2002-2005 The Nucleus Group\r
17  * @version $Id: BAN.php,v 1.4 2005-08-13 07:31:04 kimitake Exp $\r
18   * $NucleusJP: BAN.php,v 1.3 2005/03/12 06:19:05 kimitake Exp $\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         function isBanned($blogid, $ip) {\r
30                 $blogid = intval($blogid);\r
31                 $query = 'SELECT * FROM '.sql_table('ban').' WHERE blogid='.$blogid;\r
32                 $res = sql_query($query);\r
33                 while ($obj = mysql_fetch_object($res)) {\r
34                         $found = strpos ($ip, $obj->iprange);\r
35                         if (!($found === false)) \r
36                                 // found a match!\r
37                                 return new BANINFO($obj->iprange, $obj->reason);\r
38                 }\r
39                 return 0;\r
40         }\r
41         \r
42         /**\r
43           * Adds a new ban to the banlist. Returns 1 on success, 0 on error\r
44           */\r
45         function addBan($blogid, $iprange, $reason) {\r
46                 global $manager;\r
47                 \r
48                 $blogid = intval($blogid);\r
49         \r
50                 $manager->notify(\r
51                         'PreAddBan',\r
52                         array(\r
53                                 'blogid' => $blogid,\r
54                                 'iprange' => &$iprange,\r
55                                 'reason' => &$reason\r
56                         )\r
57                 );\r
58         \r
59                 $query = 'INSERT INTO '.sql_table('ban')." (blogid, iprange, reason) VALUES "\r
60                        . "($blogid,'".addslashes($iprange)."','".addslashes($reason)."')";\r
61                 $res = sql_query($query);\r
62                 \r
63                 $manager->notify(\r
64                         'PostAddBan',\r
65                         array(\r
66                                 'blogid' => $blogid,\r
67                                 'iprange' => $iprange,\r
68                                 'reason' => $reason\r
69                         )\r
70                 );\r
71                 \r
72                 return $res ? 1 : 0;\r
73         }\r
74         \r
75         /**\r
76           * Removes a ban from the banlist (correct iprange is needed as argument)\r
77           * Returns 1 on success, 0 on error\r
78           */\r
79         function removeBan($blogid, $iprange) {\r
80                 global $manager;\r
81                 $blogid = intval($blogid);\r
82                 \r
83                 $manager->notify('PreDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
84                 \r
85                 $query = 'DELETE FROM '.sql_table('ban')." WHERE blogid=$blogid and iprange='" .addslashes($iprange). "'";\r
86                 sql_query($query);\r
87                 \r
88                 $result = (mysql_affected_rows() > 0);\r
89                 \r
90                 $manager->notify('PostDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
91                 \r
92                 return $result;\r
93         }\r
94 }\r
95 \r
96 class BANINFO {\r
97         var $iprange;\r
98         var $message;\r
99         \r
100         function BANINFO($iprange, $message) {\r
101                 $this->iprange = $iprange;\r
102                 $this->message = $message;\r
103         }\r
104 }\r
105 \r
106 \r
107 ?>\r