<?php
// mailto.php
// RJM Programming
// October, 2018

ini_set('max_execution_time', 6000);
set_time_limit(6000);


function server_remote_addr() {
    $rma = $_SERVER['REMOTE_ADDR'];
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    // you can add different browsers with the same way ..
    if (1 == 2) {
    if(preg_match('/(chromium)[ \/]([\w.]+)/', $ua))
            $rma = '000000'.$rma;
    elseif(preg_match('/(chrome)[ \/]([\w.]+)/', $ua))
            $rma = '00000'.$rma;
    elseif(preg_match('/(safari)[ \/]([\w.]+)/', $ua))
            $rma = '0000'.$rma;
    elseif(preg_match('/(opera)[ \/]([\w.]+)/', $ua))
            $rma = '000'.$rma;
    elseif(preg_match('/(msie)[ \/]([\w.]+)/', $ua))
            $rma = '00'.$rma;
    elseif(preg_match('/(mozilla)[ \/]([\w.]+)/', $ua))
            $rma = '0'.$rma;
    }
    return str_replace(".","_",str_replace(":","_",$rma));
}

$nexti=1;
$nextcheck="filename" . $nexti;
$atend=false;
$content="";
$medias=["image","audio","video"];
$imedias=0;
$jmedias=1;
$okmedias=[true,true,true];
$pzip="";
if (isset($_POST['zipname'])) {
 if (isset($_POST['of'])) {
      $pzip=str_replace("+"," ",urldecode($_POST['zipname']));
      if (strpos($pzip, ("_" . server_remote_addr() . ".")) === false) {
        $pzip=str_replace(".", "_" . server_remote_addr() . ".", $pzip);
      }
 }
}

if ((!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name'])) && (!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name'])) && (!file_exists($_FILES['video']['tmp_name']) || !is_uploaded_file($_FILES['video']['tmp_name']))) {
      if (1 == 2) { file_put_contents('qpm.qpm','No upload'); }
      //echo '<html><body onload=" alert(' . "'" . 'No upload' . "'" . '); if (top.document.getElementById(' . "'" . 'demail' . "'" . ')) {   top.document.getElementById(' . "'" . 'demail' . "'" . ').innerHTML=' . "'" . 'No upload' . "';  } " . '"></body></html>';
} else if (isset($_POST['zipname']) && isset($_POST['of']) && !isset($_POST['to'])) {
        
        if ((!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name']))) {
          $okmedias[$imedias] = false;
          $imedias++;
          if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
            $okmedias[$imedias] = false;
            $imedias++;
          }
        } else if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
          $okmedias[$jmedias] = false;
          $jmedias++;
          if ((!file_exists($_FILES['video']['tmp_name']) || !is_uploaded_file($_FILES['video']['tmp_name']))) {
           $okmedias[$jmedias] = false;
           $jmedias++;
          }
        }
        
      if (strpos("~" . str_replace("+"," ",urldecode($_POST['of'])), "~0of") !== false) {
        if (file_exists(dirname(__FILE__) . "/uploads/" . $pzip)) {
          unlink(dirname(__FILE__) . "/uploads/" . $pzip);
        }
            file_put_contents(dirname(__FILE__) . "/uploads/" . $pzip . "_xx", "");
            $fni=dirname(__FILE__) . "/uploads/" . str_replace("+", " ", urldecode($_POST['filename']));
            move_uploaded_file($_FILES[$medias[$imedias]]['tmp_name'], $fni);
            exec("zip -j " . dirname(__FILE__) . "/uploads/" . $pzip . " " . $fni . "; rm -f " . dirname(__FILE__) . "/uploads/" . $pzip . "_xx; rm -f " . $fni);
      } else {
            if (file_exists(dirname(__FILE__) . "/uploads/" . $pzip)) {
            sleep(1);
            while (file_exists(dirname(__FILE__) . "/uploads/" . $pzip . "_xx")) {
                 sleep(5);
            }
            }
            file_put_contents(dirname(__FILE__) . "/uploads/" . $pzip . "_xx", "");
            $fni=dirname(__FILE__) . "/uploads/" . str_replace("+", " ", urldecode($_POST['filename']));
            move_uploaded_file($_FILES[$medias[$imedias]]['tmp_name'], $fni);
            exec("zip -j " . dirname(__FILE__) . "/uploads/" . $pzip . " " . $fni . "; rm -f " . dirname(__FILE__) . "/uploads/" . $pzip . "_xx; rm -f " . $fni);
      }        
      exit;
} else if (isset($_POST['to']) && isset($_POST['subject']) && isset($_POST['filename'])) {
      sleep(1);
      if (strpos(urldecode($_POST['to']), "@") !== false) {
        if (1 == 2) { file_put_contents('qpm.qpm',urldecode($_POST['to'])); }
        
        if ((!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name']))) {
          $okmedias[$imedias] = false;
          $imedias++;
          if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
            $okmedias[$imedias] = false;
            $imedias++;
          }
        } else if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
          $okmedias[$jmedias] = false;
          $jmedias++;
          if ((!file_exists($_FILES['video']['tmp_name']) || !is_uploaded_file($_FILES['video']['tmp_name']))) {
           $okmedias[$jmedias] = false;
           $jmedias++;
          }
        }
        
        for ($jmedias=$imedias; $jmedias<sizeof($medias); $jmedias++) {

        if ($okmedias[$jmedias]) {

        //if ($jmedias == $imedias) {
        
        $to = urldecode($_POST['to']);
        $subject = str_replace("+", " ", urldecode($_POST['subject']));
        $body = file_get_contents($_FILES[$medias[$jmedias]]['tmp_name']);
        $eol = PHP_EOL;
        $headers = 'From: ' . 'rmetcalfe@rjmprogramming.com.au' . $eol;
        $headers .= 'Reply-To: ' . 'rmetcalfe@rjmprogramming.com.au' . $eol;

        if (isset($_POST['zipname'])) {
            if ($pzip != "") {
            if (file_exists(dirname(__FILE__) . "/uploads/" . $pzip)) {
            sleep(1);
            while (file_exists(dirname(__FILE__) . "/uploads/" . $pzip . "_xx")) {
                 sleep(7);
            }
            }
            $filename=$pzip;
            } else {
            $filename=str_replace("+", " ", urldecode($_POST['zipname'])); //str_replace("quicktime", "mp4", str_replace("/", ".", str_replace("data:", "", $fname[0])));
            $ii=0;
            while (file_exists(dirname(__FILE__) . "/uploads/" . $filename) && strpos($filename, ".") !== false) {
              $filename=str_replace(".", "" . $ii . ".", $filename);
              $ii++;
            }
            }
            $zip = new ZipArchive();

            //file_put_contents(dirname(__FILE__) . "/uploads/" . $filename, "");
            //touch(dirname(__FILE__) . "/uploads/" . $filename); 
            if (1 == 2) {
            $zip->open(dirname(__FILE__) . "/uploads/" . $filename, ZipArchive::CREATE | ZipArchive::OVERWRITE); // !== TRUE) {
            }
            //    file_put_contents("aap.aap", "cannot open " . dirname(__FILE__) . "/" . $filename . "\n");
           // } else {
            //    file_put_contents("aap.bap", "can open ");
          //  }

            $fn=dirname(__FILE__) . "/" . str_replace("+", " ", urldecode($_POST['filename']));
            $fni=dirname(__FILE__) . "/uploads/" . str_replace("+", " ", urldecode($_POST['filename']));
            $ii=0;
            while (file_exists($fn)) {
              $fn=str_replace(".", "" . $ii . ".", $fn);
              $ii++;
            }
            move_uploaded_file($_FILES[$medias[$jmedias]]['tmp_name'], $fni);
            if (1 == 1) {
            exec("zip -j " . dirname(__FILE__) . "/uploads/" . $filename . " " . $fni . "; rm -f " . $fni);
            } else {
            copy($fni, $fn); 
            if (file_exists($fni)) {  unlink($fni);   }    
            $zip->addFile($fn, "" . explode("/", $fn)[-1 + sizeof(explode("/", $fn))]);
            if (file_exists($fn)) {  unlink($fn);  }
            }

            while (isset($_POST['filename' . $nexti])) {
               
            $fn=dirname(__FILE__) . "/" . str_replace("+", " ", urldecode($_POST['filename' . $nexti]));
            $fni=dirname(__FILE__) . "/uploads/" . str_replace("+", " ", urldecode($_POST['filename' . $nexti]));
            $ii=0;
            while (file_exists($fn)) {
              $fn=str_replace(".", "" . $ii . ".", $fn);
              $ii++;
            }
            move_uploaded_file($_FILES[$medias[$jmedias] . $nexti]['tmp_name'], $fni);        
            if (1 == 1) {
            exec("zip -j " . dirname(__FILE__) . "/uploads/" . $filename . " " . $fni . "; rm -f " . $fni);
            } else {
            copy($fni, $fn); 
            if (file_exists($fni)) {  unlink($fni);   }    
            $zip->addFile($fn, "" . explode("/", $fn)[-1 + sizeof(explode("/", $fn))]);
            if (file_exists($fn)) {  unlink($fn);  }
            }
            $nexti++;
            }

            if (1 == 2) {
            $zip->close();
            }
            $content = chunk_split(base64_encode(file_get_contents(dirname(__FILE__) . "/uploads/" . $filename)));
            unlink(dirname(__FILE__) . "/uploads/" . $filename);
        } else {
            unlink($_FILES[$medias[$jmedias]]['tmp_name']);
            $filename=str_replace("+", " ", urldecode($_POST['filename'])); //str_replace("quicktime", "mp4", str_replace("/", ".", str_replace("data:", "", $fname[0])));
        }
        
        //}

        while (!$atend) {
        if ($content == "") { $content = chunk_split(base64_encode($body)); }
        //$uid = md5(uniqid(time()));

        // a random hash will be necessary to send mixed content
        $separator = md5(time());

        $headers .= "MIME-Version: 1.0" . $eol;
        $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol . $eol;
        $headers .= "Content-Transfer-Encoding: 7bit" . $eol;
        $headers .= "This is a MIME encoded message." . $eol . $eol;

        // message
        $headers .= "--" . $separator . $eol;
        $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol;
        $headers .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;

        $headers .= "Please see attachment below:" . $eol . $eol;

        // attachment
        $headers .= "--" . $separator . $eol;
        $headers .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol;
        $headers .= "Content-Transfer-Encoding: base64" . $eol;
        $headers .= "Content-Disposition: attachment;filename=\"" . $filename . "\"" . $eol;
        $headers .= $content . $eol . $eol;

        if (isset($_POST['filename' . $nexti])) {
        $headers .= "--" . $separator . $eol;
        $body = file_get_contents($_FILES[$medias[$jmedias] . $nexti]['tmp_name']);
        $filename=str_replace("+", " ", urldecode($_POST['filename' . $nexti])); //str_replace("quicktime", "mp4", str_replace("/", ".", str_replace("data:", "", $fname[0])));
        unlink($_FILES[$medias[$jmedias] . $nexti]['tmp_name']);
        $content="";
        $nexti++;
        } else {
        $headers .= "--" . $separator . "--";
        $atend=true;
        //mail($to, $subject, "", $headers);
        }
        }
        
        }
        }
        mail($to, $subject, "", $headers);

        if (1 == 2) { file_put_contents('qpm.qpm',urldecode($_POST['to']) . ' ' . urldecode($_POST['subject'])); }

        //echo '<html><body onload=" alert(' . "'Emailed to " . $to . " an email with subject " . $subject . "'" . ');  if (top.document.getElementById(' . "'" . 'demail' . "'" . ')) {   top.document.getElementById(' . "'" . 'demail' . "'" . ').innerHTML=' . "'Emailed to " . $to . " an email with subject " . $subject . "';  } " . '"></body></html>';
      } else {
        if (1 == 2) { file_put_contents('qpm.qpm','yes!'); }
      }
} else {  // Your file has been uploaded ... but we do nothing
      if (1 == 2) { file_put_contents('qpm.qpm','yes'); }
        
        if ((!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name']))) {
          $okmedias[$imedias] = false;
          $imedias++;
          if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
            $okmedias[$imedias] = false;
            $imedias++;
          }
        } else if ((!file_exists($_FILES['audio']['tmp_name']) || !is_uploaded_file($_FILES['audio']['tmp_name']))) {
          $okmedias[$jmedias] = false;
          $jmedias++;
          if ((!file_exists($_FILES['video']['tmp_name']) || !is_uploaded_file($_FILES['video']['tmp_name']))) {
           $okmedias[$jmedias] = false;
           $jmedias++;
          }
        }
        
        for ($jmedias=$imedias; $jmedias<sizeof($medias); $jmedias++) {

        if ($okmedias[$jmedias]) {

      unlink($_FILES[$medias[$jmedias]]['tmp_name']);
        }
        }
        
      //echo '<html><body onload=" alert(' . "'" . 'Upload can work but we did not save' . "'" . ');    if (top.document.getElementById(' . "'" . 'demail' . "'" . ')) {   top.document.getElementById(' . "'" . 'demail' . "'" . ').innerHTML=' . "'" . 'Upload can work but we did not save' . "';  } " . '"></body></html>';
}

?>

