~hexmode/+junk/main

« back to all changes in this revision

Viewing changes to install-files/apps/phpmyadmin2.10.1/libraries/transformations/text_plain__external.inc.php

  • Committer: Mark A. Hershberger
  • Date: 2008-01-05 19:38:56 UTC
  • Revision ID: hershberger@spawn-xp-20080105193856-6rnzgwa4nehue3qj
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/* $Id: text_plain__external.inc.php 8340 2006-01-19 15:39:29Z cybot_tm $ */
 
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
?>