OSDN Git Service

Ticket処理を追加
[nucleus-jp/nucleus-plugins.git] / trunk / NP_TrackBack / trackback / index.php
1 <?php
2
3         $strRel = '../../../'; 
4         include($strRel . 'config.php');
5         include($DIR_LIBS . 'PLUGINADMIN.php');
6         include('template.php');
7         
8         
9         // Send out Content-type
10         sendContentType('application/xhtml+xml', 'admin-trackback', _CHARSET);  
11
12         // Compatiblity with Nucleus < = 2.0
13         if (!function_exists('sql_table')) { function sql_table($name) { return 'nucleus_' . $name; } }
14         
15
16
17         $oPluginAdmin = new PluginAdmin('TrackBack');
18
19         if (!($member->isLoggedIn() && $member->isAdmin()))
20         {
21                 $oPluginAdmin->start();
22                 echo '<p>' . _ERROR_DISALLOWED . '</p>';
23                 $oPluginAdmin->end();
24                 exit;
25         }
26         
27         // Actions
28         $action = requestVar('action');
29         $aActionsNotToCheck = array(
30                 '',
31         );
32         if (!in_array($action, $aActionsNotToCheck)) {
33                 if (!$manager->checkTicket()) doError(_ERROR_BADTICKET);
34         }
35         $oPluginAdmin->start();
36         
37 //modify start+++++++++
38                 $plug =& $oPluginAdmin->plugin;
39                 $tableVersion = $plug->checkTableVersion();
40
41                 // include language file for this plugin 
42                 $language = ereg_replace( '[\\|/]', '', getLanguageName()); 
43                 if (file_exists($plug->getDirectory().'language/'.$language.'.php')) 
44                         include_once($plug->getDirectory().'language/'.$language.'.php'); 
45                 else 
46                         include_once($plug->getDirectory().'language/'.'english.php');
47 //modify end+++++++++
48
49         $mTemplate = new Trackback_Template();
50         $mTemplate->set ('CONF', $CONF);
51         $mTemplate->set ('plugid', $plug->getID());
52         $mTemplate->template('templates/menu.html');
53         echo $mTemplate->fetch();
54
55         $oTemplate = new Trackback_Template();
56         $oTemplate->set ('CONF', $CONF);
57
58         switch($action) {
59
60 //modify start+++++++++
61                 case 'tableUpgrade':
62                         mysql_query("
63                                 CREATE TABLE IF NOT EXISTS
64                                         ".sql_table('plugin_tb_lookup')."
65                                 (
66                                         `link`      TEXT            NOT NULL, 
67                                         `url`       TEXT            NOT NULL, 
68                                         `title`     TEXT, 
69                                         
70                                         PRIMARY KEY (`link` (100))
71                                 )
72                         ");
73                         echo $q = "ALTER TABLE ".sql_table('plugin_tb')."
74                                  ADD `block` TINYINT( 4 ) NOT NULL AFTER `url` ,
75                                  ADD `spam` TINYINT( 4 ) NOT NULL AFTER `block` ,
76                                  ADD `link` TINYINT( 4 ) NOT NULL AFTER `spam` ,
77                                  CHANGE `url` `url` TEXT NOT NULL,
78                                  CHANGE `title` `title` TEXT NOT NULL,
79                                  CHANGE `excerpt` `excerpt` TEXT NOT NULL,
80                                  CHANGE `blog_name` `blog_name` TEXT NOT NULL,
81                                  DROP PRIMARY KEY,
82                                  ADD `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;";
83                         $res = @mysql_query($q);
84                         if (!$res){
85                                 echo 'Could not alter table: ' . mysql_error();
86                         }else{
87                                 $tableVersion = 1;
88                                 $oTemplate->template('templates/updatetablefinished.html');
89                         }
90                         @mysql_query('ALTER TABLE `' . sql_table('plugin_tb') . '` ADD INDEX `tb_id_block_timestamp_idx` ( `tb_id`, `block`, `timestamp` DESC )');
91                         break;
92 //modify end+++++++++
93
94                 case 'block':
95                         $tb = intRequestVar('tb');
96
97                         $res = mysql_query ("
98                                 UPDATE
99                                         ".sql_table('plugin_tb')."
100                                 SET
101                                         block = 1
102                                 WHERE
103                                         id = '".$tb."'
104                         ");
105
106                         $action = requestVar('next');
107                         break;
108                 case 'blocked_clear':
109                         $res = mysql_query ("DELETE FROM ".sql_table('plugin_tb')." WHERE block = 1");
110                         $action = requestVar('next');
111                         break;
112                         
113                 case 'blocked_spamclear':
114                         $res = mysql_query ("DELETE FROM ".sql_table('plugin_tb')." WHERE block = 1 and spam = 1");
115                         $action = requestVar('next');
116                         break;
117
118                 case 'unblock':
119                         $tb = intRequestVar('tb');
120
121                         $res = mysql_query ("
122                                 UPDATE
123                                         ".sql_table('plugin_tb')."
124                                 SET
125                                         block = 0
126                                 WHERE
127                                         id = '".$tb."'
128                         ");
129
130                         $action = requestVar('next');
131                         break;
132
133                 case 'delete':
134                         $tb = intRequestVar('tb');
135
136                         $res = mysql_query ("
137                                 DELETE FROM
138                                         ".sql_table('plugin_tb')."
139                                 WHERE
140                                         id = '".$tb."'
141                         ");
142
143                         $action = requestVar('next');
144                         break;
145
146                 case 'sendping':
147                         $title     = requestVar('title');
148                         $url       = requestVar('url');
149                         $excerpt   = requestVar('excerpt');
150                         $blog_name = requestVar('blog_name');
151                         $ping_url  = requestVar('ping_url');            
152
153                         // No charset conversion needs to be done here, because
154                         // the charset used to receive the info is used to send
155                         // it...
156
157                         if ($ping_url) {
158                                 $error = $oPluginAdmin->plugin->sendPing(0, $title, $url, $excerpt, $blog_name, $ping_url);
159                                 
160                                 if ($error) {
161                                         echo '<b>TrackBack Error:' . $error . '</b>';
162                                 }
163                         }               
164                         
165                         $action = requestVar('next');
166                         break;
167                 case 'ping':
168                         $id  = intRequestVar('id');
169                         
170                         $usePathInfo = ($CONF['URLMode'] == 'pathinfo');
171                         if ($usePathInfo)
172                         @ include($strRel . 'fancyurls.config.php');
173                         
174                         global $manager;
175                         $itemData = $manager->getItem($id, 0, 0);
176                         
177                         if(is_array($itemData)){
178                                 $blog =& $manager->getBlog($itemData['blogid']);
179                                 $CONF['ItemURL'] = ($usePathInfo)? preg_replace('/\/$/', '', $blog->getURL()): $blog->getURL();
180                                 $itemData['url'] = createItemLink($id);
181                                 $itemData['excerpt'] = shorten(strip_tags($itemData['body'].$itemData['more']), 250, '...');
182                                 $itemData['blogname'] = $blog->getName();
183                         }else{
184                                 $itemData = array();
185                                 $itemData['url'] = $CONF['IndexURL'];
186                                 $itemData['blogname'] = $CONF['SiteName'];
187                         }
188                         $oTemplate->set('item', $itemData);
189                         
190                         $oTemplate->template('templates/ping.html');
191                         break;                  
192         }
193
194         // Pages 
195         switch($action) {
196                 
197                 case 'help':
198                         $oTemplate->template('help.html');                      
199                         break;
200
201                 case 'ping':
202                         $oTemplate->template('templates/ping.html');                    
203                         break;
204
205                 case 'blocked':
206                         $start  = intRequestVar('start') ? intRequestVar('start') : 0;
207                         $amount = intRequestVar('amount') ? intRequestVar('amount') : 25;
208
209                         $rres = mysql_query ("
210                                 SELECT
211                                         COUNT(*) AS count
212                                 FROM
213                                         ".sql_table('plugin_tb')." AS t,
214                                         ".sql_table('item')." AS i
215                                 WHERE
216                                         t.tb_id = i.inumber AND
217                                         t.block = 1
218                         ");                             
219                                                 
220                         if ($row = mysql_fetch_array($rres))
221                                 $count = $row['count'];
222                         else
223                                 $count = 0;
224                                         
225                         $rres = mysql_query ("
226                                 SELECT
227                                         i.ititle AS story,
228                                         i.inumber AS story_id,
229                                         t.id AS id,
230                                         t.title AS title,
231                                         t.blog_name AS blog_name,
232                                         t.excerpt AS excerpt,
233                                         t.url AS url,
234                                         -- UNIX_TIMESTAMP(t.timestamp) AS timestamp,
235                                         t.timestamp AS timestamp,
236                                         t.spam AS spam,
237                                         t.link AS link
238                                 FROM
239                                         ".sql_table('plugin_tb')." AS t,
240                                         ".sql_table('item')." AS i
241                                 WHERE
242                                         t.tb_id = i.inumber AND
243                                         t.block = 1
244                                 ORDER BY
245                                         timestamp DESC
246                                 LIMIT
247                                         ".$start.",".$amount."
248                         ");                             
249                         
250                         $items = array();
251
252                         while ($rrow = mysql_fetch_array($rres))
253                         {
254                                 $rrow['title']          = $oPluginAdmin->plugin->_cut_string($rrow['title'], 50);
255                                 $rrow['title']          = $oPluginAdmin->plugin->_strip_controlchar($rrow['title']);
256                                 $rrow['title']          = htmlspecialchars($rrow['title']);
257 //                              $rrow['title']          = _CHARSET == 'UTF-8' ? $rrow['title'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['title']);
258
259                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_cut_string($rrow['blog_name'], 50);
260                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_strip_controlchar($rrow['blog_name']);
261                                 $rrow['blog_name']      = htmlspecialchars($rrow['blog_name']);
262 //                              $rrow['blog_name']      = _CHARSET == 'UTF-8' ? $rrow['blog_name'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['blog_name']);
263
264                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_cut_string($rrow['excerpt'], 800);
265                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_strip_controlchar($rrow['excerpt']);
266                                 $rrow['excerpt']        = htmlspecialchars($rrow['excerpt']);
267 //                              $rrow['excerpt']        = _CHARSET == 'UTF-8' ? $rrow['excerpt'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['excerpt']);
268
269                                 $rrow['url']            = htmlspecialchars($rrow['url'], ENT_QUOTES);
270                                 $rrow['timestamp']              = htmlspecialchars($rrow['timestamp'], ENT_QUOTES);
271                                 
272                                 $blog = & $manager->getBlog(getBlogIDFromItemID($item['itemid']));
273                                 $rrow['story_url'] = $oPluginAdmin->plugin->_createItemLink($rrow['story_id'], $blog);
274                                 $rrow['story'] = htmlspecialchars(strip_tags($rrow['story']), ENT_QUOTES);
275
276                                 $items[] = $rrow;
277                         }
278                         
279                         $oTemplate->set ('amount', $amount);
280                         $oTemplate->set ('count', $count);
281                         $oTemplate->set ('start', $start);
282                         $oTemplate->set ('items', $items);
283                         $oTemplate->template('templates/blocked.html');                 
284                         break;
285
286                 case 'all':
287                         $start  = intRequestVar('start') ? intRequestVar('start') : 0;
288                         $amount = intRequestVar('amount') ? intRequestVar('amount') : 25;
289
290                         $rres = mysql_query ("
291                                 SELECT
292                                         COUNT(*) AS count
293                                 FROM
294                                         ".sql_table('plugin_tb')." AS t,
295                                         ".sql_table('item')." AS i
296                                 WHERE
297                                         t.tb_id = i.inumber AND
298                                         t.block = 0
299                         ");                             
300                                                 
301                         if ($row = mysql_fetch_array($rres))
302                                 $count = $row['count'];
303                         else
304                                 $count = 0;
305                                         
306                         $rres = mysql_query ("
307                                 SELECT
308                                         i.ititle AS story,
309                                         i.inumber AS story_id,
310                                         t.id AS id,
311                                         t.title AS title,
312                                         t.blog_name AS blog_name,
313                                         t.excerpt AS excerpt,
314                                         t.url AS url,
315                                         UNIX_TIMESTAMP(t.timestamp) AS timestamp
316                                 FROM
317                                         ".sql_table('plugin_tb')." AS t,
318                                         ".sql_table('item')." AS i
319                                 WHERE
320                                         t.tb_id = i.inumber AND
321                                         t.block = 0
322                                 ORDER BY
323                                         timestamp DESC
324                                 LIMIT
325                                         ".$start.",".$amount."
326                         ");                             
327                         
328                         $items = array();
329
330                         while ($rrow = mysql_fetch_array($rres))
331                         {
332                                 $rrow['title']          = $oPluginAdmin->plugin->_cut_string($rrow['title'], 50);
333                                 $rrow['title']          = $oPluginAdmin->plugin->_strip_controlchar($rrow['title']);
334                                 $rrow['title']          = htmlspecialchars($rrow['title']);
335 //                              $rrow['title']          = _CHARSET == 'UTF-8' ? $rrow['title'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['title']);
336
337                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_cut_string($rrow['blog_name'], 50);
338                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_strip_controlchar($rrow['blog_name']);
339                                 $rrow['blog_name']      = htmlspecialchars($rrow['blog_name']);
340 //                              $rrow['blog_name']      = _CHARSET == 'UTF-8' ? $rrow['blog_name'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['blog_name']);
341
342                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_cut_string($rrow['excerpt'], 800);
343                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_strip_controlchar($rrow['excerpt']);
344                                 $rrow['excerpt']        = htmlspecialchars($rrow['excerpt']);
345 //                              $rrow['excerpt']        = _CHARSET == 'UTF-8' ? $rrow['excerpt'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['excerpt']);
346
347                                 $rrow['url']            = htmlspecialchars($rrow['url'], ENT_QUOTES);
348
349                                 $blog = & $manager->getBlog(getBlogIDFromItemID($item['itemid']));
350                                 $rrow['story_url'] = $oPluginAdmin->plugin->_createItemLink($rrow['story_id'], $blog);
351                                 $rrow['story'] = htmlspecialchars(strip_tags($rrow['story']), ENT_QUOTES);
352
353                                 $items[] = $rrow;
354                         }
355                         
356                         $oTemplate->set ('amount', $amount);
357                         $oTemplate->set ('count', $count);
358                         $oTemplate->set ('start', $start);
359                         $oTemplate->set ('items', $items);
360                         $oTemplate->template('templates/all.html');                     
361                         break;          
362                 
363                 case 'list':
364                         $id     = requestVar('id');
365                         $start  = intRequestVar('start') ? intRequestVar('start') : 0;
366                         $amount = intRequestVar('amount') ? intRequestVar('amount') : 25;
367
368                         $ires = mysql_query ("
369                                 SELECT
370                                         ititle,
371                                         inumber
372                                 FROM
373                                         ".sql_table('item')."
374                                 WHERE
375                                         inumber = '".$id."'
376                         ");
377                         
378                         if ($irow = mysql_fetch_array($ires))
379                         {
380                                 $story['id']    = $id;
381                                 $story['title'] = $irow['ititle'];
382
383                                 $rres = mysql_query ("
384                                         SELECT
385                                                 COUNT(*) AS count
386                                         FROM
387                                                 ".sql_table('plugin_tb')." AS t
388                                         WHERE
389                                                 t.tb_id = '".$id."' AND
390                                                 t.block = 0
391                                 ");                             
392                                                         
393                                 if ($row = mysql_fetch_array($rres))
394                                         $count = $row['count'];
395                                 else
396                                         $count = 0;
397                                         
398                                 $rres = mysql_query ("
399                                         SELECT
400                                                 t.id AS id,
401                                                 t.title AS title,
402                                                 t.blog_name AS blog_name,
403                                                 t.excerpt AS excerpt,
404                                                 t.url AS url,
405                                         UNIX_TIMESTAMP(t.timestamp) AS timestamp
406                                         FROM
407                                                 ".sql_table('plugin_tb')." AS t
408                                         WHERE
409                                                 t.tb_id = '".$id."' AND
410                                                 t.block = 0
411                                         ORDER BY
412                                                 timestamp DESC
413                                         LIMIT
414                                                 ".$start.",".$amount."
415                                 ");                             
416                                 
417                                 $items = array();
418         
419                                 while ($rrow = mysql_fetch_array($rres))
420                                 {
421                                         $rrow['title']          = $oPluginAdmin->plugin->_cut_string($rrow['title'], 50);
422                                         $rrow['title']          = $oPluginAdmin->plugin->_strip_controlchar($rrow['title']);
423                                         $rrow['title']          = htmlspecialchars($rrow['title']);
424 //                                      $rrow['title']          = _CHARSET == 'UTF-8' ? $rrow['title'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['title']);
425         
426                                         $rrow['blog_name']      = $oPluginAdmin->plugin->_cut_string($rrow['blog_name'], 50);
427                                         $rrow['blog_name']      = $oPluginAdmin->plugin->_strip_controlchar($rrow['blog_name']);
428                                         $rrow['blog_name']      = htmlspecialchars($rrow['blog_name']);
429 //                                      $rrow['blog_name']      = _CHARSET == 'UTF-8' ? $rrow['blog_name'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['blog_name']);
430         
431                                         $rrow['excerpt']        = $oPluginAdmin->plugin->_cut_string($rrow['excerpt'], 800);
432                                         $rrow['excerpt']        = $oPluginAdmin->plugin->_strip_controlchar($rrow['excerpt']);
433                                         $rrow['excerpt']        = htmlspecialchars($rrow['excerpt']);
434 //                                      $rrow['excerpt']        = _CHARSET == 'UTF-8' ? $rrow['excerpt'] : $oPluginAdmin->plugin->_utf8_to_entities($rrow['excerpt']);
435         
436                                         $rrow['url']            = htmlspecialchars($rrow['url'], ENT_QUOTES);
437                                         $rrow['story'] = htmlspecialchars(strip_tags($rrow['story']), ENT_QUOTES);
438                                         $items[] = $rrow;
439                                 }
440                                 
441                                 $oTemplate->set ('amount', $amount);
442                                 $oTemplate->set ('count', $count);
443                                 $oTemplate->set ('start', $start);
444                                 $oTemplate->set ('items', $items);
445                                 $oTemplate->set ('story', $story);
446                                 $oTemplate->template('templates/list.html');                    
447                         }
448                         
449                         break;
450                                                         
451                 
452                 case 'index':
453                         $bres = mysql_query ("
454                                 SELECT
455                                         bnumber AS bnumber,
456                                         bname AS bname,
457                                         burl AS burl
458                                 FROM
459                                         ".sql_table('blog')."
460                                 ORDER BY
461                                         bname
462                         ");
463                         
464                         $blogs = array();
465                         
466                         while ($brow = mysql_fetch_array($bres))
467                         {
468                                 $ires = mysql_query ("
469                                         SELECT
470                                                 i.inumber AS inumber,
471                                             i.ititle AS ititle,
472                                             COUNT(*) AS total
473                                         FROM
474                                                 ".sql_table('item')." AS i,
475                                                 ".sql_table('plugin_tb')." AS t
476                                         WHERE
477                                                 i.iblog = ".$brow['bnumber']." AND
478                                                 t.tb_id = i.inumber AND
479                                                 t.block = 0
480                                         GROUP BY
481                                                 i.inumber
482                     ORDER BY
483                         i.inumber DESC
484                                 ");                             
485
486                                 $items = array();
487
488                                 while ($irow = mysql_fetch_array($ires))
489                                 {
490                                         $items[] = $irow;
491                                 }
492
493                                 $brow['items'] = $items;
494                                 $blogs[] = $brow;
495                         }
496
497                         $oTemplate->set ('blogs', $blogs);
498                         $oTemplate->template('templates/index.html');
499                         break;
500
501                 default:
502                         //modify start+++++++++
503                         if(!$tableVersion){
504                                 $oTemplate->template('templates/updatetable.html');
505                         }
506                         //modify end+++++++++
507                         break;
508         }
509
510         // Create the admin area page
511         echo $oTemplate->fetch();
512         $oPluginAdmin->end();   
513
514 ?>