<?php
// macos_textutil_convert.php
// Supervise macOS (via PHP exec) textutil (command line) conversions
/* 
textutil: [command_option] [other_options] file...
Command options are (-help is the default):
 -help          show this message and exit
 -info          display information about each file
 -convert fmt   convert each input file to format (txt, rtf, rtfd,
                html, doc, docx, odt, wordml, or webarchive)
 -cat fmt       concatenate input files into one output file
There are some additional optional arguments:
 -extension ext alternate extension for all output files
 -output path   alternate file name for first output file
 -stdin         read from stdin instead of files
 -stdout        send first output file to stdout
 -encoding IANA_name|NSStringEncoding
                encoding used for plain text or html output files
                (default encoding is UTF-8)
 -inputencoding IANA_name|NSStringEncoding
                encoding used to interpret plain text input files
                (by default encoding will be detected from BOM)
 -format fmt    force input files to be interpreted in this format
 -font font     specify font used for converting plain to rich text
 -fontsize size specify font size for converting plain to rich text
 --             specifies that all further arguments are file names

 -noload        do not load subsidiary resources for html files
 -nostore       do not write out subsidiary resources for html files
 -baseurl url   base URL for subsidiary resources in html files
 -timeout t     time in seconds to wait for html resources to load
 -textsizemultiplier x
                factor to apply to font sizes in html files
 -excludedelements "(tag1, tag2, ...)"
                html elements to exclude from html output files
 -prefixspaces n
                number of spaces to indent nested html output

 -strip         do not copy metadata attributes to output files
 -title val     title metadata attribute for output files
 -author val    author metadata attribute for output files
 -subject val   subject metadata attribute for output files
 -keywords "(val1, val2, ...)"
                keywords metadata attribute for output files
 -comment val   comment metadata attribute for output files
 -editor val    last editor metadata attribute for output files
 -company val   company metadata attribute for output files
 -creationtime yyyy-mm-ddThh:mm:ssZ
                creation time metadata attribute for output files
 -modificationtime yyyy-mm-ddThh:mm:ssZ
                modification time metadata attribute for output files
*/

$thecontent="";
$tastuff="";
$doutput="";
$outfileis="";
$sufext="_0";
$iext=0;

$verb="textutil";
$switchone="-convert";
$switchtwo="-output";

$indx=0;
$iof=0;

function ourstr_replace($fris, $tois, $stris) {
  global $indx;
  if (strpos($stris, ",") !== false || ($indx == 0 && ($_GET['inpath'] || $_POST['inpath']))) {
    $interim=str_replace($fris, $tois, explode(",",$stris)[$indx]);
    if (isset($_GET['inpath'])) {
      return str_replace("+"," ",urldecode($_GET['inpath'])) . $interim;
    } else if (isset($_POST['inpath'])) {
      return str_replace("+"," ",urldecode($_POST['inpath'])) . $interim;
    } 
    return $interim;
  } 
  return str_replace($fris, $tois, $stris);
}

function yourstr_replace($fris, $tois, $stris) {
  global $indx;
  if (strpos($stris, ",") !== false || ($indx == 0 && ($_GET['outpath'] || $_POST['outpath']))) {
    $interim=str_replace($fris, $tois, explode(",",$stris)[$indx]);
    if (isset($_GET['outpath'])) {
      return str_replace("+"," ",urldecode($_GET['outpath'])) . $interim;
    } else if (isset($_POST['outpath'])) {
      return str_replace("+"," ",urldecode($_POST['outpath'])) . $interim;
    } 
    return $interim;
  } 
  return str_replace($fris, $tois, $stris);
}

if ( !file_exists( "/usr/local/bin" ) && !is_dir( "/usr/local/bin" ) ) {
if (get_env("USERPROFILE")) {
    if (file_exists(get_env("USERPROFILE") . "\\AppData\\Local\\Pandoc\\pandoc.exe")) {
      $verb=get_env("USERPROFILE") . "\\AppData\\Local\\Pandoc\\pandoc.exe";
      $switchone="-t";
      $switchtwo="-o";
      $panplus="pandoc or ";
    }
}
} else {
//exec("which pandoc > lookup_pandoc.txt 2>>&1");
//shell_exec("/usr/local/bin/pandoc --version > lookup_pandoc.txt 2>&1");
    if (file_exists("/usr/local/bin/pandoc")) {
      $verb="/usr/local/bin/pandoc";
      $switchone="-t";
      $switchtwo="-o";
      $panplus="pandoc or ";
    }
}

if (isset($_GET['vsfs']) && isset($_GET['vsfn']) && isset($_GET['vsfi']) && isset($_GET['vsfu'])) {
  $docroot=dirname(__FILE__);
  if (file_exists("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn'])))))) {
    unlink("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn'])))));
  }
  exec("find " . $_SERVER['DOCUMENT_ROOT'] . " -name '" . str_replace(")","*",str_replace("(","*",str_replace("+"," ",urldecode($_GET['vsfn'])))) . "' -exec ls -l {} \\; 2> /dev/null > lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn'])))));
  if (file_exists("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn'])))))) {
    $infois=file_get_contents(("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn']))))));
    $lines=explode("\n", $infois);
    for ($il=0; $il<sizeof($lines); $il++) {
      $lines[$il]=str_replace("\r","",$lines[$il]);
      if (strpos($lines[$il], " " . $_GET['vsfs'] . " ") !== false) {
        //file_put_contents("look_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn'])))), "thisplace=" . $docroot . "\n" . "rootplace=" . $_SERVER['DOCUMENT_ROOT'] . "\n" . "origplace=" . str_replace("+"," ",urldecode($_GET['vsfu'])) . "\n" . "foundplace=" . explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))] . "\n" . '<html><body onload=" parent.document.getElementById(' . "'" . str_replace("+"," ",urldecode($_GET['vsfi'])) . "'" . ").value='" . str_replace($_SERVER['DOCUMENT_ROOT'],explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[0] . "localhost" . explode("/",explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[1])[0] . "",explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))]) . "'; " . '"></body></html>');
        if (strpos(explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))], $_SERVER['DOCUMENT_ROOT']) !== false) {
          //file_put_contents("x7.x7",'<html><body onload=" if (parent.document.getElementById(' . "'" . 'eangle' . "'" . ')) { parent.document.getElementById(' . "'" . 'eangle' . "'" . ').value=' . "'" . $ort . "'" . ';  } top.document.getElementById(' . "'" . str_replace("+"," ",urldecode($_GET['vsfi'])) . "'" . ").value='" . $ort . "'; " . '"></body></html>');
          if (isset($_GET['turl'])) {      
          echo "<html><body onload=\" var tp='" . str_replace("junk" . $_SERVER['DOCUMENT_ROOT'],"juJUNKnk" . explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[0] . "localhost" . explode("/",explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[1])[0] . "",explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))]) . "'; " . "  var tt='" . str_replace("+"," ",urldecode($_GET['vsfn'])) . "'; "  . ' var ct=top.document.getElementById(' . "'" . 'cto' . "'" . ').value; ct=ct.replace(' . "'" . '*' . "'" . ',' . "'" . 'html' . "'" . '); top.document.getElementById(' . "'" . 'sin' . "'" . ').style.display=' . "'" . 'inline-block' . "'" . '; top.document.getElementById(' . "'" . 'path' . "'" . ").value=tp.replace(tt, ''); " . ' top.document.getElementById(' . "'" . 'opath' . "'" . ").value=tp.replace(tt, ''); " . '  top.selch(ct);   "></body></html>'; 
          } //else { 
          //echo '<html><body onload=" if (parent.document.getElementById(' . "'" . 'eangle' . "'" . ')) { parent.document.getElementById(' . "'" . 'eangle' . "'" . ').value=' . "'" . $ort . "'" . ';  } top.document.getElementById(' . "'" . str_replace("+"," ",urldecode($_GET['vsfi'])) . "'" . ").value='" . $ort . "'; " . '"></body></html>'; 
          //}
        } //else if (isset($_GET['turl'])) {      
          //echo '<html><body onload=" top.document.getElementById(' . "'" . 'turl' . "'" . ").placeholder='" . str_replace($_SERVER['DOCUMENT_ROOT'],explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[0] . "localhost" . explode("/",explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[1])[0] . "",explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))]) . "'; " . '  top.document.getElementById(' . "'" . 'turl' . "'" . ').title=top.document.getElementById(' . "'" . 'turl' . "'" . ').placeholder;   top.document.getElementById(' . "'" . 'thewords' . "'" . ').title=top.document.getElementById(' . "'" . 'thewords' . "'" . ').title.replace( top.document.getElementById(' . "'" . 'turl' . "'" . ').value, top.document.getElementById(' . "'" . 'turl' . "'" . ').placeholder);   top.document.getElementById(' . "'" . 'thewords' . "'" . ').value=top.document.getElementById(' . "'" . 'thewords' . "'" . ').value.replace( top.document.getElementById(' . "'" . 'turl' . "'" . ').value, top.document.getElementById(' . "'" . 'turl' . "'" . ').placeholder);   top.document.getElementById(' . "'" . 'turl' . "'" . ').value=top.document.getElementById(' . "'" . 'turl' . "'" . ').placeholder;   top.document.getElementById(' . "'" . 'thewords' . "'" . ').value=top.document.getElementById(' . "'" . 'thewords' . "'" . ').value.replace( top.document.getElementById(' . "'" . 'turl' . "'" . ').value, top.document.getElementById(' . "'" . 'turl' . "'" . ').placeholder);  "></body></html>'; 
        //} else { 
        //  echo '<html><body onload=" parent.document.getElementById(' . "'" . str_replace("+"," ",urldecode($_GET['vsfi'])) . "'" . ").value='" . str_replace($_SERVER['DOCUMENT_ROOT'],explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[0] . "localhost" . explode("/",explode("localhost",str_replace("+"," ",urldecode($_GET['vsfu'])))[1])[0] . "",explode(" ", $lines[$il])[-1 + sizeof( explode(" ", $lines[$il]))]) . "'; " . '"></body></html>'; 
        //}
        unlink("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn']))))); 
      } else {
        unlink("lookup_" . str_replace(")","",str_replace("(","",str_replace("+"," ",urldecode($_GET['vsfn']))))); 
      }
    }
  } 
  exit;
}



if (PHP_OS == "Darwin" || $verb != "textutil") {
if (isset($_GET['convertthis']) && isset($_GET['outputname'])) {
  if ($_GET['convertthis'] != "") {
  $thewords=str_replace("+"," ",urldecode($_GET['convertthis']));
  $thegoes=explode(",", $thewords);
  for ($indx=0; $indx<sizeof($thegoes); $indx++) {
  if (file_exists(yourstr_replace("+"," ",urldecode($_GET['outputname'])))) {
    while (file_exists(yourstr_replace("+"," ",urldecode($_GET['outputname'])) . $sufext)) {
      $iext++;
      $sufext="_" . $iext;
    }
    exec("rename " . yourstr_replace("+"," ",urldecode($_GET['outputname'])) . " " . yourstr_replace("+"," ",urldecode($_GET['outputname'])) . $sufext);
  }
  // pandoc -t pdf scjob.docx -o scjob.pdf  --pdf-engine=/Library/TeX/Root/bin/x86_64-darwin/pdflatex
  $cmdsuff="";
  if ($verb != "textutil" && explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == "pdf") {
  if (file_exists("/Library/TeX/Root/bin/x86_64-darwin/pdflatex")) {
  $cmdsuff=" --pdf-engine=/Library/TeX/Root/bin/x86_64-darwin/pdflatex";
  } else if (file_exists("/Library/TeX/texbin/pdflatex")) {
  $cmdsuff=" --pdf-engine=/Library/TeX/texbin/pdflatex";
  } else {
  $cmdsuff=" --pdf-engine=pdflatex";
  }
  }
  exec($verb . " " . $switchone . " " . explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] . " " . ourstr_replace("+"," ",$thewords) . " " . $switchtwo . " " . yourstr_replace("+"," ",urldecode($_GET['outputname'])) . $cmdsuff . " > macos_textutil_convert.out 2> macos_textutil_convert.err");
  if (explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == "pdf") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_GET['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/pdf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  } else if (explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == "rtf") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_GET['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/rtf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  } else if (explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == "odt") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_GET['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/odt');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  }
  if (file_exists("macos_textutil_convert.out") && file_exists("macos_textutil_convert.err")) {
  if (filesize("macos_textutil_convert.out") == 0 && file_exists("macos_textutil_convert.err") != 0) {
    //if (explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == 'html') {
    //echo file_get_contents(ourstr_replace("+"," ",$thewords) . " " . $switchtwo . " " . yourstr_replace("+"," ",urldecode($_GET['outputname'])));
    //} else {
    if (file_exists(yourstr_replace("+"," ",urldecode($_GET['outputname']))) && explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == 'html') {
    echo file_get_contents(yourstr_replace("+"," ",urldecode($_GET['outputname'])));
    } else {
    echo "<html><body onload=\"if (window.opener) { window.opener.document.getElementById('dothework').style.height='40px';    window.opener.document.getElementById('dothework').style.display='block';  } else if (window.parent) { parent.document.getElementById('dothework').style.height='40px';    parent.document.getElementById('dothework').style.display='block'; } \"><p>" . file_get_contents("macos_textutil_convert.err") . "</p></body></html>";
    }
  } else {
    if (explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))] == 'html') {
    echo file_get_contents(yourstr_replace("+"," ",urldecode($_GET['outputname'])));
    } else {
    echo explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_GET['outputname']))))];
    }
  }
  }
  }
  exit;
  }
} else if (isset($_POST['convertthis']) && isset($_POST['outputname'])) {
  if ($_POST['convertthis'] != "") {
  $thewords=str_replace("+"," ",urldecode($_POST['convertthis']));
  $thegoes=explode(",", $thewords);
  for ($indx=0; $indx<sizeof($thegoes); $indx++) {
  if (file_exists(yourstr_replace("+"," ",urldecode($_POST['outputname'])))) {
    while (file_exists(yourstr_replace("+"," ",urldecode($_POST['outputname'])) . $sufext)) {
      $iext++;
      $sufext="_" . $iext;
    }
    exec("rename " . yourstr_replace("+"," ",urldecode($_POST['outputname'])) . " " . yourstr_replace("+"," ",urldecode($_POST['outputname'])) . $sufext);
  }
  // pandoc -t pdf scjob.docx -o scjob.pdf
  $cmdsuff="";
  if ($verb != "textutil" && explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname']))))] == "pdf") {
  if (file_exists("/Library/TeX/Root/bin/x86_64-darwin/pdflatex")) {
  $cmdsuff=" --pdf-engine=/Library/TeX/Root/bin/x86_64-darwin/pdflatex";
  } else if (file_exists("/Library/TeX/texbin/pdflatex")) {
  $cmdsuff=" --pdf-engine=/Library/TeX/texbin/pdflatex";
  } else {
  $cmdsuff=" --pdf-engine=pdflatex";
  }
  }
  exec($verb . " " . $switchone . " " . explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname']))))] . " " . ourstr_replace("+"," ",$thewords) . " " . $switchtwo . " " . yourstr_replace("+"," ",urldecode($_POST['outputname'])) . $cmdsuff . " > macos_textutil_convert.out 2> macos_textutil_convert.err");
  if (explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname']))))] == "pdf") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_POST['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/pdf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  } else if (explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname']))))] == "rtf") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_POST['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/rtf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  } else if (explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",yourstr_replace("+"," ",urldecode($_POST['outputname']))))] == "odt") {
        $PDFfilename=yourstr_replace("+"," ",urldecode($_POST['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/odt');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf;  
        //exit; 
  }
  if (file_exists("macos_textutil_convert.out") && file_exists("macos_textutil_convert.err")) {
  if (filesize("macos_textutil_convert.out") == 0 && file_exists("macos_textutil_convert.err") != 0) {
    echo "<html><body onload=\" parent.document.getElementById('dothework').style.height='40px';  parent.document.getElementById('dothework').style.display='block'; \"><p>" . file_get_contents("macos_textutil_convert.err") . "</p></body></html>";
  }
  }
  }
  exit;
  }
} else if ((!isset($_GET['convertthis']) && !isset($_POST['convertthis'])) || !isset($_GET['outputname']) || !isset($_POST['outputname'])) {
  $outfileis="";
  if (isset($_GET['outputname'])) {
    $extis=explode(".",str_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_GET['outputname']))))];
    if (file_exists(str_replace("+"," ",urldecode($_GET['outputname'])))) {
    if (strtolower("~" . $extis, "~htm") !== false) {
    $thecontent=file_get_contents(str_replace("+"," ",urldecode($_GET['outputname'])));
    } else if (strtolower("~" . $extis, "~pdf") !== false) { // thanks to https://stackoverflow.com/questions/12730581/use-this-php-code-to-open-a-pdf-in-a-new-tab
        if (1 == 2) {
        $PDFfilename=str_replace("+"," ",urldecode($_GET['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/pdf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf; 
        }
        exit;  
    } else if (strtolower("~" . $extis, "~rtf") !== false) { // thanks to https://stackoverflow.com/questions/12730581/use-this-php-code-to-open-a-pdf-in-a-new-tab
        if (1 == 1) {
        $PDFfilename=str_replace("+"," ",urldecode($_GET['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/rtf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf; 
        } 
        exit; 
    } else {
    //echo explode(".",str_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_GET['outputname']))))];
    //exit;
    header('Content-type: application/' . explode(".",str_replace("+"," ",urldecode($_GET['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_GET['outputname']))))]); 
    echo file_get_contents(str_replace("+"," ",urldecode($_GET['outputname'])));
    exit;
    }
    }
  } else if (isset($_POST['outputname'])) {  
    $extis=explode(".",str_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_POST['outputname']))))];
    if (file_exists(str_replace("+"," ",urldecode($_POST['outputname'])))) {
    if (strtolower("~" . $extis, "~htm") !== false) {
    $thecontent=file_get_contents(str_replace("+"," ",urldecode($_POST['outputname'])));
    } else if (strtolower("~" . $extis, "~pdf") !== false) { // thanks to https://stackoverflow.com/questions/12730581/use-this-php-code-to-open-a-pdf-in-a-new-tab
        if (1 == 2) {
        $PDFfilename=str_replace("+"," ",urldecode($_POST['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/pdf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf; 
        } 
        exit; 
    } else if (strtolower("~" . $extis, "~rtf") !== false) { // thanks to https://stackoverflow.com/questions/12730581/use-this-php-code-to-open-a-pdf-in-a-new-tab
        if (1 == 1) {
        $PDFfilename=str_replace("+"," ",urldecode($_POST['outputname']));
        $pdf = file_get_contents($PDFfilename);

        header('Content-Type: application/rtf');
        header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Content-Length: ' . strlen($pdf));
        header('Content-Disposition: inline; filename="' . basename($PDFfilename) .'";');
        ob_clean(); 
        flush(); 
        echo $pdf; 
        } 
        exit; 
    } else {
    //echo explode(".",str_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_POST['outputname']))))];
    //exit;
    header('Content-type: application/' . explode(".",str_replace("+"," ",urldecode($_POST['outputname'])))[-1 + sizeof(explode(".",str_replace("+"," ",urldecode($_POST['outputname']))))]); 
    echo file_get_contents(str_replace("+"," ",urldecode($_POST['outputname'])));
    exit;
    }
    }
  }
  echo "<html>
<head>
<script type='text/javascript'>
  var wasv='';
  var firstgo=true;
  var lastvalue='.html';

  function woit() {
    var lf=100,tpq=100;
    for (var ij=0; ij<document.getElementById('thewords').value.split(',').length; ij++) {
    window.open(document.URL.split('?')[0].split('#')[0] + '?outputname=' + encodeURIComponent(document.getElementById('outputname').value.split(',')[ij]) + '&inpath=' + encodeURIComponent(document.getElementById('path').value) + '&outpath=' + encodeURIComponent(document.getElementById('opath').value) + '&convertthis=' + encodeURIComponent(document.getElementById('thewords').value.split(',')[ij]),'_blank','top=' + tpq + ',left=' + lf + ',width=500,height=500');
    lf+=20;
    tpq+=20;
    }
  }

  function thenreload() {
    location.href=document.URL.split('?')[0].split('#')[0] + '?outputname=' + encodeURIComponent(document.getElementById('outputname').value) + '&inpath=' + encodeURIComponent(document.getElementById('path').value) + '&outpath=' + encodeURIComponent(document.getElementById('opath').value) + '&dummyconvertthis=' + encodeURIComponent(document.getElementById('thewords').value);
  }
  
  function resultchange() {
    var newwo=null;
    if (document.getElementById('resultout').value == '') {
    setTimeout(resultchange, 2000);
    } else if (firstgo) {
    firstgo=false;
    setTimeout(resultchange, 6000);
    } else if (window.opener && document.URL.indexOf('outpath=') == -1) {
    } else if (window.opener && document.URL.indexOf('outpath=') != -1) {
    if (document.URL.split('outpath=')[1].indexOf('html') != -1) {
      newwo=window.open('','_blank','left=200,top=200,width=300,height=300');
      newwo.document.write(document.getElementById('resultout').value);
    }
    }
  }
  
  function selch(thisvalue) {
    if (lastvalue != '.*') {
     while (document.getElementById('outputname').value.indexOf(lastvalue) != -1) {
      document.getElementById('outputname').value=document.getElementById('outputname').value.replace(lastvalue, '.*');
     }
    }
    document.getElementById('outputname').value=document.getElementById('outputname').value.replace(/\.\*/g,'.' + thisvalue);
    lastvalue='.' + thisvalue;
  }
</script>
</head>
<body onload='resultchange();'>
<br><h1>Supervise <span id=sverb>" . $panplus . "textutil</span> Document Conversions</h1>
<h3>RJM Programming - July, 2020</h3>
" . $outfileis . "
<form id=myform onsubmit=\"if (document.getElementById('thewords').value.indexOf(',') != -1) {  woit(); return false; } else { document.getElementById('myform').style.cursor='progress'; document.body.style.cursor='progress'; setTimeout(thenreload,20000); return true; }\" target=dothework action=./macos_textutil_convert.php method=POST>
<table border=20 style='width:95%;'>
<tr><th>Input Document File(s) <span id=sin style=display:none;>in</span> <input name=inpath style=display:inline-block;width:60%; type=text id=path value='' placeholder=''></input></th><th><select onchange=\" selch(this.value);  \" style=display:inline-block; name=convertto id=cto>
<option value='*'>Convert to</option> 
<option value='txt'>Convert to txt</option>  
<option value='rtf'>Convert to rtf</option> 
<option value='rtfd'>Convert to rtfd</option> 
<option value='html'>Convert to html</option>  
<option value='doc'>Convert to doc</option>  
<option value='docx'>Convert to docx</option> 
<option value='odt'>Convert to odt</option> 
<option value='wordml'>Convert to wordml</option> 
<option value='webarchive'>Convert to webarchive</option> 
<option value='pdf'>Convert to pdf</option> 
</select><input name=outpath style=display:inline-block;width:30%; type=text id=opath value='' placeholder=''></input> <input style='width:40%;' onblur=\"if (this.value.toLowerCase().indexOf('.pdf') != -1) { document.getElementById('myform').target='_blank';   }  \" placeholder='Output document file(s)' type=text name=outputname id=outputname value=''></input></div>&nbsp;</th></tr>
<tr><td style=vertical-align:top;><input style='width:90%;' placeholder='Input document file(s)' id=thewords name=convertthis  value=''></input><br><div style='display:inline-block;width:96px;height:30px;overflow:hidden;vertical-align:text-bottom;'><iframe frameborder=0 id=cbi data-style='border-top:1px solid black;border-bottom:1px solid black;border-left:2px solid yellow;border-right:1px solid yellow;' style='width:173px;height:228px;margin-top:-194px;' src='HTMLCSS/client_browsing.htm?d=" . rand(0,18765432) . "'></iframe></div></td><td style=vertical-align:top;><input style='width:100%;height:100px;background-color:yellow;' type=submit value='Convert Document(s)'></input><br><div id=resultout>" . $thecontent . "</textarea></td></tr>
</table>
</form>
<iframe style='width:100%;height:0px;' frameborder=0 name=dothework id=dothework style=display:none; src=macos_textutil_convert.php></iframe>
<input type=text style='position:absolute;top:-1200px;left:-1200px;'></input>
<input type=hidden id=turl value=''></input>
</body>
</html>";
} 
} else {
 echo "<html><body><p>This PHP web application only works with macOS and its textutil -convert [outextension] [infilename] -output [outfilename] command line Document Conversion functionality, or install pandoc (for Windows).</p></body><html>";
 exit;
}
?>
