root/branches/download/download.php

Revision 45, 17.1 KB (checked in by daris, 3 years ago)

adding go_to_page extension

Line 
1<?php
2
3// Make sure no one attempts to run this script "directly"
4if (!defined('FORUM'))
5        exit;
6
7if (!defined('DOWNLOAD'))
8        define('DOWNLOAD', $ext_info['path'].'/');
9
10
11if (file_exists(DOWNLOAD.'lang/'.$forum_user['language'].'/download.php'))
12        require_once DOWNLOAD.'lang/'.$forum_user['language'].'/download.php';
13else
14        require_once DOWNLOAD.'lang/English/download.php';
15
16require_once FORUM_ROOT.'include/parser.php';
17
18$id = isset($_GET['id']) ? intval($_GET['id']) : null;
19$cat = isset($_GET['cat']) ? intval($_GET['cat']) : null;
20$get = isset($_GET['get']) ? 1 : 0;
21
22if (isset($id) && $get)
23{
24        // Fetch list of downloads
25        $query = array(
26                'SELECT'        => 'd.name, d.version, d.file',
27                'FROM'          => 'downloads AS d',
28                'WHERE'         => 'd.id=\''.$id.'\'',
29        );
30
31        // Allow downloading unapproved files for administrators
32        if ($forum_user['g_id'] != FORUM_ADMIN)
33                $query['WHERE'] .= ' AND d.approved=1';
34
35        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
36        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
37
38        if (!$forum_db->num_rows($result))
39                message($lang_download['Download not found']);
40
41        $cur_file = $forum_db->fetch_assoc($result);
42
43        if (!file_exists(DOWNLOAD.'files/'.$cur_file['file']))
44                message($lang_download['File not found']);
45       
46        // Fetch list of downloads
47        $query = array(
48                'UPDATE'        => 'downloads',
49                'SET'           => 'downloads=downloads+1',
50                'WHERE'         => 'id=\''.$id.'\'',
51        );
52
53        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
54        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
55       
56//      $version = ($cur_file['version'] != '' ? '_'.$cur_file['version'] : '');
57/*      $filename = str_replace(' ', '_', $filename);
58        $filename = preg_replace('/[^0-9a-z\._]/', '', $filename);
59        */
60       
61/*      header('Content-Type: application/zip');
62        header('Content-Disposition: attachment; filename="'.rawurldecode($url).'"');
63    header("Content-Transfer-Encoding: binary");
64        header("Content-Length: ".filesize($file));
65       
66        // The three lines below basically make the download non-cacheable
67        header("Cache-control: public");
68    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
69        header('Pragma: private');
70        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
71
72        readfile($file);*/
73       
74        header('Location: '.$base_url.'/extensions/download/files/'.$cur_file['file']);
75        exit;
76
77}
78elseif (isset($cat))
79{
80        // Fetch list of downloads
81        $query = array(
82                'SELECT'        => 'count(d.id)',
83                'FROM'          => 'downloads AS d',
84                'WHERE'         => 'd.cat='.$cat.' AND d.approved=1'
85        );
86
87        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
88        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
89
90        $forum_page['disp_downloads'] = 10;
91        $forum_page['num_downloads'] = $forum_db->result($result);
92       
93        // Fetch current category
94        $query = array(
95                'SELECT'        => 'c.name, c.description',
96                'FROM'          => 'downloads_cats AS c',
97                'WHERE'         => 'c.id='.$cat
98        );
99
100        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
101        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
102        $cur_cat = $forum_db->fetch_assoc($result);
103
104        // Determine the topic offset (based on $_GET['p'])
105        $forum_page['num_pages'] = ceil($forum_page['num_downloads'] / $forum_page['disp_downloads']);
106        $forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
107        $forum_page['start_from'] = $forum_page['disp_downloads'] * ($forum_page['page'] - 1);
108        $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_page['disp_downloads']), ($forum_page['num_downloads']));
109        $forum_page['items_info'] = generate_items_info($cur_cat['name'], ($forum_page['start_from'] + 1), $forum_page['num_downloads']);
110
111        // Fetch list of downloads
112        $query = array(
113                'SELECT'        => 'd.id, d.name, d.description, d.version, d.downloads, d.author, d.user_id, d.added, u.username',
114                'FROM'          => 'downloads AS d',
115                'JOINS'         => array(
116                        array(
117                                'LEFT JOIN'             => 'users AS u',
118                                'ON'                    => 'd.user_id=u.id'
119                        ),
120                ),
121                'WHERE'         => 'd.cat='.$cat.' AND d.approved=1',
122                'LIMIT'         => $forum_page['start_from'].', '.$forum_page['disp_downloads'],
123                'ORDER BY'      => 'd.name, d.version'
124        );
125
126        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
127        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
128
129
130        // Generate paging/posting links
131        $forum_page['page_post']['paging'] = '<p class="paging"><span class="pages">'.$lang_common['Pages'].'</span> '.paginate($forum_page['num_pages'], $forum_page['page'], $forum_url['download_cat'], $lang_common['Paging separator'], array($cat, sef_friendly($cur_cat['name']))).'</p>';
132
133        // Setup breadcrumbs
134        $forum_page['crumbs'] = array(
135                array($forum_config['o_board_title'], forum_link($forum_url['index'])),
136                array($lang_download['Downloads'], forum_link($forum_url['download'])),
137                array(forum_htmlencode($cur_cat['name']), forum_link($forum_url['download_cat'], array($cat, sef_friendly($cur_cat['name'])))),
138        );
139
140
141//      define('FORUM_PAGE_SECTION', 'management');
142        define('FORUM_PAGE', 'download');
143        define('FORUM_PAGE_TYPE', 'sectioned');
144        require FORUM_ROOT.'header.php';
145
146        $form_action = DOWNLOAD.'download.php';
147
148        ob_start();
149
150?>
151        <div class="main-head">
152<?php if (!$forum_user['is_guest']) : ?>                <p class="options"><span class="first-item"><a href="<?php echo forum_link($forum_url['submit_download_cat'], array($cat, sef_friendly($cur_cat['name']))) ?>"><?php echo $lang_download['Submit download'] ?></a></span></p><?php endif; ?>
153                <h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
154        </div>
155<!--
156        <div class="main-subhead">
157                <h2 class="hn"><?php echo forum_htmlencode($cur_cat['description']) ?></h2>
158        </div>
159-->
160        <div class="main-content main-frm">
161
162<?php if (isset($cur_cat['description'])) : ?> 
163                        <div class="ct-box info-box">
164                                <h2 class="hn"><?php echo forum_htmlencode($cur_cat['description']) ?></h2>
165                        </div>
166<?php endif; ?>
167
168<?php
169
170        // If there are news in selected forums
171        if ($forum_db->num_rows($result))
172        {
173                while ($cur_download = $forum_db->fetch_assoc($result))
174                {
175                        $version_string = (trim($cur_download['version']) == '') ? '' : ' v'.forum_htmlencode($cur_download['version']);
176                       
177                        $download_info_array = array($cat, sef_friendly($cur_cat['name']), $cur_download['id'], sef_friendly($cur_download['name']));
178                       
179                        $download_get_url = forum_link($forum_url['download_get'], $download_info_array);
180                        $download_url = forum_link($forum_url['download_id'], $download_info_array);
181                       
182                        $forum_page['info'] = array();
183
184                        $forum_page['info'][] = '<a href="'.$download_get_url.'">'.$lang_download['Download'].'</a>';
185                       
186                        $forum_page['info'][] = sprintf($lang_download['Download count'], $cur_download['downloads']);
187
188                        if ($cur_download['author'])
189                                $forum_page['info'][] = $lang_download['Author'].' '.forum_htmlencode($cur_download['author']);
190
191                        if ($cur_download['user_id'] > 0)
192                        $forum_page['info'][] = $lang_download['Added by'].' <a href="'.forum_link($forum_url['user'], array($cur_download['user_id'])).'">'.forum_htmlencode($cur_download['username']).'</a>';
193
194                        if ($cur_download['added'])
195                                $forum_page['info'][] = $lang_download['Added time'].' '.format_time($cur_download['added']);
196                       
197                        $forum_page['description'] = parse_message($cur_download['description'], true);
198
199                       
200?>             
201                        <div class="ct-box data-box download entry-content">
202                                <h2 class="hn"><strong><a href="<?php echo $download_url ?>"><?php echo forum_htmlencode($cur_download['name']) ?></a></strong><?php echo $version_string ?></h2>
203                                <?php echo $forum_page['description'] ?>
204                                <p><?php echo implode(' | ', $forum_page['info']) ?></p>
205                        </div>
206<?php
207                }
208        }
209        else
210        {
211?>             
212                        <div class="ct-box info-box">
213                                <h2 class="hn"><?php echo $lang_download['Empty category'] ?></a></h2>
214                        </div>
215<?php
216        }
217?>
218        </div>
219        <div class="main-foot">
220                <p><?php echo $forum_page['items_info'] ?></p>
221        </div>
222<?php
223        $tpl_temp = trim(ob_get_contents());
224        $tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
225        ob_end_clean();
226        // END SUBST - <!-- forum_main -->
227
228        require FORUM_ROOT.'footer.php';
229}
230elseif (isset($id))
231{
232
233        // Fetch list of downloads
234        $query = array(
235                'SELECT'        => 'd.id, d.name, d.cat, d.description, d.version, d.downloads, d.author, d.user_id, d.added, u.username, c.name as catname',
236                'FROM'          => 'downloads AS d',
237                'JOINS'         => array(
238                        array(
239                                'LEFT JOIN'             => 'users AS u',
240                                'ON'                    => 'd.user_id=u.id'
241                        ),
242                        array(
243                                'LEFT JOIN'             => 'downloads_cats AS c',
244                                'ON'                    => 'd.cat=c.id'
245                        ),
246                ),
247                'WHERE'         => 'd.id='.$id.' AND d.approved=1',
248        );
249
250        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
251        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
252
253        // If there are news in selected forums
254        if ($forum_db->num_rows($result) == 0)
255                message('Download not exists');
256
257        $cur_download = $forum_db->fetch_assoc($result);
258       
259        // Setup breadcrumbs
260        $forum_page['crumbs'] = array(
261                array($forum_config['o_board_title'], forum_link($forum_url['index'])),
262                array($lang_download['Downloads'], forum_link($forum_url['download'])),
263                array(forum_htmlencode($cur_download['catname']), forum_link($forum_url['download_cat'], array($cur_download['cat'], sef_friendly($cur_download['catname'])))),
264                array(forum_htmlencode($cur_download['name']), forum_link($forum_url['download_id'], array($cur_download['cat'], sef_friendly($cur_download['catname'], $id, sef_friendly($cur_download['name'])))))
265        );
266
267
268//      define('FORUM_PAGE_SECTION', 'management');
269        define('FORUM_PAGE', 'download');
270        define('FORUM_PAGE_TYPE', 'sectioned');
271        require FORUM_ROOT.'header.php';
272
273        ob_start();
274
275?>
276        <div class="main-head">
277                <h2 class="hn"><span><?php echo forum_htmlencode($cur_download['name']) ?></span></h2>
278        </div>
279
280        <div class="main-content main-frm">
281
282<?php
283
284
285                $version_string = (trim($cur_download['version']) == '') ? '' : ' v'.forum_htmlencode($cur_download['version']);
286               
287                $download_info_array = array($cur_download['cat'], sef_friendly($cur_download['catname']), $cur_download['id'], sef_friendly($cur_download['name']));
288               
289                $download_get_url = forum_link($forum_url['download_get'], $download_info_array);
290                $download_url = forum_link($forum_url['download_id'], $download_info_array);
291               
292                $forum_page['info'] = array();
293
294                $forum_page['info'][] = '<a href="'.$download_get_url.'">'.$lang_download['Download'].'</a>';
295               
296                $forum_page['info'][] = sprintf($lang_download['Download count'], $cur_download['downloads']);
297
298                if ($cur_download['author'])
299                        $forum_page['info'][] = $lang_download['Author'].' '.forum_htmlencode($cur_download['author']);
300
301                if ($cur_download['user_id'] > 0)
302                $forum_page['info'][] = $lang_download['Added by'].' <a href="'.forum_link($forum_url['user'], array($cur_download['user_id'])).'">'.forum_htmlencode($cur_download['username']).'</a>';
303
304                if ($cur_download['added'])
305                        $forum_page['info'][] = $lang_download['Added time'].' '.format_time($cur_download['added']);
306               
307                $forum_page['description'] = parse_message($cur_download['description'], true);
308
309               
310?>             
311                        <div class="ct-box data-box download entry-content">
312                                <h2 class="hn"><strong><a href="<?php echo $download_url ?>"><?php echo forum_htmlencode($cur_download['name']) ?></a></strong><?php echo $version_string ?></h2>
313                                <?php echo $forum_page['description'] ?>
314                                <p><?php echo implode(' | ', $forum_page['info']) ?></p>
315                        </div>
316        </div>
317        <div class="main-foot">
318                <h2 class="hn"><span><?php echo forum_htmlencode($cur_download['name']) ?></span></h2>
319        </div>
320<?php
321        $tpl_temp = trim(ob_get_contents());
322        $tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
323        ob_end_clean();
324        // END SUBST - <!-- forum_main -->
325
326        require FORUM_ROOT.'footer.php';
327}
328else
329{
330        // Fetch list of downloads
331        $query = array(
332                'SELECT'        => 'count(c.id)',
333                'FROM'          => 'downloads_cats AS c',
334        );
335
336        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
337        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
338
339        $forum_page['disp_downloads'] = 10;
340        $forum_page['num_downloads'] = $forum_db->result($result);
341
342        // Determine the topic offset (based on $_GET['p'])
343        $forum_page['num_pages'] = ceil($forum_page['num_downloads'] / $forum_page['disp_downloads']);
344        $forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
345        $forum_page['start_from'] = $forum_page['disp_downloads'] * ($forum_page['page'] - 1);
346        $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_page['disp_downloads']), ($forum_page['num_downloads']));
347        $forum_page['items_info'] = generate_items_info($lang_download['Downloads'], ($forum_page['start_from'] + 1), $forum_page['num_downloads']);
348
349        // Fetch list of cats
350        $query = array(
351                'SELECT'        => 'c.id, c.name, c.description',
352                'FROM'          => 'downloads_cats AS c',
353                'LIMIT'         => $forum_page['start_from'].', '.$forum_page['disp_downloads'],
354                'ORDER BY'      => 'c.name'
355        );
356
357        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
358        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
359
360
361        // Generate paging/posting links
362        $forum_page['page_post']['paging'] = '<p class="paging"><span class="pages">'.$lang_common['Pages'].'</span> '.paginate($forum_page['num_pages'], $forum_page['page'], $forum_url['download'], $lang_common['Paging separator']).'</p>';
363
364        // Setup breadcrumbs
365        $forum_page['crumbs'] = array(
366                array($forum_config['o_board_title'], forum_link($forum_url['index'])),
367                array($lang_download['Downloads'], forum_link($forum_url['download'])),
368        );
369
370
371//      define('FORUM_PAGE_SECTION', 'management');
372        define('FORUM_PAGE', 'download');
373        define('FORUM_PAGE_TYPE', 'sectioned');
374        require FORUM_ROOT.'header.php';
375
376        ob_start();
377
378?>
379        <div class="main-head">
380<?php if (!$forum_user['is_guest']) : ?>                <p class="options"><span class="first-item"><a href="<?php echo forum_link($forum_url['submit_download']) ?>"><?php echo $lang_download['Submit download'] ?></a></span></p><?php endif; ?>
381                <h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
382        </div>
383       
384        <div class="main-subhead">
385                <h2 class="hn"><span><?php echo $lang_download['Category list'] ?></span></h2>
386        </div>
387
388        <div class="main-content main-frm">
389       
390<?php
391
392        // If there are news in selected forums
393        if ($forum_db->num_rows($result))
394        {
395                while ($cur_cat = $forum_db->fetch_assoc($result))
396                {
397                        $forum_page['cat'] = array();
398                        $forum_page['cat']['info'] =  array();
399                       
400                        // Fetch list of downloads
401                        $query_downloads = array(
402                                'SELECT'        => 'count(d.id)',
403                                'FROM'          => 'downloads AS d',
404                                'WHERE'         => 'd.cat='.$cur_cat['id'].' AND d.approved=1'
405                        );
406
407                        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
408                        $result_downloads = $forum_db->query_build($query_downloads) or error(__FILE__, __LINE__);
409                       
410                        $files_count = $forum_db->result($result_downloads);
411       
412                        // Fetch list of downloads
413                        $query_last_added = array(
414                                'SELECT'        => 'd.id, d.name, d.version',
415                                'FROM'          => 'downloads AS d',
416                                'WHERE'         => 'd.cat='.$cur_cat['id'].' AND d.approved=1',
417                                'ORDER BY'      => 'd.added DESC',
418                                'LIMIT'         => 3
419                        );
420
421                        ($hook = get_hook('xn_portal_by_daris_nw_qr_get_news')) ? eval($hook) : null;
422                        $result_last_added = $forum_db->query_build($query_last_added) or error(__FILE__, __LINE__);
423
424                        $last_added = array();
425                        while ($cur_download = $forum_db->fetch_assoc($result_last_added))
426                                $last_added[] = '<a href="'.forum_link($forum_url['download_id'], array($cur_cat['id'], sef_friendly($cur_cat['name']), $cur_download['id'], sef_friendly($cur_download['name']))).'">'.forum_htmlencode($cur_download['name']).($cur_download['version'] != '' ? ' ('.forum_htmlencode($cur_download['version']).')' : '').'</a>';
427                       
428                        $forum_page['cat']['description'] = parse_message($cur_cat['description'], true);
429                       
430                        if (count($last_added))
431                                $forum_page['cat']['info'][] = $lang_download['Last added'].' '.implode(', ', $last_added);
432
433?>             
434                        <div class="ct-box data-box download">
435                                <h2 class="hn"><a href="<?php echo forum_link($forum_url['download_cat'], array($cur_cat['id'], sef_friendly($cur_cat['name']))) ?>"><strong><?php echo forum_htmlencode($cur_cat['name']) ?></strong></a> (<?php printf($lang_download['Files count'], $files_count) ?>)</h2>
436                                <?php echo $forum_page['cat']['description'] ?>
437<?php if (count($forum_page['cat']['info'])) : ?>                               <p><?php echo implode(' | ', $forum_page['cat']['info']) ?></p><?php endif; ?>
438                        </div>
439<?php
440                }
441        }
442        else
443        {
444?>             
445                        <div class="ct-box info-box">
446                                <h2 class="hn"><?php echo $lang_download['No categories'] ?></a></h2>
447                        </div>
448<?php
449        }
450?>
451        </div>
452        <div class="main-foot">
453                <p><?php echo $forum_page['items_info'] ?></p>
454        </div>
455<?php
456        $tpl_temp = trim(ob_get_contents());
457        $tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
458        ob_end_clean();
459        // END SUBST - <!-- forum_main -->
460
461        require FORUM_ROOT.'footer.php';
462}
Note: See TracBrowser for help on using the browser.