OSDN Git Service

git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@823 1ca29b6e-896d...
[nucleus-jp/nucleus-plugins.git] / NP_Board / NP_Board.php
1 <?
2 if (!function_exists('sql_table'))
3 {
4         function sql_table($name) {
5                 return 'nucleus_' . $name;
6         }
7 }
8
9 class NP_Board extends NucleusPlugin {
10
11         function getName() {return 'Board'; }
12         function getAuthor()  { return 'nakahara21'; }
13         function getURL() { return 'http://xx.nakahara21.net/'; }
14         function getVersion() { return '0.31'; }
15         function getDescription() { 
16                 return 'BBS!';
17         }
18         function getTableList() { return array( sql_table('plugin_bbs') ); }
19         function supportsFeature($what) {
20                 switch($what){
21                         case 'SqlTablePrefix':
22                                 return 1;
23                         default:
24                                 return 0;
25                 }
26         }
27 function install() {
28         $this->createOption("bbstitle", "Title of BBS", "text", "²¿¤Ç¤âBBS");
29         $this->createOption("bbsdesc", "ÀâÌÀʸ", "text", "²¿¤Ç¤â¤´¼«Í³¤Ë<br />¤ª½ñ¤­²¼¤µ¤¤¤Í¡ª");
30         $this->createOption("bbsamount", "1¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ëµ­»ö¿ô", "text", "15");
31 //      $this->createOption("name2", "desc2", "yesno", "yes");
32         $this->createOption("smily", "Convert smilies?", "yesno", "no");
33         $this->createOption("adminpass", "BBS admin password", "password", "password");
34 //      $this->createOption("name4", "desc4", "textarea", "");
35 //      $this->createOption("name5", "desc5", "select", "val1", "Opt1|val1|Opt2|val2|Opt3|val3");
36         $this->createOption("del_uninstall", "Delete tables on uninstall?", "yesno", "no");
37
38         $query = "CREATE TABLE IF NOT EXISTS ".sql_table('plugin_bbs');
39         $query .= "( bbsid int(11) NOT NULL auto_increment,";
40         $query .= " bbs_number int(11) NOT NULL default '0',";
41         $query .= " bbs_baseid VARCHAR(11) NOT NULL default 'B',";
42         $query .= " bbs_name varchar(50) default NULL,";
43         $query .= " bbs_userinfo varchar(100) default NULL,";
44         $query .= " bbs_pass varchar(50) NOT NULL default '',";
45         $query .= " bbs_mes text default NULL,";
46         $query .= " bbs_host varchar(60) default NULL,";
47         $query .= " bbs_ip varchar(15) NOT NULL default '',";
48         $query .= " bbs_date datetime NOT NULL default '0000-00-00 00:00:00',";
49         $query .= " PRIMARY KEY (bbsid))";
50         mysql_query($query);    
51         }
52
53 function uninstall() {
54         if ($this->getOption('del_uninstall') == "yes") {
55                 mysql_query ("DROP table ".sql_table('plugin_bbs'));
56         }
57 }
58
59         function init() {
60                 $this->pageamount = $this->getOption('bbsamount');
61                 $this->startpos = 0;
62
63                 //¶Ø»ßname
64                 //ºï½ü¤µ¤ì¤¿¥í¥°¤ËŬÍѤ¹¤ëname¤È¤Ê¤ë
65                 $this->deny_name = "-";
66
67                 $smileys0 = array(
68                         ':mrgreen:' => 'smiles/icon_mrgreen.gif',                       
69                         ':wink:' => 'smiles/icon_wink.gif',                     
70                         ':lol:' => 'smiles/icon_lol.gif',                       
71                         ':oops:' => 'smiles/icon_redface.gif',                  
72                         ':cry:' => 'smiles/icon_cry.gif',                       
73                         ':roll:' => 'smiles/icon_rolleyes.gif',                 
74                         '8)' => 'smiles/icon_cool.gif',                 
75                         ':?:' => 'smiles/icon_question.gif',                    
76                 );
77                 $smileys = array(
78                         ':-D' => 'smiles/icon_biggrin.gif',                                             
79                         ':P' => 'smiles/icon_razz.gif',                 
80                         ':-)' => 'smiles/icon_smile.gif',
81                         ':o' => 'smiles/icon_surprised.gif',                                            
82                         ';-)' => 'smiles/icon_wink.gif',                        
83                         ':|' => 'smiles/icon_neutral.gif',                                              
84                         ':?' => 'smiles/icon_confused.gif',                     
85                         ':-(' => 'smiles/icon_sad.gif',
86                         '8O' => 'smiles/icon_eek.gif',                  
87                         ':idea:' => 'smiles/icon_idea.gif',                     
88                         ':arrow:' => 'smiles/icon_arrow.gif',                   
89                         ':!:' => 'smiles/icon_exclaim.gif',                     
90                         ':x' => 'smiles/icon_mad.gif',                  
91                 );
92                 $smileys21 = array(
93                         ':D' => 'smiles21/biglaugh.gif',
94                         ':r' => 'smiles21/rolleyes.gif',
95                         ':)' => 'smiles21/smile.gif',
96                         ';)' => 'smiles21/wink.gif',                    
97                         ':(' => 'smiles21/frown.gif',
98                         ':n' => 'smiles21/eek.gif',                     
99                         ':O' => 'smiles21/redface.gif',                 
100                 );
101
102                 $this->smiley = array_merge($smileys, $smileys21);
103         }
104
105         function doSkinVar($skinType, $bbs_number = '0', $show = '') {
106                 global $CONF, $manager, $member;
107
108                 $temp_params[1] = $bbs_number;
109                 $temp_params[2] = $show;
110                 if(!is_numeric($temp_params[1])){       $show = $temp_params[1];        }
111                 if( is_numeric($temp_params[2])){       $bbs_number = intval($temp_params[2]);  }
112                 if(!is_numeric($bbs_number) || (!$temp_params[1] && !$temp_params[1]) ){ $bbs_number = '0';}
113                 $data['bbs_number'] = $bbs_number;
114                 $data['actionurl'] = $CONF['ActionURL'];
115
116                 if($show == 'last'){
117                         $sql = "SELECT * FROM ".sql_table('plugin_bbs');
118                         $sql .= " WHERE bbs_number=".$bbs_number;
119                         $sql .= ' ORDER BY bbsid DESC';
120                         $sql .= ' LIMIT 1';
121                         $res = mysql_query($sql);
122                         while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
123                                 echo $row["bbs_name"].'<br />';
124                                 echo " (".date("Y-m-d H:i", strtotime($row["bbs_date"])).")<br />";
125 //                              echo shorten(strip_tags($row["bbs_mes"]),40,'...');
126                                 echo $this->bbsBody(shorten(strip_tags($row["bbs_mes"]),40,'...'));
127                         }
128                         return;
129                 }
130
131 //======================================
132 //uriʬ²ò
133 //======================================
134                 $uri = sprintf("%s%s%s","http://",$_SERVER["HTTP_HOST"],$_SERVER["REQUEST_URI"]);
135         
136                 $bbs_uri = $uri;
137                 $bbs_uri = parse_url($bbs_uri);
138                 parse_str($bbs_uri['query'],$bbs_uri_query);
139
140                 $this->currentpage = $bbs_uri_query['bbsp'];
141                 if(intval($this->currentpage)>0){
142                         $this->startpos = (intval($this->currentpage)-1) * $this->pageamount;
143                 }else{
144                         $this->currentpage = 1;
145                 }
146
147                 $bbs_uri['query'] = '';
148                 foreach($bbs_uri_query as $q_key => $q_value){
149                         if(!ereg('mode|bbsid|bbsp|bbsq', $q_key)){
150                                 $bbs_uri['query'][] = $q_key.'='.$q_value;
151                         }
152                 }
153
154
155
156                 $bbs_uri['query'] = @join("&",$bbs_uri['query']);
157                 if($bbs_uri['query']){
158                         $bbs_uri = 'http://' . $bbs_uri['host'].$bbs_uri['path'].'?'.$bbs_uri['query'];
159                         $this->pagelink = $bbs_uri.'&';
160                 }else{
161                         $bbs_uri = 'http://' . $bbs_uri['host'].$bbs_uri['path'];
162                         $this->pagelink = $bbs_uri.'?';
163                 }
164         
165
166 //======================================
167 //¥Ç¡¼¥¿½é´ü²½
168 //======================================
169                 $data['redirectTo'] = $bbs_uri;
170                 $data['pagelink'] = $this->pagelink;;
171                 $data['bbs_mes'] = '';
172                 $data['type'] = 'add_mess';
173                 $data['extrainput'] = '';
174                 $data['submit'] = 'Á÷¿®';
175                 if ($this->getOption('smily') == "yes") {
176                         $data['smilies'] = $this->insertSmilies();
177                 }else{
178                         $data['smilies'] = '';
179                 }
180
181 //======================================
182 //¥¯¥Ã¥­¡¼ÆɤߤȤê (¥Ç¡¼¥¿¤ò¥»¥Ã¥È)
183 //======================================
184                 if($member->isLoggedIn()){
185                         $data['bbs_name'] = $member->getDisplayName();
186                         $data['bbs_userinfo'] = $member->geturl();
187                 }else{
188                         if(cookieVar('comment_user')){
189                                 $data['bbs_name'] = htmlspecialchars(cookieVar('comment_user'));
190                         }else{
191                                 $data['bbs_name'] = '';
192                         }
193                         if(cookieVar('comment_userid')){
194                                 $data['bbs_userinfo'] = htmlspecialchars(cookieVar('comment_userid'));
195                         }else{
196                                 $data['bbs_userinfo'] = '';
197                         }
198                 }
199                 if(cookieVar('bbs_pass')){
200                         $data['bbs_pass'] = htmlspecialchars(cookieVar('bbs_pass'));
201                 }else{
202                         $data['bbs_pass'] = '';
203                 }
204                 if(cookieVar('comment_user')){
205                         $data['check'] = '<input type="checkbox" value="1" name="remember" checked="checked" />cookie ';
206                 }else{
207                         $data['check'] = '<input type="checkbox" value="1" name="remember" />cookie ';
208                 }
209
210 //======================================
211 //¸¡º÷·ë²Ìɽ¼¨ (µ­»öɽ¼¨¤Ç½èÍýÃæ»ß)
212 //======================================
213                 if(getVar('bbsq')){
214                         echo $this->getBBSTemplate(bbs_css);
215                         echo '<h1>Search Results</h1>';
216                         $this->bHighlight = explode(" ", getVar('bbsq'));
217
218                         $sql = "SELECT * FROM ".sql_table('plugin_bbs');
219                         $sql .= " WHERE bbs_number=".$bbs_number;
220                         foreach($this->bHighlight as $s){
221 //                              $sql .= " and ((bbs_name LIKE '%" . addslashes($s) . "%') or (bbs_mes LIKE '%" . addslashes($s) . "%') or (bbs_host LIKE '%" . addslashes($s) . "%'))";
222                                 $sql .= " and ((bbs_mes LIKE '%" . addslashes($s) . "%'))";
223                         }
224                         $sql .= " ORDER BY bbsid DESC";
225                         $res = mysql_query($sql);
226                         
227                         $num_rows = mysql_num_rows($res); 
228
229                         if(cookieVar('comment_user')){
230                                 $data['extrainput'] = '<input type="hidden" value="2" name="remember" />';
231                         }else{
232                                 $data['extrainput'] = '<input type="hidden" value="0" name="remember" />';
233                         }
234                         $data['bbsq'] = getVar('bbsq');
235                 echo TEMPLATE::fill($this->getBBSTemplate(bbs_search),$data);
236
237                         $pageswitch = $this->parse_pageswitch($bbs_number, $num_rows, urlencode(getVar('bbsq')));
238                         echo $pageswitch;
239
240                         $sql .= ' LIMIT ' . $this->startpos .',' . $this->pageamount;
241
242                         $res = mysql_query($sql);
243                         
244                         while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
245                                 $data = $row;
246                                 if (isValidMailAddress($row["bbs_userinfo"]))
247                                         $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
248                                 elseif (strstr($row["bbs_userinfo"],'http://') != false)  
249                                         $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
250                                 else
251                                         $data["bbs_userinfo"] = '';
252
253                                 $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
254
255                                 if($row["bbs_name"]== $this->deny_name){
256                                         $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
257                                 }
258
259                                 $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
260                                 $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
261
262                                 $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
263                                 $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
264
265                                 $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
266                                 $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
267                                 $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
268                                 $data['bbs_mes'] = $this->bbshighlight($row["bbs_mes"]);
269                                 $data['bbs_mes'] = $this->bbsBody($data['bbs_mes']);
270                                 if($data['baseid'] > 0){
271                                         $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
272                                 }
273                                 echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
274                         }
275
276                         echo $pageswitch;
277
278                         return;
279                 }
280
281
282 //======================================
283 //parmalinkɽ¼¨ (µ­»ö1¤Äɽ¼¨¤Ç½èÍýÃæ»ß)
284 //======================================
285                 if(!postVar('mode') && !getVar('mode') && intGetVar('bbsid')){
286                         echo '<h1>permalink</h1>';
287
288                         echo $this->getBBSTemplate(bbs_css);
289                         $sql = "SELECT * FROM ".sql_table('plugin_bbs');
290                         $sql .= " WHERE bbs_number=".$bbs_number;
291                         $sql .= " AND bbsid=".intGetVar('bbsid');
292                         $sql .= " ORDER BY bbsid DESC";
293                         $sql .= ' LIMIT 1';
294
295                         $res = mysql_query($sql);
296
297                         while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
298                                 $data = $row;
299                                 if (isValidMailAddress($row["bbs_userinfo"]))
300                                         $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
301                                 elseif (strstr($row["bbs_userinfo"],'http://') != false)  
302                                         $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
303                                 else
304                                         $data["bbs_userinfo"] = '';
305
306                                 $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
307
308                                 if($row["bbs_name"]== $this->deny_name){
309                                         $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
310                                 }
311
312                                 $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
313                                 $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
314
315                                 $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
316                                 $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
317
318                                 $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
319                                 $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
320                                 $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
321                                 $data['bbs_mes'] = $this->bbsBody($row["bbs_mes"]);
322                                 if($data['baseid'] > 0){
323                                         $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
324                                 }
325                                 echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
326                         }
327                         return;
328                 }
329
330 //======================================
331 //µ­»ö¤ÎÊÔ½¸¡¢ºï½ü²èÌÌɽ¼¨ (¥Õ¥©¡¼¥àɽ¼¨¤À¤±¤Ç½èÍýÃæ»ß)
332 //======================================
333                 if(getVar('mode') == 'edit' && intGetVar('bbsid')){
334                         $data['bbsid'] = intGetVar('bbsid');
335                         $data['type'] = 'update';
336                         $data['extrainput'] = '<input type="hidden" name="bbsid" value="'.$data['bbsid'].'" />';
337                         if(cookieVar('comment_user')){
338                                 $data['extrainput'] .= '<input type="hidden" value="2" name="remember" />';
339                         }else{
340                                 $data['extrainput'] .= '<input type="hidden" value="0" name="remember" />';
341                         }
342                         $data['check'] = '*cookie will NOT be updated';
343                         $data['submit'] = 'ÊÔ½¸ÆâÍƤòÈ¿±Ç';
344
345                         echo 'µ­»ö¤ÎÊÔ½¸';
346                         $check_pass = addslashes(md5(postVar('bbs_pass')));
347
348                         $sql = "SELECT * FROM ".sql_table('plugin_bbs');
349                         $sql .= ' WHERE bbsid='.$data['bbsid'];
350                         $sql .= ' AND bbs_number='.$bbs_number;
351                         $sql .= ' LIMIT 1';
352                         $res = mysql_query($sql);
353
354                         while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
355                                 if(postVar('bbs_pass') && $check_pass == $row["bbs_pass"]){
356                                         $data['bbs_name'] = $row["bbs_name"];
357                                         $data['bbs_userinfo'] = $row["bbs_userinfo"];
358                                         $data['bbs_mes'] = $row["bbs_mes"];
359
360                                         $data['bbs_pass'] = postVar('bbs_pass');
361                                 }else{
362                                         echo "¥Ñ¥¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹¡£";
363                                         return;
364                                 }
365                         }
366
367                         echo $this->getBBSTemplate(bbs_css);
368                         $data['DELETE'] = TEMPLATE::fill($this->getBBSTemplate(bbs_delete),$data);
369                         echo TEMPLATE::fill($this->getBBSTemplate(bbsform),$data);
370                         return;
371                 }
372
373 //======================================
374 //°úÍѤ·¤ÆÊÖ¿® (¥á¥Ã¥»¡¼¥¸¥¨¥ê¥¢¤Ëɽ¼¨¤¹¤ë¥Ç¡¼¥¿¤òÄɲÃ)
375 //======================================
376                 if(getVar('mode') == 'res' && intGetVar('bbsid')){
377                         
378                         $data['bbs_baseid'] = intGetVar('bbsid');
379                         $data['extrainput'] = '<input type="hidden" name="bbs_baseid" value="'.$data['bbs_baseid'].'" />';
380                         
381                         $sql = "SELECT * FROM ".sql_table('plugin_bbs');
382                         $sql .= ' WHERE bbsid='.$data['bbs_baseid'];
383                         $sql .= ' AND bbs_number='.$bbs_number;
384                         $sql .= ' LIMIT 1';
385                         $res = mysql_query($sql);
386
387                         while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
388                                 $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
389                                 $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
390                                 
391 //                              $quote_char = '*'.$row["bbs_number"]."-".$data['current_bbsid']."*&gt;";
392                                 $quote_char = "&gt;";
393                                 $data['bbs_mes'] = strip_tags($row["bbs_mes"]);
394                                 $data['bbs_mes'] = $this->indent($data['bbs_mes'],70,$quote_char);
395                         }
396                 }
397
398 //======================================
399 //Ä̾ïɽ¼¨ (¿·µ¬Åê¹Æ¥Õ¥©¡¼¥à¤Èµ­»ö°ìÍ÷)
400 //======================================
401 ?>
402 <script language="JavaScript" type="text/javascript">
403 <!--
404 function paste_strinL(strinL){ 
405 var input=document.forms["postMsg"].elements["bbs_mes"];
406 input.value=input.value+strinL; 
407 }
408
409 //-->
410 </script>
411 <?php
412                 echo $this->getBBSTemplate(bbs_css);
413
414                 echo '<h1>'.$this->getOption('bbstitle').'</h1>';
415                 echo '<h2>'.$this->getOption('bbsdesc').'</h2>';
416
417                 echo TEMPLATE::fill($this->getBBSTemplate(bbsform),$data);
418
419                 $sql = "SELECT * FROM ".sql_table('plugin_bbs');
420                 $sql .= " WHERE bbs_number=".$bbs_number;
421                 $sql .= " ORDER BY bbsid DESC";
422                         $res = mysql_query($sql);
423                         
424                         $num_rows = mysql_num_rows($res); 
425                         if(cookieVar('comment_user')){
426                                 $data['extrainput'] = '<input type="hidden" value="2" name="remember" />';
427                         }else{
428                                 $data['extrainput'] = '<input type="hidden" value="0" name="remember" />';
429                         }
430                 echo TEMPLATE::fill($this->getBBSTemplate(bbs_search),$data);
431                                 $data['extrainput'] = '';
432
433                         $pageswitch = $this->parse_pageswitch($bbs_number, $num_rows, '');
434                         echo $pageswitch;
435
436                 $sql .= ' LIMIT ' . $this->startpos .',' . $this->pageamount;
437
438                 $res = mysql_query($sql);
439
440                 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
441                         $data = $row;
442                         if (isValidMailAddress($row["bbs_userinfo"]))
443                                 $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
444                         elseif (strstr($row["bbs_userinfo"],'http://') != false)  
445                                 $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
446                         else
447                                 $data["bbs_userinfo"] = '';
448
449                         $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
450
451                         if($row["bbs_name"]== $this->deny_name){
452                                 $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
453                         }
454
455                         
456                         $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
457                         $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
458
459                         $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
460                         $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
461
462                         $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
463                         $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
464                         $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
465                         $data['bbs_mes'] = $this->bbsBody($row["bbs_mes"]);
466                         if($data['baseid'] > 0){
467                                 $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
468                         }
469                         echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
470                 }
471
472                         echo $pageswitch;
473
474         } //end of function doSkinVar
475
476
477         function doAction($type) {
478                 global $manager, $CONF;
479                 $blog =& $manager->getBlog($CONF['DefaultBlog']);
480
481                 // ¥Õ¥©¡¼¥à¤«¤é¥Ç¡¼¥¿¤ò¼õ¤±¼è¤ë
482                 $bbs_number = intval(postVar('bbs_number'));
483                 $data['bbs_baseid'] = intval(postVar('bbs_baseid'));
484                 $data['bbs_name'] = addslashes(strip_tags(postVar('bbs_name')));
485                 if($data['bbs_name'] == $this->deny_name){
486                         $data['bbs_name'] = '';
487                 }
488         
489                 $data['bbs_userinfo'] = strip_tags(postVar('bbs_userinfo'));
490                 $data['bbs_pass'] = addslashes(md5(postVar('bbs_pass')));
491                 $data['bbs_mes'] = trim(postVar('bbs_mes'));
492                 $data['bbs_mes'] = addslashes(strip_tags($data['bbs_mes']));
493                 $data['bbs_host'] = gethostbyaddr(serverVar('REMOTE_ADDR'));
494                 $data['bbs_ip'] = serverVar('REMOTE_ADDR');
495                 $data['bbs_date'] = date('Y-m-d H:i:s', $blog->getCorrectTime());
496                 $data['redirectTo'] = postVar('redirectTo');
497
498                 $remember = intPostVar('remember');
499                 if ($remember == 1) {
500                         $lifetime = $blog->getCorrectTime()+2592000;
501                         setcookie('comment_user',$data['bbs_name'],$lifetime,'/','',0);
502                         setcookie('comment_userid', $data['bbs_userinfo'],$lifetime,'/','',0);
503                         setcookie('bbs_pass', postVar('bbs_pass'),$lifetime,'/','',0);
504                 }elseif($remember == 0){
505                         $lifetime = $blog->getCorrectTime()-1;
506                         setcookie('comment_user','',$lifetime,'/','',0);
507                         setcookie('comment_userid', '',$lifetime,'/','',0);
508                         setcookie('bbs_pass', '',$lifetime,'/','',0);
509                 }
510
511                 if (isValidMailAddress($data['bbs_userinfo']))
512                         $data['bbs_userinfo']  = $data['bbs_userinfo'];
513                 elseif (strstr($data['bbs_userinfo'],'http://') != false)  
514                         $data['bbs_userinfo']  = $data['bbs_userinfo'];
515                 elseif (strstr($data['bbs_userinfo'],'www') != false)
516                         $data['bbs_userinfo']  = 'http://'.$data['bbs_userinfo'];
517                 else
518                         $data['bbs_userinfo'] = '';
519         
520                 switch($type){
521                         case 'add_mess': 
522
523                                 if (!empty($data['bbs_name']) and !empty($data['bbs_mes'])) {
524                                         // ¥Ç¡¼¥¿¤òÄɲ乤ë
525                                         $sql = "INSERT INTO ".sql_table('plugin_bbs')."(bbs_number, bbs_baseid, bbs_name, bbs_userinfo, bbs_pass, bbs_mes, bbs_host, bbs_ip, bbs_date) ";
526                                         $sql .= "VALUES(";
527                                         $sql .= "'" . $bbs_number . "',";
528                                         $sql .= "'" . $data['bbs_baseid'] . "',";
529                                         $sql .= "'" . $data['bbs_name'] . "',";
530                                         $sql .= "'" . $data['bbs_userinfo'] . "',";
531                                         $sql .= "'" . $data['bbs_pass'] . "',";
532                                         $sql .= "'" . $data['bbs_mes'] . "',";
533                                         $sql .= "'" . $data['bbs_host'] . "',";
534                                         $sql .= "'" . $data['bbs_ip'] . "',";
535                                         $sql .= "'" . $data['bbs_date'] . "'";
536                                         $sql .= ")";
537                                         $res = mysql_query($sql) or die("¥Ç¡¼¥¿Äɲ娥顼");
538                                         if ($res) {
539 //                                              echo "<p>½ñ¤­¹þ¤ß¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿!<br />BBS¤Ë¼«Æ°¤ÇÌá¤ê¤Þ¤¹</p>";
540 //                                              echo '<META HTTP-EQUIV="refresh" content="5;URL='.$data['redirectTo'].'">';
541                                                 header('Location: ' . $data['redirectTo']);
542                                         }
543                                 }else {
544 ?>
545 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
546 <html>
547 <head>  
548 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET?>">
549 <title>¥¨¥é¡¼</title>
550 <body>
551         <p align="center"><b>¤ªÌ¾Á°¤È¥á¥Ã¥»¡¼¥¸¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤</b>
552         <p align="center"><b>¤ªÌ¾Á°¤Ë¡Ö<?php echo $this->deny_name?>¡×¤Ï»È¤¨¤Þ¤»¤ó</b>
553         <br /><a href="javascript:history.go(-1);">Ìá¤ë</a></p>
554 </body>
555 </html>
556 <?php
557                                 }
558                                 break;
559
560                         case 'update': 
561                                 $data['bbsid'] = intval(postVar('bbsid'));
562 //                              $query =  'UPDATE '.sql_table('plugin_bbs')
563 //                                     . " SET bbs_mes='" .addslashes($data['bbs_mes']). "'"
564 //                                     . " WHERE bbsid=" . $data['bbsid'];
565                                 $query =  'UPDATE '.sql_table('plugin_bbs')
566                                        . " SET bbs_name='" .$data['bbs_name']. "',"
567                                        . " bbs_userinfo='" .$data['bbs_userinfo']. "',"
568                                        . " bbs_pass='" .$data['bbs_pass']. "',"
569                                        . " bbs_mes='" .$data['bbs_mes']. "'"
570                                        . " WHERE bbsid=" . $data['bbsid'];
571                                 $res = mysql_query($query) or die("¥Ç¡¼¥¿¹¹¿·¥¨¥é¡¼");
572                                 if ($res) {
573 //                                      echo "<p>½ñ¤­¹þ¤ß¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿!<br />BBS¤Ë¼«Æ°¤ÇÌá¤ê¤Þ¤¹</p>";
574 //                                      echo '<META HTTP-EQUIV="refresh" content="0;URL='.$data['redirectTo'].'">';
575                                         header('Location: ' . $data['redirectTo']);
576                                 }
577                                 break;
578
579                         case 'delete': 
580                                 $data['bbsid'] = intval(postVar('bbsid'));
581                                 $data['bbs_name'] = "-";
582                                 $data['bbs_userinfo'] = "-";
583                                 $query =  'UPDATE '.sql_table('plugin_bbs')
584                                        . " SET bbs_name='" .$data['bbs_name']. "',"
585                                        . " bbs_userinfo='" .$data['bbs_userinfo']. "',"
586                                        . " bbs_mes='" .$data['bbs_date']. "'"
587                                        . " WHERE bbsid=" . $data['bbsid'];
588                                 $res = mysql_query($query) or die("¥Ç¡¼¥¿¹¹¿·¥¨¥é¡¼");
589                                 if ($res) {
590                                         header('Location: ' . $data['redirectTo']);
591                                 }
592                                 break;
593
594                         case 'search': 
595                                 $bbsq = postVar('bbsq');
596                                 $bbsq = preg_replace("/(\xA1{2}|\xe3\x80{2}|\x20)+/"," ",$bbsq);
597                                 $bbsq = trim($bbsq);
598                                 if($bbsq != ""){
599                                         $bbsq = urlencode($bbsq);
600                                         header('Location: ' . postVar('pagelink') . 'bbsq=' . $bbsq );
601                                 }else{
602                                         header('Location: ' . postVar('redirectTo') );
603                                 }
604                                 break;
605                         default:
606                                 break;
607                 }       //end of switch
608         }       //end of function doAction
609
610  //////////////////////////////////////
611 ///.    ÀÞ¤êÊÖ¤·¤È¥¤¥ó¥Ç¥ó¥È
612         function indent( $str, $width, $ind ){
613                 ///     $ind ¤¬¿ô»ú¤Î»þ¤ÏÁ´¤Æ¥¤¥ó¥Ç¥ó¥È¡¢Ê¸»ú¤Î»þ¤Ï¤Ö¤é²¼¤¬¤ê
614                 if( is_int( $ind ) ){
615                         $spc = str_repeat( ' ', $ind );
616                         $lc = 1;
617                 }else{
618 //                      $spc = str_repeat( ' ', strlen( $ind ) );
619                         $spc = str_repeat( $ind, 1 );
620                         $lc = 0;        ///     ¤Ö¤é²¼¤¬¤ê¥Õ¥é¥°
621                 }
622                 $lines = explode( "\n", $str );
623                 foreach( $lines as $line ){
624                         if(ereg($ind, $line)){
625                                 $width += strlen( $line ) * substr_count($line,$ind);
626                         }
627                         $p = 0;         ///     Ê¬³ä°ÌÃÖ
628                         $len = strlen( $line );
629                         while( $p < $len ){
630                                 if (extension_loaded('mbstring')) { 
631                                         $tmp = mb_strcut( $line, $p, $width ,_CHARSET);
632                                 }elseif(function_exists('jstrcut') && strtolower (_CHARSET) == 'euc-jp'){
633                                         $tmp = jstrcut( $line, $p, $width );
634                                 }else{
635                                         $tmp = $line;
636                                 }
637                                 ///     ºÇ½é¤Î¹Ô¤À¤±¤Ö¤é²¼¤¬¤ê¥¤¥ó¥Ç¥ó¥È
638                                 if( 0 == ($p+$lc) ){
639                                         $newstr .= $ind.$tmp."\n";
640                                         $lc++;
641                                 }
642                                 else    $newstr .= $spc.$tmp."\n";
643                                 $p += strlen( $tmp );
644                         }
645                 }
646                 return  $newstr;
647         }
648
649  //////////////////////////////////////
650
651         function bbshighlight($data) {
652                 if ($this->bHighlight){
653                         $temp = implode($this->bHighlight,'|');
654                         $data = preg_replace("/($temp)/","<span class=\"bbs_search\">\\1</span>",$data);
655                 }
656                 return $data;
657         }
658
659         function bbsBody($body) {
660         
661                 // trim away whitespace and newlines at beginning and end
662                 $body = trim($body);
663
664                 // add <br /> tags
665                 $body = addBreaks($body);
666         
667                 // create hyperlinks for http:// addresses
668                 // there's a testcase for this in /build/testcases/urllinking.txt
669                 $replaceFrom = array(
670                         '/([^:\/\/\w]|^)((https:\/\/)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',           
671                         '/([^:\/\/\w]|^)((http:\/\/|www\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
672                         '/([^:\/\/\w]|^)((ftp:\/\/|ftp\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
673                         '/([^:\/\/\w]|^)(mailto:(([a-zA-Z\@\%\.\-\+_])+))/ie'                   
674                 );
675                 $replaceTo = array(
676                         '$this->bbscreateLinkCode("\\1", "\\2","https")',               
677                         '$this->bbscreateLinkCode("\\1", "\\2","http")',
678                         '$this->bbscreateLinkCode("\\1", "\\2","ftp")',
679                         '$this->bbscreateLinkCode("\\1", "\\3","mailto")'                       
680                 );
681                 $body = preg_replace($replaceFrom, $replaceTo, $body);
682
683                 if ($this->getOption('smily') == "yes") {
684                         $body = $this->doSmilies($body);
685                 }
686
687                 return $body;
688         }
689         
690         function bbscreateLinkCode($pre, $url, $protocol = 'http') {
691                 $post = '';
692         
693                 // it's possible that $url ends with an entities 
694                 // since htmlspecialchars is applied before URL linking
695                 if (preg_match('/(&\w+;)+$/i', $url, $matches)) {
696                         $post = $matches[0];    // found entities (1 or more)
697                         $url = substr($url, 0, strlen($url) - strlen($post));
698                 }
699
700                 if (!ereg('^'.$protocol.'://',$url))
701                         $linkedUrl = $protocol . (($protocol == 'mailto') ? ':' : '://') . $url;
702                 else
703                         $linkedUrl = $url;
704                         
705                         
706                 if ($protocol != 'mailto')
707                         $displayedUrl = $linkedUrl;
708                 else
709                         $displayedUrl = $url;
710                 return $pre . '<a href="'.$linkedUrl.'">'.$displayedUrl.'</a>' . $post;
711         }
712         
713
714         function insertSmilies() {
715                 global $CONF;
716
717 //              $url = $this->getAdminURL();
718                 $url = $CONF['PluginURL'] . 'fancytext/';
719                 
720                 $i = 0;
721                 foreach ($this->smiley as $smile => $img) {
722                         $data .= "<a href=\"JavaScript:paste_strinL('".$smile."')\">";
723                         $data .= '<img src="'.$url.$img.'" align="absmiddle" />';
724                         $data .= '</a>';
725                         $i++;
726                         if($i % 4 == 0){
727                                 $data .= "<br />\n";
728                         }
729                 }       
730                 return $data;
731         }
732         
733         function doSmilies($data) {
734                 global $CONF;
735                 
736 //              $url = $this->getAdminURL();
737                 $url = $CONF['PluginURL'] . 'fancytext/';
738                 
739                 foreach ($this->smiley as $smile => $img) {
740                         $data = str_replace($smile, '<img src="'.$url.$img.'" align="absmiddle" />', $data);
741                 }       
742                 
743                 return $data;
744         }
745         
746
747         function parse_pageswitch($bbs_number, $totalamount = 0, $bbsq = ''){
748                 if($bbsq !== ''){
749                         $pagelink = $this->pagelink . 'bbsq=' . $bbsq .'&';
750                 }else{
751                         $pagelink = $this->pagelink;
752                 }
753
754                 $totalpages = ceil($totalamount/$this->pageamount);
755                 if($this->startpos > $totalamount){
756                         $this->currentpage = $totalpages;
757                         $this->startpos = $totalamount-$this->pageamount;
758                 }
759         
760                 $buf = '<div class="pageswitch">'."\n";
761         
762                 $this->currentpage > 1 ? $prevpage = $this->currentpage - 1 : $prevpage = 0;
763                 $nextpage = $this->currentpage + 1;
764                 
765                 if($prevpage){
766                         $prevpagelink = $pagelink. 'bbsp=' . $prevpage;
767                         $buf .= "\n".'<a href="'.$prevpagelink.'" title="Á°¤Î¥Ú¡¼¥¸">&laquo;Prev</a>';
768                 }
769         
770                 $buf .= "\n |";
771         
772                 for($i=1; $i<=$totalpages; $i++){
773                         if($i == $this->currentpage){
774                                 $buf .= " <strong>{$this->currentpage}</strong> |";
775                         }elseif($totalpages<10 || $i<4 || $i>$totalpages-3){
776                                 $buf .= ' <a href="'.$pagelink. 'bbsp=' . $i.'">'.$i.'</a> |';
777                         }else{
778                                 if($i<$this->currentpage-1 || $i>$this->currentpage+1){
779                                         if(($i==4 && ($this->currentpage>5 || $this->currentpage==1)) || $i==$this->currentpage+2){
780                                                 $buf .= '...|';
781                                         }
782                                 }else{
783                                         $buf .= ' <a href="'.$pagelink. 'bbsp=' . $i.'">'.$i.'</a> |';
784                                 }
785                         }
786                 }
787                 
788                 if($totalpages >= $nextpage){
789                         $nextpagelink = $pagelink. 'bbsp=' . $nextpage;
790                         $buf .= ' <a href="'.$nextpagelink.'" title="¼¡¤Î¥Ú¡¼¥¸">Next&raquo;</a>'."\n";
791                 }
792                 $buf .= "</div>\n</form>\n";
793                 
794                 return $buf;
795                 
796         }
797
798         function getBBSTemplate($type) {
799                 global $DIR_PLUGINS;
800                 
801 //              $url = $this->getDirectory() . $type . '.template';
802                 $filename = $DIR_PLUGINS . 'fancytext/' . $type . '.template';
803                 
804                 if (!file_exists($filename)) 
805                         return '';
806                         
807                 // read file and return it
808                 $fd = fopen ($filename, 'r');
809                 $contents = fread ($fd, filesize ($filename));
810                 fclose ($fd);
811                 
812                 return $contents;
813                 
814         }
815
816
817 }
818 ?>