home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / fileviewer.php < prev    next >
PHP Script  |  2003-09-19  |  2KB  |  73 lines

  1. <?php /* $Id: fileviewer.php,v 1.18 2003/09/19 04:50:29 ajdonnison Exp $ */
  2. //file viewer
  3. require "./includes/config.php";
  4. require "./classes/ui.class.php";
  5.  
  6. session_name( 'dotproject' );
  7. if (get_cfg_var( 'session.auto_start' ) > 0) {
  8.     session_write_close();
  9. }
  10. session_start();
  11. $AppUI =& $_SESSION['AppUI'];
  12.  
  13. require "{$AppUI->cfg['root_dir']}/includes/db_connect.php";
  14.  
  15. include "{$AppUI->cfg['root_dir']}/includes/main_functions.php";
  16. include "{$AppUI->cfg['root_dir']}/includes/permissions.php";
  17.  
  18. $canRead = !getDenyRead( 'files' );
  19. if (!$canRead) {
  20.     $AppUI->redirect( "m=public&a=access_denied" );
  21. }
  22.  
  23. $file_id = isset($_GET['file_id']) ? $_GET['file_id'] : 0;
  24.  
  25. if ($file_id) {
  26.     // projects that are denied access
  27.     $sql = "
  28.     SELECT project_id
  29.     FROM projects, permissions
  30.     WHERE permission_user = $AppUI->user_id
  31.         AND permission_grant_on = 'projects'
  32.         AND permission_item = project_id
  33.         AND permission_value = 0
  34.     ";
  35.     $deny1 = db_loadColumn( $sql );
  36.  
  37.     $sql = "SELECT *
  38.     FROM permissions, files
  39.     WHERE file_id=$file_id
  40.         AND permission_user = $AppUI->user_id
  41.         AND permission_value <> 0
  42.         AND (
  43.             (permission_grant_on = 'all')
  44.             OR (permission_grant_on = 'projects' AND permission_item = -1)
  45.             OR (permission_grant_on = 'projects' AND permission_item = file_project)
  46.             )"
  47.         .(count( $deny1 ) > 0 ? "\nAND file_project NOT IN (" . implode( ',', $deny1 ) . ')' : '');
  48.  
  49.     if (!db_loadHash( $sql, $file )) {
  50.         $AppUI->redirect( "m=public&a=access_denied" );
  51.     };
  52.  
  53.     // BEGIN extra headers to resolve IE caching bug (JRP 9 Feb 2003)
  54.     // [http://bugs.php.net/bug.php?id=16173]
  55.     header("Pragma: ");
  56.     header("Cache-Control: ");
  57.     header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  58.     header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  59.     header("Cache-Control: no-store, no-cache, must-revalidate");  //HTTP/1.1
  60.     header("Cache-Control: post-check=0, pre-check=0", false);
  61.     // END extra headers to resolve IE caching bug
  62.  
  63.     header("MIME-Version: 1.0");
  64.     header( "Content-length: {$file['file_size']}" );
  65.     header( "Content-type: {$file['file_type']}" );
  66.     header( "Content-disposition: inline; filename={$file['file_name']}" );
  67.     readfile( "{$AppUI->cfg['root_dir']}/files/{$file['file_project']}/{$file['file_real_filename']}" );
  68. } else {
  69.     $AppUI->setMsg( "fileIdError", UI_MSG_ERROR );
  70.     $AppUI->redirect();
  71. }
  72. ?>
  73.