<?php
// use_attachment.php
// RJM Programming
// July, 2018
// PDF Attachments via fpdf and attachment.php ... thanks

// Thanks to http://www.fpdf.org/en/script/script95.php
require('attachment.php');

$httpc='';
$flist='';
$fdelim='';
$att=false;

function ourhtmlspecialchars($inv) {
  global $httpc;
  if ($httpc != '') {
    $xhttpc=$httpc;
    $httpc='';
    return $xhttpc;
  }
  return urldecode($inv);
}

function short($inf) {
  global $httpc;
  $inf=urlencode(str_replace("_",".",urldecode($inf)));
  //if (strpos(("~" . $inf), "~attach") !== false) echo urldecode($inf) . "\n";
  if (strpos(urldecode($inf), "/") !== false) {
    if (strpos(("~" . strtolower(urldecode($inf))), "~http") !== false) {
      $httpc=file_get_contents(urldecode($inf));
    }
    return explode("/", urldecode($inf))[-1 + sizeof(explode("/", urldecode($inf)))];
  } else if (strpos(urldecode($inf), substr("\\",0,1)) !== false) {
    if (strpos(("~" . strtolower(urldecode($inf))), "~http") !== false) {
      $httpc=file_get_contents(urldecode($inf));
    }
    return explode(substr("\\",0,1), urldecode($inf))[-1 + sizeof(explode(substr("\\",0,1), urldecode($inf)))];
  }
  //if (strpos(("~" . $inf), "~attach") !== false) echo ":" . urldecode($inf) . "\n";
  return urldecode($inf);
}

$pdf = null; //new PDF_Attachment();
$done=false;
$msg=array('This PDF contains an attached file.');
$msgn=array('');
$msgv=array('');
$imsg=0;
$cnt=0;
$pref='';
$design='';
$lastsub='';
$lastsubi='';
$names=",";
$ndelim="";
foreach ($_GET as $name => $val) {
  $names.=$ndelim . short($name); // . '=' . urldecode($val);
  $ndelim=",";
}
foreach ($_GET as $name => $val) {
     if (!$pdf) $pdf = new PDF_Attachment();
     //if (strpos(htmlspecialchars($val), ".php") === false) {
      if ($val != "" && substr(strtolower($name),0,7) == "subject") {
       if (strtolower($name) == "subject" || (strpos(urldecode($name),".") === false && strpos(urldecode($name),"_") === false)) {
       if ($lastsub != "" && urldecode($name) != $lastsub) {
         $msg[$imsg + 1]='';
       }
       if (sizeof($msg) > $imsg) {
         $imsg++;
       }
       $httpc="";
       short($val);
       if ($httpc != "" || $imsg > 0) {
         $msg[$imsg]=$httpc;
         $msg[$imsg]=urldecode($val);
         if (sizeof($msgn) > $imsg) {
           $msgn[$imsg]='';
           $msgv[$imsg]='';
         }
       } else {
         $msg[$imsg]=urldecode($val);
         if (sizeof($msgn) > $imsg) {
           $msgn[$imsg]='';
           $msgv[$imsg]='';
         }
       }
       $lastsub=urldecode($name);
       } else {
       if ($lastsubi != "" && urldecode($name) != $lastsubi) {
         $msgn[$imsg + 1]='';
         $msgv[$imsg + 1]='';
         $names.=' 00';
       }
         if (sizeof($msgn) > $imsg) {
           $imsg++;
         }
         if (strpos($names, "," . explode(".",str_replace("subject2","subject",str_replace("_",".",urldecode($name))))[0] . ",") !== false) {
         $jmsg=1;
         while ($msgn[$jmsg] != '') {
           $jmsg++;
         }
         $msgn[$jmsg]=str_replace("_",".",urldecode($name));
         $msgv[$jmsg]=str_replace('$@$','+',str_replace('@!@','+',urldecode($val)));
         } else {
         $msgn[$imsg]=str_replace("_",".",urldecode($name));
         $msgv[$imsg]=str_replace('$@$','+',str_replace('@!@','+',urldecode($val)));
         }
         if (sizeof($msg) > $imsg) {
           $msg[$imsg]='';
         }
       $lastsubi=urldecode($name);
       }
      } else if ($val == "" && substr(strtolower($name),0,7) == "subject") {
       if ($lastsub != "" && urldecode($name) != $lastsub) {
         $msg[$imsg + 1]='';
       }
       if (sizeof($msg) > $imsg) {
         $imsg++;
         $names.=' 0';
       }
       $msg[$imsg]=$msg[$imsg];
       $lastsub=urldecode($name);
      } else if ($val == "" && file_exists($name)) {
       $pdf->Attach(getcwd() . "/" . $name);
       $att=true;
       $done=true;
       $cnt++;
      } else if ($val == "" && !file_exists(short($name))) {
       file_put_contents(short($name), "");
       $pdf->Attach(getcwd() . "/" . short($name));
       $att=true;
       $flist.=$fdelim . (short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      } else if ($val != "" && file_exists($name)) {
       $pref="1_";
       while (file_exists($pref . short($name))) {
         $pref.="1_";
       }
       file_put_contents($pref . short($name), ourhtmlspecialchars($val));
       $pdf->Attach(getcwd() . "/" . $pref . short($name));
       $att=true;
       $flist.=$fdelim . ($pref . short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      } else if ($val != "") {
       file_put_contents(short($name), ourhtmlspecialchars($val));
       $pdf->Attach(getcwd() . "/" . short($name));
       $att=true;
       $flist.=(short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      }
     //}
     $pref='';
}
if (!$done) {
$names=",";
$ndelim="";
foreach ($_POST as $name => $val) {
  $names.=$ndelim . short($name); // . '=' . urldecode($val);
  $ndelim=",";
}
//if ($names != "") {
//echo $names;
//exit;
//}
//  0 1 00 0 1 6 7 00 5 6       
// This PDF contains an attached file.,page 1,
// ,,subject22.png
foreach ($_POST as $name => $val) {
     if (!$pdf) $pdf = new PDF_Attachment();
     //if (strpos(htmlspecialchars($val), ".php") === false) {
      if ($val != "" && substr(strtolower($name),0,7) == "subject") {
       if (strtolower($name) == "subject" || (strpos(urldecode($name),".") === false && strpos(urldecode($name),"_") === false)) {
       if ($lastsub != "" && urldecode($name) != $lastsub) {
         $msg[$imsg + 1]='';
         $names.=' 00' . urldecode($name);
       }
       if (sizeof($msg) > $imsg) {
         $imsg++;
         $names.=' 0';
       }
       $httpc="";
       short($val);
       if ($httpc != "" || $imsg > 0) {
         $msg[$imsg]=$httpc;
         $msg[$imsg]=urldecode($val);
         $names.=' 1';
         if (sizeof($msgn) > $imsg) {
         $names.=' 2';
           $msgn[$imsg]='';
           $msgv[$imsg]='';
         }
       } else {
         $msg[$imsg]=urldecode($val);
         $names.=' 3.' . $imsg;
         if (sizeof($msgn) > $imsg) {
         $names.=' 4';
           $msgn[$imsg]='';
           $msgv[$imsg]='';
         }
       }
       $lastsub=urldecode($name);
       } else {
       if ($lastsubi != "" && urldecode($name) != $lastsubi && strpos($names, "," . explode(".",str_replace("subject2","subject",str_replace("_",".",urldecode($name))))[0] . ",") === false) {
         $msgn[$imsg + 1]='';
         $msgv[$imsg + 1]='';
         $names.=' 000' . urldecode($name);
       }
         if (sizeof($msgn) > $imsg) {
         $names.=' 5';
           $imsg++;
         }
         $names.=' 6';
         if (strpos($names, "," . explode(".",str_replace("subject2","subject",str_replace("_",".",urldecode($name))))[0] . ",") !== false) {
         $jmsg=1;
         while ($msgn[$jmsg] != '') {
           $jmsg++;
         }
         $msgn[$jmsg]=str_replace("_",".",urldecode($name));
         $msgv[$jmsg]=str_replace('$@$','+',str_replace('@!@','+',urldecode($val)));
         $names.=' 65';
         } else {
         $names.=' 675';
         $msgn[$imsg]=str_replace("_",".",urldecode($name));
         $msgv[$imsg]=str_replace('$@$','+',str_replace('@!@','+',urldecode($val)));
         if (sizeof($msg) > $imsg) {
         $names.=' 7';
           $msg[$imsg]='';
         }
         }
       $lastsubi=urldecode($name);
       }
      } else if ($val == "" && substr(strtolower($name),0,7) == "subject") {
         $names.=' 8';
       if ($lastsub != "" && urldecode($name) != $lastsub) {
         $msg[$imsg + 1]='';
       }
       if (sizeof($msg) > $imsg) {
         $imsg++;
         $names.=' 0';
       }
       $msg[$imsg]=$msg[$imsg];
       $lastsub=urldecode($name);
      } else if ($val == "" && file_exists(short($name))) {
         $names.=' 9';
       echo "\n ! " . short($name) . "\n";
       if (file_exists($pref . short($name))) echo "\n !! " . $pref . short($name) . "\n";
       $pdf->Attach(getcwd() . "/" . short($name));
       $att=true;
       $done=true;
       $cnt++;
      } else if ($val == "" && !file_exists(short($name))) {
         $names.=' a';
       file_put_contents(short($name), "");
       //echo "\n ? " . short($name) . "\n";
       //if (file_exists($pref . short($name))) echo "\n ?? " . $pref . short($name) . "\n";
       $pdf->Attach(getcwd() . "/" . short($name));
       $att=true;
       $flist.=(short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      } else if ($val != "" && file_exists(short($name))) {
         $names.=' b';
       $pref="1_";
       while (file_exists($pref . short($name))) {
         $pref.="1_";
       }
         $names.=' c';
       file_put_contents($pref . short($name), ourhtmlspecialchars($val));
       //echo "\n . " . $pref . short($name) . "\n";
       //if (file_exists($pref . short($name))) echo "\n .. " . $pref . short($name) . "\n";
       $pdf->Attach(getcwd() . "/" . $pref . short($name));
       $att=true;
       $flist.=($pref . short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      } else if ($val != "") {
       file_put_contents(short($name), ourhtmlspecialchars($val));
       //echo "\n " . short($name) . "\n";
       //if (file_exists(short($name))) echo "\n ... " . short($name) . "\n";
       $pdf->Attach(getcwd() . "/" . short($name));
       $att=true;
       $flist.=(short($name));
       $fdelim=',';
       $done=true;
       $cnt++;
      }
     //}
     $pref='';
}
 if ($names != "") {
    //echo $names;
    //exit;
 }
}

if (!$pdf) {
echo "<!doctype html>
<html>
<head>
<title>PDF Attachments - RJM Programming - July, 2018</title>
<style>
  td { vertical-align:top; }
</style>
<script type='text/javascript'>
var curpage=1;
var dtemplate='';
function bigdeal(soi) {
 if (soi.value == '') {
   document.getElementById('tdleft').innerHTML='';
   document.getElementById('tdmiddle').innerHTML='';
 } else {
   document.getElementById('tdmiddle').innerHTML='==&gt;<br>==&gt;<br>==&gt;<br>==&gt;<br><span title=\"Current PDF Page Number\" id=scurp style=\"border:3px solid red;padding: 3px 3px 3px 3px;\">' + curpage + '</span><br>==&gt;<br>==&gt;<br>==&gt;<br>==&gt;<br>';
   document.getElementById('tdleft').style.width='60%';
   document.getElementById('tdleft').innerHTML=\"<iframe id=liframe style='height:800px;width:100%;' title=Canvas src='../HTMLCSS/feedback.htm?rand=" . rand() . "'></iframe>\";
 }
}
function pd(oi) {
 if (oi.value != '') {
 if (oi.id.indexOf('content') != -1) {
  //alert('ii' + oi.id.replace('content','') + ' ... ' + oi.value);
  document.getElementById('ii' + oi.id.replace('content','')).value=oi.value;
 } else {
  //alert('d' + oi.id.replace('i','') + ' .. ' + '<input id=ii' + oi.id.replace('i','') + ' type=hidden style=display:none; value=\"\" name=' + oi.value + '></input>');
  document.getElementById('d' + oi.id.replace('i','')).innerHTML='<input id=ii' + oi.id.replace('i','') + ' type=hidden style=display:none; value=\"\" name=' + oi.value + '></input>';
 }
 }
}

function andthen() {
  document.getElementById('sumsubject' + eval(-1 + curpage)).innerHTML='Page ' + eval(-1 + curpage);
}

function addpage(pwhat,swhat) {
 swhat.innerHTML='';
 curpage++;
 if (document.getElementById('subject').title.indexOf('data:image/') == 0) { 
 document.getElementById('dsubject' + curpage).innerHTML=dtemplate.replace(/1/g, '' + curpage) + '<input type=hidden name=subject2' + eval(0 + curpage) + '.' + document.getElementById('subject').title.split('data:image/')[1].split(';')[0] + ' value=' + String.fromCharCode(39) + document.getElementById('subject').title.replace(/\+/g,'@!@') + String.fromCharCode(39) + '></input><div id=dsubject' + eval(curpage + 1) + '></div>';
 } else {
 document.getElementById('dsubject' + curpage).innerHTML=dtemplate.replace(/1/g, '' + curpage) + '<div id=dsubject' + eval(curpage + 1) + '></div>';
 }
 setTimeout(andthen,500); //document.getElementById('sumsubject' + eval(-1 + curpage)).innerHTML='Page ' + eval(-1 + curpage);
 document.getElementById('detsubject' + eval(-1 + curpage)).setAttribute('open',false);
 document.getElementById('subject').title='';
 if (document.getElementById('scurp')) {
   document.getElementById('scurp').innerHTML='' + curpage;
 }
}
function atstart() {
 dtemplate=document.getElementById('dsubject1').outerHTML.replace('name=' + String.fromCharCode(34) + 'subject' + String.fromCharCode(34),'name=' + String.fromCharCode(34) + 'subject1' + String.fromCharCode(34)).replace('id=' + String.fromCharCode(34) + 'subject' + String.fromCharCode(34),'id=' + String.fromCharCode(34) + 'subject1' + String.fromCharCode(34));
}
</script>
</head>
<body onload='atstart();'>
<form onsubmit=\"if (document.getElementById('subject').title.indexOf('data:image/') == 0) { document.getElementById('dcanvasfields').innerHTML+='<input type=hidden name=subject2.' + document.getElementById('subject').title.split('data:image/')[1].split(';')[0] + ' value=' + String.fromCharCode(39) + document.getElementById('subject').title.replace(/\+/g,'@!@') + String.fromCharCode(39) + '></input>';   }  return true;\" action='./use_attachment.php' method='POST'>
<table style='width:100%;'><tr id=toptr><td id=tdleft></td><td id=tdmiddle></td><td id=tdright><h1>PDF Attachments</h1>
<h3>RJM Programming</h3>
<h3>July, 2018</h3>
<table style='width:100%;' border=5>
<tr style=background-color:pink;><th><select onchange='bigdeal(this);'><option value=''>Subject for Attachments</option><option value=canvas>Canvas Design</option></select></th><th id=thtop><div id=dsubject1><details id=detsubject1 open><summary id=sumsubject1><a id=asubject1 style=text-decoration:none;cursor:pointer; onclick=addpage(1,this); title='Add onto Page 1'>+</a></summary><textarea title='' id=\"subject\" name=\"subject\" cols=80 rows=5></textarea></details></div><div id=dsubject2></div></th></tr>
<tr><td id=td1>Attachment name (or HTTP url content) 1: <input onblur='pd(this);' type=text id=i1 value=''></input><div id=d1></div></td><td>Non HTTP URL Content 1: <textarea onchange='pd(this);' id=content1 cols=80 rows=5></textarea></td></tr>
<tr><td id=td2>Attachment name (or HTTP url content) 2: <input onblur='pd(this);' type=text id=i2 value=''></input><div id=d2></div></td><td>Non HTTP URL Content 2: <textarea onchange='pd(this);' id=content2 cols=80 rows=5></textarea></td></tr>
<tr><td id=td3>Attachment name (or HTTP url content) 3: <input onblur='pd(this);' type=text id=i3 value=''></input><div id=d3></div></td><td>Non HTTP URL Content 3: <textarea onchange='pd(this);' id=content3 cols=80 rows=5></textarea></td></tr>
<tr><td id=td4>Attachment name (or HTTP url content) 4: <input onblur='pd(this);' type=text id=i4 value=''></input><div id=d4></div></td><td>Non HTTP URL Content 4: <textarea onchange='pd(this);' id=content4 cols=80 rows=5></textarea></td></tr>
</table>
<br>
<input type='submit' value='Create PDF' style=background-color:yellow;></input></td></tr></table>
<div id=dcanvasfields></div>
</form>
</body>
</html>";
} else {
if (1 == 7 && !$done && strpos(("~" . $msg[0]), "~This PDF contain") !== false) $pdf->Attach('attached.txt');
if ($cnt > 1 && strpos(("~" . $msg[0]), "~This PDF contain") !== false) $msg[0]='This PDF contains ' . $cnt . ' attached files.';
$pdf->OpenAttachmentPane();
 if ($names != "") {
    //echo $names . ' === ' . $imsg . ' ... ' . sizeof($msg) . ' ... ' . sizeof($msgn) . ' ... ' . $msg[0] . ' ... ' . $msg[1] . "<br>\n" . $msg[0] . "," . $msg[1] . "," . $msg[2] . "<br>\n" . $msgn[0] . "," . $msgn[1] . "," . $msgn[2];
    //exit;
 }
for ($jmsg=(sizeof($msg) - $imsg); $jmsg<=$imsg; $jmsg++) {
$pdf->AddPage();
if (sizeof($msgn) > $jmsg) {
if ($msgn[$jmsg] != '') {
  if (file_exists($msgn[$jmsg])) {
       $pref="1_";
       while (file_exists($pref . $msgn[$jmsg])) {
         $pref.="1_";
       }
       file_put_contents($pref . $msgn[$jmsg], base64_decode(substr($msgv[$jmsg],strlen("data:image/png;base64,"))));
       $pdf->Image("http://www.rjmprogramming.com.au/PHP/" . $pref . $msgn[$jmsg], 0.0, 0.0);
       $flist.=($pref . $msgn[$jmsg]);
       $fdelim=',';
  } else {
       file_put_contents($msgn[$jmsg], base64_decode(substr($msgv[$jmsg],strlen("data:image/png;base64,"))));
       //$pdf->Image(getcwd() . "/" . $msgn[$jmsg], 0.0, 0.0);
       $pdf->Image("http://www.rjmprogramming.com.au/PHP/" . $msgn[$jmsg], 0.0, 0.0);
       $flist.=($msgn[$jmsg]);
       $fdelim=',';
  }
}
}
if (sizeof($msg) > $jmsg) {
$pdf->SetFont('Arial','',14);
if ($msg[$jmsg] != '') {
  $pdf->Write(5,$msg[$jmsg]);
} else if ($imsg == 0 && $att && $cnt > 0) {
  $pdf->Write(5,'This PDF contains ' . $cnt . ' attached file(s).');
} else if ($jmsg == (sizeof($msg) - $imsg) && $jmsg == $imsg && $att && $cnt > 0) {
  $pdf->Write(5,'This PDF contains ' . $cnt . ' attached file(s).');
}
} else if ($jmsg == (sizeof($msg) - $imsg) && $jmsg == $imsg && $att && $cnt > 0) {
  $pdf->Write(5,'This PDF contains ' . $cnt . ' attached file(s).');
}
}
$pdf->Output();
if ($flist != '') {
  $fs=explode($fdelim, $flist);
  for ($ifs=0; $ifs<sizeof($fs); $ifs++) {
    unlink($fs[$ifs]);
  }
}
}
?>
