home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / xamp / xampp-win32.exe / xampp / text_plain__external.inc.php < prev    next >
Encoding:
PHP Script  |  2004-12-09  |  2.6 KB  |  92 lines

  1. <?php
  2. /* $Id: text_plain__external.inc.php,v 2.6 2004/12/10 12:18:58 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. function PMA_transformation_text_plain__external_nowrap($options = array()) {
  6.     if (!isset($options[3]) || $options[3] == '') {
  7.         $nowrap = true;
  8.     } elseif ($options[3] == '1' || $options[3] == 1) {
  9.         $nowrap = true;
  10.     } else {
  11.         $nowrap = false;
  12.     }
  13.  
  14.     return $nowrap;
  15. }
  16.  
  17. function PMA_transformation_text_plain__external($buffer, $options = array(), $meta = '') {
  18.     // possibly use a global transform and feed it with special options:
  19.     // include('./libraries/transformations/global.inc.php');
  20.  
  21.     // further operations on $buffer using the $options[] array.
  22.  
  23.     $allowed_programs = array();
  24.  
  25.     //
  26.     // WARNING:
  27.     //
  28.     // It's up to administrator to allow anything here. Note that users may
  29.     // specify any parameters, so when programs allow output redirection or
  30.     // any other possibly dangerous operations, you should write wrapper
  31.     // script that will publish only functions you really want.
  32.     //
  33.     // Add here program definitions like (note that these are NOT safe
  34.     // programs):
  35.     //
  36.     //$allowed_programs[0] = '/usr/local/bin/tidy';
  37.     //$allowed_programs[1] = '/usr/local/bin/validate';
  38.  
  39.     // no-op when no allowed programs
  40.     if (count($allowed_programs) == 0) {
  41.         return $buffer;
  42.     }
  43.  
  44.     if (!isset($options[0]) ||  $options[0] == '' || !isset($allowed_programs[$options[0]])) {
  45.         $program = $allowed_programs[0];
  46.     } else {
  47.         $program = $allowed_programs[$options[0]];
  48.     }
  49.  
  50.     if (!isset($options[1]) || $options[1] == '') {
  51.         $poptions = '-f /dev/null -i -wrap -q';
  52.     } else {
  53.         $poptions = $options[1];
  54.     }
  55.  
  56.     if (!isset($options[2]) || $options[2] == '') {
  57.         $options[2] = 1;
  58.     }
  59.  
  60.     if (!isset($options[3]) || $options[3] == '') {
  61.         $options[3] = 1;
  62.     }
  63.  
  64.     // needs PHP >= 4.3.0
  65.     $newstring = '';
  66.     $descriptorspec = array(
  67.         0 => array("pipe", "r"),
  68.         1 => array("pipe", "w")
  69.     );
  70.     $process = proc_open($program . ' ' . $poptions, $descriptorspec, $pipes);
  71.     if (is_resource($process)) {
  72.         fwrite($pipes[0], $buffer);
  73.         fclose($pipes[0]);
  74.  
  75.         while (!feof($pipes[1])) {
  76.             $newstring .= fgets($pipes[1], 1024);
  77.         }
  78.         fclose($pipes[1]);
  79.         // we don't currently use the return value 
  80.         $return_value = proc_close($process);
  81.     }
  82.  
  83.     if ($options[2] == 1 || $options[2] == '2') {
  84.         $retstring = htmlspecialchars($newstring);
  85.     } else {
  86.         $retstring = $newstring;
  87.     }
  88.  
  89.     return $retstring;
  90. }
  91. ?>
  92.