home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / transformation_wrapper.php < prev    next >
Encoding:
PHP Script  |  2003-12-11  |  4.2 KB  |  130 lines

  1. <?php
  2. /* $Id: transformation_wrapper.php,v 2.3 2003/12/12 13:32:35 garvinhicking Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. $is_transformation_wrapper = true;
  6.  
  7. /**
  8.  * Get the variables sent or posted to this script and displays the header
  9.  */
  10. require_once('./libraries/grab_globals.lib.php');
  11.  
  12. /**
  13.  * Gets a core script and starts output buffering work
  14.  */
  15. require_once('./libraries/common.lib.php');
  16. require_once('./libraries/relation.lib.php'); // foreign keys
  17. require_once('./libraries/transformations.lib.php'); // Transformations
  18. $cfgRelation = PMA_getRelationsParam();
  19.  
  20. /**
  21.  * Ensures db and table are valid, else moves to the "parent" script
  22.  */
  23. require_once('./libraries/db_table_exists.lib.php');
  24.  
  25.  
  26. /**
  27.  * Get the list of the fields of the current table
  28.  */
  29. PMA_mysql_select_db($db);
  30. $table_def = PMA_mysql_query('SHOW FIELDS FROM ' . PMA_backquote($table));
  31. if (isset($primary_key)) {
  32.     $local_query = 'SELECT * FROM ' . PMA_backquote($table) . ' WHERE ' . $primary_key;
  33.     $result      = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', '');
  34.     $row         = PMA_mysql_fetch_array($result);
  35. } else {
  36.     $local_query = 'SELECT * FROM ' . PMA_backquote($table) . ' LIMIT 1';
  37.     $result      = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', '');
  38.     $row         = PMA_mysql_fetch_array($result);
  39. }
  40.  
  41. // No row returned
  42. if (!$row) {
  43.     exit;
  44. } // end if (no record returned)
  45.  
  46. $default_ct = 'application/octet-stream';
  47.  
  48. if ($cfgRelation['commwork'] && $cfgRelation['mimework']) {
  49.     $mime_map = PMA_getMime($db, $table);
  50.     $mime_options = PMA_transformation_getOptions((isset($mime_map[urldecode($transform_key)]['transformation_options']) ? $mime_map[urldecode($transform_key)]['transformation_options'] : ''));
  51.  
  52.     foreach($mime_options AS $key => $option) {
  53.         if (substr($option, 0, 10) == '; charset=') {
  54.             $mime_options['charset'] = $option;
  55.         }
  56.     }
  57. }
  58.  
  59. // garvin: For re-usability, moved http-headers and stylesheets
  60. // to a seperate file. It can now be included by header.inc.php,
  61. // queryframe.php, querywindow.php.
  62.  
  63. require_once('./libraries/header_http.inc.php');
  64. // [MIME]
  65. if (isset($ct) && !empty($ct)) {
  66.     $content_type = 'Content-Type: ' . urldecode($ct);
  67. } else {
  68.     $content_type = 'Content-Type: ' . (isset($mime_map[urldecode($transform_key)]['mimetype']) ? str_replace('_', '/', $mime_map[urldecode($transform_key)]['mimetype']) : $default_ct) . (isset($mime_options['charset']) ? $mime_options['charset'] : '');
  69. }
  70.  
  71. if (isset($cn) && !empty($cn)) {
  72.     $content_type .= "\n" . 'Content-Disposition: attachment; filename=' . urldecode($cn);
  73. }
  74.  
  75. header($content_type);
  76.  
  77. if (!isset($resize)) {
  78.     echo $row[urldecode($transform_key)];
  79. } else {
  80.     // if image_*__inline.inc.php finds that we can resize,
  81.     // it sets $resize to jpeg or png
  82.  
  83.     $srcImage = imagecreatefromstring($row[urldecode($transform_key)]);
  84.     $srcWidth = ImageSX( $srcImage );
  85.     $srcHeight = ImageSY( $srcImage );
  86.  
  87.     // Check to see if the width > height or if width < height
  88.     // if so adjust accordingly to make sure the image
  89.     // stays smaller then the $newWidth and $newHeight
  90.  
  91.     $ratioWidth = $srcWidth/$newWidth;
  92.     $ratioHeight = $srcHeight/$newHeight;
  93.  
  94.     if( $ratioWidth < $ratioHeight){
  95.         $destWidth = $srcWidth/$ratioHeight;
  96.         $destHeight = $newHeight;
  97.     }else{
  98.         $destWidth = $newWidth;
  99.         $destHeight = $srcHeight/$ratioWidth;
  100.     }
  101.  
  102.     if ($resize) {
  103.         $destImage = ImageCreateTrueColor( $destWidth, $destHeight);
  104.     }
  105.  
  106. //    ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
  107. // better quality but slower:
  108.     ImageCopyResampled( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
  109.  
  110.     if ($resize == 'jpeg') {
  111.         ImageJPEG( $destImage,'',75 );
  112.     }
  113.     if ($resize == 'png') {
  114.         ImagePNG( $destImage);
  115.     }
  116.     ImageDestroy( $srcImage );
  117.     ImageDestroy( $destImage );
  118. }
  119.  
  120. /**
  121.  * Close MySql non-persistent connections
  122.  */
  123. if (isset($GLOBALS['dbh']) && $GLOBALS['dbh']) {
  124.     @mysql_close($GLOBALS['dbh']);
  125. }
  126. if (isset($GLOBALS['userlink']) && $GLOBALS['userlink']) {
  127.     @mysql_close($GLOBALS['userlink']);
  128. }
  129. ?>
  130.