PageRenderTime 53ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/nukeviet/modules/download/funcs/down.php

http://nuke-viet.googlecode.com/
PHP | 165 lines | 125 code | 34 blank | 6 comment | 23 complexity | e5cfaf2d12de51a2cd06ed5448e6f29e MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1, GPL-2.0
  1. <?php
  2. /**
  3. * @Project NUKEVIET 3.x
  4. * @Author VINADES.,JSC (contact@vinades.vn)
  5. * @Copyright (C) 2012 VINADES.,JSC. All rights reserved
  6. * @Createdate 3-6-2010 0:30
  7. */
  8. if ( ! defined( 'NV_IS_MOD_DOWNLOAD' ) ) die( 'Stop!!!' );
  9. if ( ! $nv_Request->isset_request( 'session_files', 'session' ) )
  10. {
  11. die( 'Wrong URL' );
  12. }
  13. $session_files = $nv_Request->get_string( 'session_files', 'session', '' );
  14. if ( empty( $session_files ) )
  15. {
  16. die( 'Wrong URL' );
  17. }
  18. $session_files = unserialize( $session_files );
  19. if ( $nv_Request->isset_request( 'code', 'get' ) )
  20. {
  21. $code = $nv_Request->get_string( 'code', 'get', '' );
  22. if ( empty( $code ) or ! preg_match( "/^([a-z0-9]{32})$/i", $code ) or ! isset( $session_files['linkdirect'][$code] ) or ! nv_check_url( $session_files['linkdirect'][$code]['link'] ) )
  23. {
  24. die( 'Wrong URL' );
  25. }
  26. $sql = "UPDATE `" . NV_PREFIXLANG . "_" . $module_data . "` SET `download_hits`=download_hits+1 WHERE `id`=" . intval( $session_files['linkdirect'][$code]['id'] );
  27. $db->sql_query( $sql );
  28. $content = "<br /><img border=\"0\" src=\"" . NV_BASE_SITEURL . "images/load_bar.gif\"><br /><br />\n";
  29. $content .= sprintf( $lang_module['download_wait2'], $session_files['linkdirect'][$code]['link'] );
  30. $content .= "<meta http-equiv=\"refresh\" content=\"5;url=" . $session_files['linkdirect'][$code]['link'] . "\" />";
  31. nv_info_die( $lang_module['download_detail'], $lang_module['download_wait'], $content );
  32. die();
  33. }
  34. if ( ! $nv_Request->isset_request( 'file', 'get' ) )
  35. {
  36. die( 'Wrong URL' );
  37. }
  38. $file = $nv_Request->get_string( 'file', 'get', '' );
  39. if ( empty( $file ) )
  40. {
  41. die( 'Wrong URL' );
  42. }
  43. if ( ! isset( $session_files['fileupload'][$file] ) )
  44. {
  45. die( 'Wrong URL' );
  46. }
  47. if ( ! file_exists( $session_files['fileupload'][$file]['src'] ) )
  48. {
  49. die( 'Wrong URL' );
  50. }
  51. if ( ! isset( $session_files['fileupload'][$file]['id'] ) )
  52. {
  53. die( 'Wrong URL' );
  54. }
  55. $sql = "UPDATE `" . NV_PREFIXLANG . "_" . $module_data . "` SET `download_hits`=download_hits+1 WHERE `id`=" . intval( $session_files['fileupload'][$file]['id'] );
  56. $db->sql_query( $sql );
  57. $upload_dir = "files";
  58. $is_zip = false;
  59. $is_resume = false;
  60. $max_speed = 0;
  61. $sql = "SELECT `config_name`, `config_value` FROM `" . NV_PREFIXLANG . "_" . $module_data . "_config` WHERE `config_name`='upload_dir' OR `config_name`='is_zip' OR `config_name`='is_resume' OR `config_name`='max_speed'";
  62. $result = $db->sql_query( $sql );
  63. while ( $row = $db->sql_fetchrow( $result ) )
  64. {
  65. if ( $row['config_name'] == 'upload_dir' )
  66. {
  67. $upload_dir = $row['config_value'];
  68. } elseif ( $row['config_name'] == 'is_zip' )
  69. {
  70. $is_zip = ( bool )$row['config_value'];
  71. } elseif ( $row['config_name'] == 'is_resume' )
  72. {
  73. $is_resume = ( bool )$row['config_value'];
  74. } elseif ( $row['config_name'] == 'max_speed' )
  75. {
  76. $max_speed = ( int )$row['config_value'];
  77. }
  78. }
  79. $file_src = $session_files['fileupload'][$file]['src'];
  80. $file_basename = $file;
  81. $directory = NV_UPLOADS_REAL_DIR;
  82. if ( $is_zip )
  83. {
  84. $upload_dir = NV_UPLOADS_REAL_DIR . '/' . $module_name . '/' . $upload_dir;
  85. $subfile = nv_pathinfo_filename( $file );
  86. $tem_file = NV_ROOTDIR . '/' . NV_TEMP_DIR . '/' . NV_TEMPNAM_PREFIX . $subfile;
  87. $file_exists = file_exists( $tem_file );
  88. if ( $file_exists and filemtime( $tem_file ) > NV_CURRENTTIME - 600 )
  89. {
  90. $file_src = $tem_file;
  91. $file_basename = $subfile . '.zip';
  92. $directory = NV_ROOTDIR . '/' . NV_TEMP_DIR;
  93. }
  94. else
  95. {
  96. if ( $file_exists )
  97. {
  98. @nv_deletefile( $tem_file );
  99. }
  100. require_once ( NV_ROOTDIR . '/includes/class/pclzip.class.php' );
  101. $zip = new PclZip( $tem_file );
  102. $zip->add( $file_src, PCLZIP_OPT_REMOVE_PATH, $upload_dir );
  103. if ( isset( $global_config['site_logo'] ) and ! empty( $global_config['site_logo'] ) and file_exists( NV_ROOTDIR . '/' . $global_config['site_logo'] ) )
  104. {
  105. $paths = explode( "/", $global_config['site_logo'] );
  106. array_pop( $paths );
  107. $paths = implode("/", $paths );
  108. $zip->add( NV_ROOTDIR . '/' . $global_config['site_logo'], PCLZIP_OPT_REMOVE_PATH, NV_ROOTDIR . '/' . $paths );
  109. }
  110. if ( file_exists( NV_ROOTDIR . '/' . NV_DATADIR . '/README.txt' ) )
  111. {
  112. $zip->add( NV_ROOTDIR . '/' . NV_DATADIR . '/README.txt', PCLZIP_OPT_REMOVE_PATH, NV_ROOTDIR . '/' . NV_DATADIR );
  113. }
  114. if ( file_exists( $tem_file ) )
  115. {
  116. $file_src = $tem_file;
  117. $file_basename = $subfile . '.zip';
  118. $directory = NV_ROOTDIR . '/' . NV_TEMP_DIR;
  119. }
  120. }
  121. }
  122. require_once ( NV_ROOTDIR . '/includes/class/download.class.php' );
  123. $download = new download( $file_src, $directory, $file_basename, $is_resume, $max_speed );
  124. if ( $is_zip )
  125. {
  126. $mtime = ( $mtime = filemtime( $session_files['fileupload'][$file]['src'] ) ) > 0 ? $mtime : NV_CURRENTTIME;
  127. $download->set_property( 'mtime', $mtime );
  128. }
  129. $download->download_file();
  130. exit();
  131. ?>