<?php
// bubble_sort_c.php
// Uses and compiles a user modified bubble_sort.c ... thanks to https://www.w3schools.com/dsa/trydsa.php?filename=demo_bubblesort

  $sorttype="bubble_sort";
  $selsorttype="bubble_sort";
  
  $ccont="";
  $lastresult="";

  if (isset($_POST['mysort'])) {
    $sorttype=str_replace('+',' ',urldecode($_POST['mysort']));
    $ccont=file_get_contents('./' . $sorttype . '.c');
  } else if (isset($_GET['mysort'])) {
    $sorttype=str_replace('+',' ',urldecode($_GET['mysort']));
    $ccont=file_get_contents('./' . $sorttype . '.c');
  } else {
    $ccont=file_get_contents('./bubble_sort.c');
  }
  
  foreach (glob('*_sort.c') as $filename) {
    if (strpos(basename($filename), 'new_') === false) {
    if ($selsorttype == "bubble_sort") {
       $selsorttype="<select onchange=\"location.href='./bubble_sort_c.php?mysort=' + this.value;\" style=display:inline-block; name=\"mysort\" id=\"mysort\"><option value='" . explode('.',basename($filename))[0] . "'>" . explode('.',basename($filename))[0] . "</option></select>";
    } else if (basename($filename) == ($sorttype . ".c")) {
       $selsorttype=str_replace(" id=\"mysort\">", " id=\"mysort\">" . "<option value='" . explode('.',basename($filename))[0] . "'>" . explode('.',basename($filename))[0] . "</option>", $selsorttype);
    } else {
       $selsorttype=str_replace("</select>", "<option value='" . explode('.',basename($filename))[0] . "'>" . explode('.',basename($filename))[0] . "</option></select>", $selsorttype);
    }
    }
  }

  $prefix=explode(' = {', $ccont)[0] . ' = {';
  $midbit=explode('"',explode("'",explode('}', explode($prefix, $ccont)[1])[0])[0])[0];
  $suffix=explode($prefix . $midbit, $ccont)[1];
  
  $altmidbit=$midbit;

  $httpis=" http";
  $endaf="youllveverfindthis";
  $endat="youllveverfindthis";
  $hbits=explode(' http', $prefix);
  if (sizeof($hbits) > 1) {
    $endaf=' http' . explode(' ', $hbits[1])[0];
    $endat=' http' . explode(' ', $hbits[1])[0] . '</a>';
    $httpis=$endaf;
  }
  
  if (isset($_POST['myarr'])) {
     $altmidbit=str_replace('   ',' + ',str_replace('+',' ',urldecode($_POST['myarr'])));
     file_put_contents('new_' . $sorttype . '.c', $prefix . explode('"',explode("'",$altmidbit)[0])[0] . $suffix);
     exec('gcc new_' . $sorttype . '.c -o ' . $sorttype);
     $lastresult='$ gcc new_' . $sorttype . '.c -o ' . $sorttype . ' <br>$ ./' . $sorttype . '<br>';
     $lastresult.=shell_exec('./' . $sorttype);
     $midbit=$altmidbit;
  } else if (isset($_GET['myarr'])) {
     $altmidbit=str_replace('   ',' + ',str_replace('+',' ',urldecode($_GET['myarr'])));
     file_put_contents('new_' . $sorttype . '.c', $prefix . explode('"',explode("'",$altmidbit)[0])[0] . $suffix);
     exec('gcc new_' . $sorttype . '.c -o ' . $sorttype);
     $lastresult='$ gcc new_' . $sorttype . '.c -o ' . $sorttype . ' <br>$ ./' . $sorttype . '<br>';
     $lastresult.=shell_exec('./' . $sorttype);
     $midbit=$altmidbit;
  }
  
  echo "<html>
<head>
<title>Numerical Sort Recompiles bubble_sort.c - RJM Programming - November, 2024 ... thanks to https://www.w3schools.com/dsa/trydsa.php?filename=demo_bubblesort</title>
<scr" . "ipt type=text/javascript>
  var retval=false;
</scr" . "ipt>
</head>
<body onload=\"setTimeout(function(){ document.getElementById('myarr').focus(); }, 3000);\">
<form onsubmit='return retval;' method=POST action=./bubble_sort_c.php>
<h1>Numerical Sort Recompiles " . $selsorttype . ".c</h1>
<h3>RJM Programming - November, 2024</h3>
<table style=width:99%;>
<tr><td style=background-color:lightblue;>
<span id=sprefix>" . str_replace($httpis," Thanks to <a onclick=\"window.open(this.innerHTML,'_blank','top=100,left=100,width=700,height=700');\" style=cursor:pointer;text-decoration:underline;>" . trim($httpis), str_replace($endaf, $endat, str_replace("\n", "<br>", str_replace('>','&gt;',str_replace('<','&lt;',$prefix))))) . "</span><textarea onkeydown='retval=true;' onblur=\"document.getElementById('mysub').click();\" name=myarr id=myarr style=display:inline-block;background-color:pink; rows=1 cols=" . (2 + strlen($midbit)) . " value=\"" . $midbit . "\">" . $midbit . "</textarea><span id=ssuffix>" . str_replace("\n", "<br>", str_replace('>','&gt;',str_replace('<','&lt;',$suffix))) . "</span>
<input type=submit id=mysub value=Submit style=display:none;></input>
</td><td style=vertical-align:top;><div id=result style=background-color:yellow;>" . $lastresult . "</div><br></tr></table>
</form>
</body>
</html>";

?>
