OSDN Git Service

added NP_SkinFiles
[nucleus-jp/nucleus-jp-ancient.git] / euc / 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   * PHP class responsible for ban-management. \r
13   *\r
14   * $Id: BAN.php,v 1.3 2005-03-16 08:10:35 kimitake Exp $\r
15   * $NucleusJP: BAN.php,v 1.3 2005/03/12 06:19:05 kimitake Exp $\r
16   */\r
17   \r
18 class BAN {\r
19         \r
20         /**\r
21           * Checks if a given IP is banned from commenting/voting\r
22           *\r
23           * Returns 0 when not banned, or a BANINFO object containing the\r
24           * message and other information of the ban\r
25           */\r
26         function isBanned($blogid, $ip) {\r
27                 $blogid = intval($blogid);\r
28                 $query = 'SELECT * FROM '.sql_table('ban').' WHERE blogid='.$blogid;\r
29                 $res = sql_query($query);\r
30                 while ($obj = mysql_fetch_object($res)) {\r
31                         $found = strpos ($ip, $obj->iprange);\r
32                         if (!($found === false)) \r
33                                 // found a match!\r
34                                 return new BANINFO($obj->iprange, $obj->reason);\r
35                 }\r
36                 return 0;\r
37         }\r
38         \r
39         /**\r
40           * Adds a new ban to the banlist. Returns 1 on success, 0 on error\r
41           */\r
42         function addBan($blogid, $iprange, $reason) {\r
43                 global $manager;\r
44                 \r
45                 $blogid = intval($blogid);\r
46         \r
47                 $manager->notify(\r
48                         'PreAddBan',\r
49                         array(\r
50                                 'blogid' => $blogid,\r
51                                 'iprange' => &$iprange,\r
52                                 'reason' => &$reason\r
53                         )\r
54                 );\r
55         \r
56                 $query = 'INSERT INTO '.sql_table('ban')." (blogid, iprange, reason) VALUES "\r
57                        . "($blogid,'".addslashes($iprange)."','".addslashes($reason)."')";\r
58                 $res = sql_query($query);\r
59                 \r
60                 $manager->notify(\r
61                         'PostAddBan',\r
62                         array(\r
63                                 'blogid' => $blogid,\r
64                                 'iprange' => $iprange,\r
65                                 'reason' => $reason\r
66                         )\r
67                 );\r
68                 \r
69                 return $res ? 1 : 0;\r
70         }\r
71         \r
72         /**\r
73           * Removes a ban from the banlist (correct iprange is needed as argument)\r
74           * Returns 1 on success, 0 on error\r
75           */\r
76         function removeBan($blogid, $iprange) {\r
77                 global $manager;\r
78                 $blogid = intval($blogid);\r
79                 \r
80                 $manager->notify('PreDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
81                 \r
82                 $query = 'DELETE FROM '.sql_table('ban')." WHERE blogid=$blogid and iprange='" .addslashes($iprange). "'";\r
83                 sql_query($query);\r
84                 \r
85                 $result = (mysql_affected_rows() > 0);\r
86                 \r
87                 $manager->notify('PostDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
88                 \r
89                 return $result;\r
90         }\r
91 }\r
92 \r
93 class BANINFO {\r
94         var $iprange;\r
95         var $message;\r
96         \r
97         function BANINFO($iprange, $message) {\r
98                 $this->iprange = $iprange;\r
99                 $this->message = $message;\r
100         }\r
101 }\r
102 \r
103 \r
104 ?>\r