OSDN Git Service

git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@1020 1ca29b6e-896d...
[nucleus-jp/nucleus-plugins.git] / NP_TrackBack / branches / DOM-branch / trackback / grid.php
1 <?php
2
3         $strRel = '../../../'; 
4         include($strRel . 'config.php');
5         include($DIR_LIBS . 'PLUGINADMIN.php');
6         include('template.php');
7
8         // Send out Content-type
9         header('Pragma: no-cache');     
10         header("Content-Type: text/xml");
11         sendContentType('text/xml', 'admin-trackback', _CHARSET);       
12
13         $oPluginAdmin = new PluginAdmin('TrackBack');
14
15         if ( ! $member->isLoggedIn() )
16         {
17                 $oPluginAdmin->start();
18                 echo '<p>' . _ERROR_DISALLOWED . '</p>';
19                 $oPluginAdmin->end();
20                 exit;
21         }
22         
23         // Actions
24         $action = requestVar('action');
25         $aActionsNotToCheck = array(
26                 '',
27         );
28         if (!in_array($action, $aActionsNotToCheck)) {
29                 if (!$manager->checkTicket()) doError(_ERROR_BADTICKET);
30         }
31         
32 //modify start+++++++++
33                 $plug =& $oPluginAdmin->plugin;
34                 $tableVersion = $plug->checkTableVersion();
35
36                 // include language file for this plugin 
37                 $language = ereg_replace( '[\\|/]', '', getLanguageName()); 
38                 if (file_exists($plug->getDirectory().'language/'.$language.'.php')) 
39                         include_once($plug->getDirectory().'language/'.$language.'.php'); 
40                 else 
41                         include_once($plug->getDirectory().'language/'.'english.php');
42 //modify end+++++++++
43
44         $oTemplate = new Trackback_Template();
45         $oTemplate->set ('CONF', $CONF);
46         $oTemplate->set ('plugindirurl', $oPluginAdmin->plugin->getAdminURL());
47         $oTemplate->set ('ticket', $manager->_generateTicket());
48                 
49         $whereClause = '';
50         if( ! $member->isAdmin() ){
51                 // where clause
52                 $res = sql_query('SELECT tblog FROM '.sql_table('team').' WHERE tadmin = 1 AND tmember = '.$member->getID() );
53                 $adminBlog = array();
54                 while ($row = mysql_fetch_array($res)){
55                         $adminBlog[] = $row[0];
56                 }
57                 if($adminBlog)
58                         $whereClause =  ' i.iblog in (' . implode(', ', $adminBlog) . ') ';
59                         
60                 if( $whereClause )
61                         $whereClause = ' AND ( i.iauthor = '.$member->getID().' OR ' . $whereClause . ' )';
62                 else
63                         $whereClause = ' AND i.iauthor = '.$member->getID();
64         }
65                         
66         $requiredItemEditRights = array(
67                 'dodelete',
68                 'doblock',
69                 'dounblock',
70         );
71         $safeids = array();
72         if (in_array($action, $requiredItemEditRights)) {
73                 $ids = explode(',', requestVar('ids'));
74                 $safeids = array();
75                 foreach( $ids as $id ){
76                         $id = trim($id);
77                         if( is_numeric($id) )
78                                 $safeids[] = $id;
79                 }       
80                 if( ! $member->isAdmin() ){
81                         $query = 'SELECT t.id  FROM ' . sql_table('plugin_tb') . ' t, ' . sql_table('item') . ' i WHERE t.tb_id = i.inumber AND t.id in ( '. implode(',', $safeids) . ' ) '. $whereClause ;
82                         $res = sql_query($query);
83                         $safeids = array();
84                         while ($row = mysql_fetch_array($res)){
85                                 $safeids[] = $row[0];
86                         }
87                 }
88         }
89         
90         // Pages 
91         switch($action) {
92                 
93                 case 'ajax':
94                         $type = requestVar('type') == 'all' ? 'all' : 'blocked' ;
95                         $filter['all'] = ' t.block = 0 ';
96                         $filter['blocked'] = ' t.block = 1 ';
97
98                         $start  = intRequestVar('offset') ? intRequestVar('offset') : 0;
99                         $amount = intRequestVar('page_size') ? intRequestVar('page_size') : 25;
100
101                         $colname = array();
102                         $colname['date'] = 'timestamp';
103                         $colname['item'] = 'story_id';
104                         $colname['title'] = 'title';
105                         
106                         $sort_col = requestVar('sort_col');
107                         $sort_col = $colname[$sort_col];
108                         if( !$sort_col ) $sort_col = $colname['date'];
109
110                         $sort_dir = ( requestVar('sort_dir') == 'ASC' ) ? 'ASC' : 'DESC';
111
112                         $rres = sql_query ("
113                         SELECT
114                         count(*) as count
115                         FROM
116                         ".sql_table('plugin_tb')." AS t,
117                         ".sql_table('item')." AS i
118                         WHERE
119                         t.tb_id = i.inumber AND
120                         ".$filter[$type].$whereClause);
121                         $rrow = mysql_fetch_array($rres);
122                         $count = $rrow['count'];
123                         
124                         $rres = sql_query ("
125                         SELECT
126                         i.ititle AS story,
127                         i.inumber AS story_id,
128                         t.id AS id,
129                         t.title AS title,
130                         t.blog_name AS blog_name,
131                         t.excerpt AS excerpt,
132                         t.url AS url,
133                         t.spam AS spam,
134                         UNIX_TIMESTAMP(t.timestamp) AS timestamp
135                         FROM
136                         ".sql_table('plugin_tb')." AS t,
137                         ".sql_table('item')." AS i
138                         WHERE
139                         t.tb_id = i.inumber AND
140                         ".$filter[$type].$whereClause."
141                         ORDER BY
142                         ".$sort_col." ".$sort_dir." 
143                         LIMIT
144                         ".$start.",".$amount."
145                         ");
146                         
147                         $items = array();
148                         
149                         while ($rrow = mysql_fetch_array($rres))
150                         {
151                                 $rrow['title']          = $oPluginAdmin->plugin->_cut_string($rrow['title'], 50);
152                                 $rrow['title']          = $oPluginAdmin->plugin->_strip_controlchar($rrow['title']);
153                                 $rrow['title']          = htmlspecialchars($rrow['title']);
154                                 $rrow['title']          = preg_replace("/-+/","-",$rrow['title']);
155                                 
156                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_cut_string($rrow['blog_name'], 50);
157                                 $rrow['blog_name']      = $oPluginAdmin->plugin->_strip_controlchar($rrow['blog_name']);
158                                 $rrow['blog_name']      = htmlspecialchars($rrow['blog_name']);
159                                 $rrow['blog_name']              = preg_replace("/-+/","-",$rrow['blog_name']);
160                                 
161                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_cut_string($rrow['excerpt'], 100);
162                                 $rrow['excerpt']        = $oPluginAdmin->plugin->_strip_controlchar($rrow['excerpt']);
163                                 $rrow['excerpt']        = htmlspecialchars($rrow['excerpt']);
164                                 $rrow['excerpt']                = preg_replace("/-+/","-",$rrow['excerpt']);
165                                 
166                                 $rrow['url']            = htmlspecialchars($rrow['url'], ENT_QUOTES);
167                                 
168                                 $blog = & $manager->getBlog(getBlogIDFromItemID($rrow['story_id']));
169                                 $rrow['story_url'] = $oPluginAdmin->plugin->_createItemLink($rrow['story_id'], $blog);
170                                 $rrow['story'] = htmlspecialchars(strip_tags($rrow['story']), ENT_QUOTES);
171                                 
172                                 $items[] = $rrow;
173                         }
174                         
175                         $oTemplate->set ('amount', $amount);
176                         $oTemplate->set ('count', $count);
177                         $oTemplate->set ('start', $start);
178                         $oTemplate->set ('items', $items);
179                         $oTemplate->template('templates/response_'.$type.'.xml');                       
180                         break;
181                         
182                 case 'dodelete':
183                         if( count($safeids) > 0 ){              
184                                 $safeids = implode(',',$safeids);
185                                 
186                                 $res = sql_query(
187                                                 ' DELETE FROM '
188                                                 . sql_table('plugin_tb')
189                                                 . ' WHERE id in (' . $safeids. ')'
190                                 );
191                                 $oTemplate->set ('message', $safeids . ' deleted.');
192                         } else {
193                                 $oTemplate->set ('message', 'no rows deleted.');
194                         }
195                         
196                         $oTemplate->template('templates/response_dodelete.xml');
197                         break;
198                         
199                 case 'doblock':
200                         if( count($safeids) > 0 ){              
201                                 $safeids = implode(',',$safeids);
202                                 
203                                 $res = sql_query(
204                                                 ' UPDATE '
205                                                 . sql_table('plugin_tb')
206                                                 .' SET block = 1 '
207                                                 . ' WHERE id in (' . $safeids. ')'
208                                 );
209                                 $oTemplate->set ('message', $safeids . ' blocked.');
210                         } else {
211                                 $oTemplate->set ('message', 'no rows blocked.');
212                         }
213                         
214                         $oTemplate->template('templates/response_doblock.xml');
215                         break;
216                                                 
217                 case 'dounblock':
218                         if( count($safeids) > 0 ){              
219                                 $safeids = implode(',',$safeids);
220                                 
221                                 $res = sql_query(
222                                                 ' UPDATE '
223                                                 . sql_table('plugin_tb')
224                                                 .' SET block = 0 '
225                                                 . ' WHERE id in (' . $safeids. ')'
226                                 );
227                                 $oTemplate->set ('message', $safeids . ' unblocked.');
228                         } else {
229                                 $oTemplate->set ('message', 'no rows unblocked.');
230                         }
231                         
232                         $oTemplate->template('templates/response_dounblock.xml');
233                         break;
234         }
235
236         // Create the admin area page
237         echo $oTemplate->fetch();
238