OSDN Git Service

主だったスクリプトの改行コードを統一
[nucleus-jp/nucleus-next.git] / nucleus / libs / BAN.php
1 <?php\r
2 /*\r
3  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
4  * Copyright (C) 2002-2009 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-2009 The Nucleus Group\r
17  * @version $Id: BAN.php 1525 2011-06-21 10:20:19Z sakamocchi $\r
18  */\r
19 \r
20 class BAN {\r
21 \r
22         /**\r
23           * Checks if a given IP is banned from commenting/voting\r
24           *\r
25           * Returns 0 when not banned, or a BANINFO object containing the\r
26           * message and other information of the ban\r
27           */\r
28         function isBanned($blogid, $ip) {\r
29                 $blogid = intval($blogid);\r
30                 $query = 'SELECT * FROM '.sql_table('ban').' WHERE blogid='.$blogid;\r
31                 $res = sql_query($query);\r
32                 while ($obj = sql_fetch_object($res)) {\r
33                         $found = i18n::strpos ($ip, $obj->iprange);\r
34                         if (!($found === false))\r
35                                 // found a match!\r
36                                         return new BANINFO($obj->iprange, $obj->reason);\r
37                 }\r
38                 return 0;\r
39         }\r
40 \r
41         /**\r
42          * BAN::addBan()\r
43          * Adds a new ban to the banlist. Returns 1 on success, 0 on error\r
44          * \r
45          * @param       Integer $blogid ID for weblog\r
46          * @param       String  $iprange        IP range\r
47          * @param       String  $reason reason for banning\r
48          * @return      Boolean\r
49          * \r
50          */\r
51         function addBan($blogid, $iprange, $reason)\r
52         {\r
53                 global $manager;\r
54                 \r
55                 $blogid = intval($blogid);\r
56                 \r
57                 $manager->notify(\r
58                         'PreAddBan',\r
59                         array(\r
60                                 'blogid' => $blogid,\r
61                                 'iprange' => &$iprange,\r
62                                 'reason' => &$reason\r
63                         )\r
64                 );\r
65                 \r
66                 $query = "INSERT INTO %s (blogid, iprange, reason) VALUES (%d, '%s', '%s')";\r
67                 $query = sprintf($query, sql_table('ban'), $blogid, sql_real_escape_string($iprange), sql_real_escape_string($reason));\r
68                 $res = sql_query($query);\r
69                 \r
70                 $manager->notify(\r
71                         'PostAddBan',\r
72                         array(\r
73                                 'blogid' => $blogid,\r
74                                 'iprange' => $iprange,\r
75                                 'reason' => $reason\r
76                         )\r
77                 );\r
78                 return $res ? 1 : 0;\r
79         }\r
80         \r
81         /**\r
82           * Removes a ban from the banlist (correct iprange is needed as argument)\r
83           * Returns 1 on success, 0 on error\r
84           */\r
85         function removeBan($blogid, $iprange) {\r
86                 global $manager;\r
87                 $blogid = intval($blogid);\r
88 \r
89                 $manager->notify('PreDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
90 \r
91                 $query = 'DELETE FROM '.sql_table('ban')." WHERE blogid=$blogid and iprange='" .sql_real_escape_string($iprange). "'";\r
92                 sql_query($query);\r
93 \r
94                 $result = (sql_affected_rows() > 0);\r
95 \r
96                 $manager->notify('PostDeleteBan', array('blogid' => $blogid, 'range' => $iprange));\r
97 \r
98                 return $result;\r
99         }\r
100 }\r
101 \r
102 class BANINFO {\r
103         var $iprange;\r
104         var $message;\r
105 \r
106         function BANINFO($iprange, $message) {\r
107                 $this->iprange = $iprange;\r
108                 $this->message = $message;\r
109         }\r
110 }\r
111 \r
112 \r
113 ?>\r