<?php
// php_content_type.php
// PHP Content Type Tutorial 
// RJM Programming - August, 2015
// Thanks to http://www.sitepoint.com/web-foundations/mime-types-complete-list/
// http://www.rjmprogramming.com.au/Welcome_files/shapeimage_1.jpg

// http://www.rjmprogramming.com.au/Mac/GoToMeeting/GoToMeeting.m4v
// http://www.rjmprogramming.com.au/Mac/GoToMeeting/GoToMeeting.m4a

$selname = "";
if (isset($_POST['selname'])) $selname = $_POST['selname'];
if (isset($_GET['selname'])) $selname = $_GET['selname'];

$dlsuggestion="file.html";
$captionis="";
$lots="";
$onl="";
$ifbpre="it == null && document.getElementById(\"selname\").value != \"\"";
$ifb="previt == null";
$dgei="document.getElementById('selname').value";
if (isset($_POST['td1_1'])) $ifbpre="1 == 1";
if (isset($_POST['td1_1'])) $ifb="1 == 1";
if (isset($_POST['td1_1'])) $dgei="'" . urldecode($_POST['td1_1']) . "'";
if (isset($_POST['td1_1'])) $onl=" onload='testit();' ";
if (isset($_POST['td1_1'])) {
  $iy=1;
  $wsplit=explode("wording=", urldecode($_POST['td1_1']));
  if (sizeof($wsplit) > 1) {
   $captionis=$wsplit[sizeof($wsplit) - 1];
   $lots.="document.getElementById('myixframe').title='" . $wsplit[sizeof($wsplit) - 1] . "'; \n";
  } else { 
   $lots.="document.getElementById('myixframe').title='" . urldecode($_POST['td1_1']) . "'; \n";
  }
  $lots.="document.getElementById('myixframe').src='" . urldecode($_POST['td1_1']) . "'; if ('" . urldecode($_POST['td1_1']) . "'.indexOf('download=') !== -1) {   window.open(duzero[0] + '?download=y&selname=' + encodeURIComponent('" . urldecode($_POST['td1_1']) . "'),'_blank','top=10,left=10,width=400,height=400'); }  \n";
  //$_POST['td1_1'] = urlencode(str_replace("download=", "loaddown=", urldecode($_POST['td1_1'])));
  while (isset($_POST["td" . $iy . "_1"])) {
    if (strlen($_POST["td" . $iy . "_1"]) > 0) {
     $lots.="document.getElementById('td" . $iy . "_1').value='" . urldecode($_POST['td' . $iy . '_1']) . "'; \n";
     $lots.="document.getElementById('td" . $iy . "_2').value='" . $_POST['td' . $iy . '_2'] . "'; \n";
     $lots.="document.getElementById('td" . $iy . "_3').value='" . $_POST['td' . $iy . '_3'] . "'; \n";
     $lots.="addit('" . urldecode($_POST['td' . $iy . '_1']) . "', '" . "td" . $iy . "_1" . "'); \n";
    }
    $iy++;
  }
}

$scrbits = "<script type='text/javascript'>\n var duzero=document.URL.split('?');  var nextmode=\"\"; var addto=\"myixframe\"; var axfcnt=1; var maxrec=-1; var nextaim=-2; var cnt=-1; var nexturl=''; var nextrec=0;\n function testit() {\n  var previt=document.getElementById(\"myixframe\"); it=previt; if (" . $ifbpre . ") {\n if (document.body.innerHTML.indexOf(\"i\" + \"frame\") == -1) {\n  document.body.innerHTML=document.body.innerHTML.replace(\"<div \", \"<div align=center id=mydiv2><table><tbody><tr id='mytb2'><td id=mytdframe><if\" + \"rame width=400 height=400 style=background-color:lightgreen id=myixframe src=./php_content_type.php?selname=\" + encodeURIComponent(" . $dgei . ") + \"; title=i\" + \"frame></i\" + \"frame><br>" . $captionis . "</td></tr></tbody></table></div><div \");\n    }\n document.getElementById(\"myixframe\").src=\"./php_content_type.php?selname=\" + encodeURIComponent(" . $dgei . ");\n  it=document.getElementById(\"myixframe\");\n }\n

 if (" . $ifb . ") {
   nextrec=2;
   var mydiv=document.getElementById(\"mydiv\"); 
   var mytable=\"<br><br><form id='myfis' action='./php_content_type.php?selname=&sep=' method='POST'><input type='submit' id='mysbut' style='display:none;background-color:yellow;' value='Play or Synchronize'></input>&nbsp;&nbsp;<input onclick='suffixall();' type='button' id='mydsbut' style='display:none;background-color:yellow;' value='Download All and Play or Synchronize'></input><br><table style='background-color: pink;' id='mytable'><tbody id='mytbody'><tr><th>Delay in Seconds</th><th>Overlay or Add</th><th style='width:70%;' title='Suffixes of ?wording=[caption] or &wording=[caption] available for use'>Url</th></tr><tr id='tr1'><td><input name='td1_2' id='td1_2' type='number' value='5'></input></td><td><select name='td1_3' id='td1_3'><option value='Overlay'>Overlay</option></select></td><td style='width:70%;'><input style='width:92%;' name='td1_1' id='td1_1' type='url' value='" . urldecode($selname) . "'></input></td></tr><tr id='tr2'></td><td><input name='td2_2' id='td2_2' type='number' value='5'></input></td><td><select name='td2_3' id='td2_3'><option value='Overlay'>Overlay</option><option value='Add'>Add</option></select></td><td style='width:70%;'><input onblur='addit(this.value, this.id);' style='width:92%;' name='td2_1' id='td2_1' type='url' value=''></input></tr></tbody></table></form><div id='d3' align='center'></div>\";
   for (var iyt=3; iyt<75; iyt++) {
     mytable=mytable.replace(\"</tbody>\", \"<tr style='visibility:hidden;' id='tr\" + iyt + \"'></td><td><input name='td\" + iyt + \"_2' id='td\" + iyt + \"_2' type='number' value='5'></input></td><td><select name='td\" + iyt + \"_3' id='td\" + iyt + \"_3'><option value='Overlay'>Overlay</option><option value='Add'>Add</option></select></td><td style='width:70%;'><input onblur='addit(this.value, this.id);' style='width:92%;' name='td\" + iyt + \"_1' id='td\" + iyt + \"_1' type='url' value=''></input></tr>\" + \"</tbody>\");
   }
   mydiv.innerHTML+=mytable;
   document.getElementById(\"td1_1\").value=" . $dgei . ";
   " . $lots . "
 }

 }
 
 function suffixall() {
   var mf=document.getElementById('mfis');
   for (var iyt=1; iyt<75; iyt++) {
     if (document.getElementById('td' + iyt + '_1').value != '' && document.getElementById('td' + iyt + '_1').value.indexOf('download=') == -1) {
       if (document.getElementById('td' + iyt + '_1').value.indexOf('?') == -1) {
         document.getElementById('td' + iyt + '_1').value += '?download=y';
       } else {
         document.getElementById('td' + iyt + '_1').value += '&download=y';
       }
     }
   }
   mf.submit();
 }
 
 function downloadit() {
   var mf=document.getElementById('mform');
   mf.action += '?download=y';
   mf.submit();
 }
 
 function addtotdih(retval, altwording, ifis) {
   var tdo=document.getElementById(ifis.replace('ix', 'td'));
   var wasbits=tdo.innerHTML.split('>');
   if (wasbits[-1 + wasbits.length] == '' && altwording != '') {
     tdo.innerHTML += altwording;
   } else if (wasbits[-1 + wasbits.length] != '') {
     tdo.innerHTML = tdo.innerHTML.replace('>' + wasbits[-1 + wasbits.length], '>' + altwording);
   }
   return retval;
 }
 
 function lookoutfor() {
   var wsplit;
   if (nexturl != '') {
    if (nextaim < 0) {
      cnt=-1;
      nexturl=document.getElementById(\"td\" + nextrec + \"_1\").value;
      if (nexturl.indexOf('download=') != -1) {
        document.getElementById(\"td\" + nextrec + \"_1\").value=nexturl.replace('download=', 'loaddown=');
      }
      nextaim=document.getElementById(\"td\" + nextrec + \"_2\").value;
      nextmode=document.getElementById(\"td\" + nextrec + \"_3\").value;
    }
    cnt=eval(1 + cnt);
    if (cnt == nextaim) {
      if (nextmode == 'Add') {
        axfcnt=eval(1 + axfcnt);
        addto=\"myixframe\";
        if (axfcnt > 1) addto=\"myixframe\" + axfcnt;
        //alert(addto);
      }
      if (document.getElementById(addto)) {
        if (document.getElementById(addto).src != nexturl) {
          wsplit=nexturl.split('wording=');
          document.getElementById(addto).src=nexturl;
          if (nexturl.indexOf('download=') != -1) {
            window.open(duzero[0] + '?download=y&selname=' + encodeURIComponent(nexturl), '_blank', 'top=20,left=20,height=400,width=400');
          }
          if (wsplit.length > 1) {
           document.getElementById(addto).title=addtotdih(wsplit[-1 + wsplit.length], wsplit[-1 + wsplit.length], addto);
          } else {
           document.getElementById(addto).title=addtotdih(nexturl, '', addto);
          }
        }
      } else {
        //axfcnt=eval(1 + axfcnt);
        //addto=\"myixframe\" + axfcnt;
        //alert(addto);
        //document.getElementById(\"mydiv2\").innerHTML+=\"<if\" + \"rame width=400 height=400 style=background-color:lightgreen id=myixframe\" + axfcnt + \" src=./php_content_type.php?selname=\" + encodeURIComponent(nexturl) + \"; title=i\" + \"frame></i\" + \"frame>\";
        wsplit=nexturl.split('wording=');
        if (wsplit.length > 1) {
          document.getElementById(\"mytb2\").innerHTML+=\"<td id=mytdframe\" + axfcnt + \"><if\" + \"rame width=400 height=400 style=background-color:lightgreen id=myixframe\" + axfcnt + \" src=./php_content_type.php?selname=\" + encodeURIComponent(nexturl) + \"; title=i\" + \"frame></i\" + \"frame><br>\" + wsplit[-1 + wsplit.length] + \"</td>\";
        } else {
          document.getElementById(\"mytb2\").innerHTML+=\"<td id=mytdframe\" + axfcnt + \"><if\" + \"rame width=400 height=400 style=background-color:lightgreen id=myixframe\" + axfcnt + \" src=./php_content_type.php?selname=\" + encodeURIComponent(nexturl) + \"; title=i\" + \"frame></i\" + \"frame><br></td>\";
        }
      }
      nextaim=-2;
      cnt=-1;
      nextrec=eval(eval(nextrec % maxrec) + 1);
      if (nextrec == 1) {
        axfcnt=1;
        addto=\"myixframe\";
      }
    }
   }
   setTimeout(lookoutfor, 1000);
 }
 
 function addit(tval, tid) {
   if (nexturl == '') {
     nexturl=tval;
   }
   if (nexturl != '' && maxrec < 0) {
     maxrec=2;
     lookoutfor();
   } else {
     maxrec=eval(tid.replace('td','').replace('_1',''));
   }
   if (nexturl != '') {
    document.getElementById(\"myfis\").action=document.getElementById(\"myfis\").action.replace('=&sep=', '=' + encodeURIComponent(document.getElementById(\"td1_1\").value));
    document.getElementById(\"mysbut\").style.display='inline';
    document.getElementById(\"mydsbut\").style.display='inline';
    document.getElementById(\"tr\" + eval(1 + maxrec)).style.visibility='visible';
   }
 }
 
 \n </script>";

if (strpos($selname, "/") !== false) $selname = urlencode($selname);

$stybits = "<link href='//www.rjmprogramming.com.au/PHP/emboss_h1.css' rel='stylesheet' type='text/css'>";
$firstbits = "<!doctype html>\n<html>\n<head>\n<title>PHP Content Type Primer Tutorial</title>" . $stybits . $scrbits . "</head>\n<body " . $onl . " style='background-color: lightblue;'>\n";
$erroneousbits = "<h1 align='center'>Sorry, but " . urldecode($selname) . " is too big a media file to display.</h1><br>";
$formbits = "<h1 align='center'>PHP Content Type Url</h1><br><div id='mydiv' align='center'>\n<form target='_blank' action='./php_content_type.php' method='POST' id='mform'>Url: <input type='url' name='selname' id='selname' style='width:70%;' value='http://www.rjmprogramming.com.au/MyBusinessUnidad/Welcome_files/logo.jpg'></input><br><br><input onclick=' if (document.getElementById(\"selname\").value != \"\") { window.open(document.getElementById(\"selname\").value, \"_blank\");  } ' type='button' value='Navigate via Web Browser'></input>&nbsp;<input type='submit' title='Would prefer http://www.rjmprogramming.com.au URL please' value='Show via PHP Content Type to New Webpage' name='pdf' id='pdf'></input>&nbsp;\n<input type='button' onclick=' testit(); ' title='Would prefer http://www.rjmprogramming.com.au URL please' value='Show PHP Content Type Below (as first of many, perhaps)' id='viaixframe'>\n</input>&nbsp;\n<input type='button' onclick=' downloadit(); ' title='Would prefer http://www.rjmprogramming.com.au URL please' value='Download PHP Content Type' id='viadownload'>\n</input></form></div></body></html>";
$suffix = "";

if ($selname != "") {
        $prefix = "application/";
        $qbits = explode("?", urldecode($selname));
        $otherbits = explode(".", $qbits[0]);
        $dlbits = explode("/", $qbits[0]);
        if (strpos($dlbits[sizeof($dlbits) - 1], ".") !== false) $dlsuggestion=$dlbits[sizeof($dlbits) - 1];
        //echo urldecode($selname);
        
        //$firstbits = "";
        //$erroneousbits = "";
        //$formbits = "";
        
        // Thanks to http://www.sitepoint.com/web-foundations/mime-types-complete-list/
        if (!file_exists("our_mime.list")) file_put_contents("our_mime.list", file_get_contents("http://www.sitepoint.com/web-foundations/mime-types-complete-list/"));
        $mimelist = file_get_contents("our_mime.list");
 
        // Mime type considerations below ...
 
        $ct = "";
        $cells = explode("</td>", $mimelist);
        
        for ($ii=0; $ii<(sizeof($cells) - 1); $ii+=2) {
          $precells = explode(">", $cells[$ii]);
          $extis = strtolower(str_replace(".", "", $precells[sizeof($precells) - 1]));
          if ($ct == "" && strtolower($otherbits[sizeof($otherbits) - 1]) == $extis) {
           $precells = explode(">", $cells[1 + $ii]);
           $ct = $precells[sizeof($precells) - 1];
          }
        }

        if ($ct == "") {
         if (strpos(strtolower(urldecode($selname)), ".") === false) {
          $ct = "text/html";
         } else {
 
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "m4v") {
            $prefix = "video/";
            $otherbits[sizeof($otherbits) - 1] = "mpeg";
          }
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "m4a") {
            $prefix = "audio/";
            $otherbits[sizeof($otherbits) - 1] = "mpeg";
          }

          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "html") $prefix = "text/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "htm") $prefix = "text/";
        
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "jpg") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "jpeg") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "gif") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "bmp") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "tif") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "tiff") $prefix = "image/";
          if (strtolower($otherbits[sizeof($otherbits) - 1]) == "png") $prefix = "image/";
          $ct = $prefix . strtolower($otherbits[sizeof($otherbits) - 1]);
         }
        }
        //echo $ct;
        if (!isset($_POST['td1_1'])) {
         $firstbits = "";
         $erroneousbits = "";
         $formbits = "";
         header('Content-Type: ' . $ct);
         if (isset($_GET['download']) || isset($_POST['download']) || strpos(strtolower(urldecode($selname)), "?download=") !== false || strpos(strtolower(urldecode($selname)), "&download=") !== false) {
           header('Content-Disposition: attachment; filename="' . $dlsuggestion . '"');
         } else {
           header('Content-Disposition: inline');
         }
         echo file_get_contents(urldecode($selname));
        } else if (1 == 1) {
		 $erroneousbits = "";
        }
        
} else {
		$erroneousbits = "";
}

echo $firstbits;
echo $erroneousbits;
echo $formbits;
?> 

