<?php
// nswstuff.php
// NSW Legislation Reports
// RJM Programming
// February, 2019
//  | grep '<a href="/~/view/' | grep -v 'Whole title'
 set_time_limit(6000); 
 if (isset($argv)) { // command line
  $numargs = sizeof($argv);
  if ($numargs > 1) {
   $gxml=$argv[1];
   if (strpos($gxml, "http") !== false) {
   $restl=file_get_contents(str_replace('https','http',$gxml));
   } else {
   $restl=file_get_contents("http://www.legislation.nsw.gov.au/~/search/inForceActsRegsEPIs/repealedActsRegsEPIs/customquery=FirstValidDate=" . $gxml . "&advanced=Search");
   }
   echo $restl;
   exit;
  }
 } else if (isset($_GET['syear']) && isset($_GET['smonth']) && isset($_GET['sday']) && isset($_GET['eyear']) && isset($_GET['emonth']) && isset($_GET['eday'])) {
   $html="<!doctype html><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body><p>NSW Legislation Search via FirstValidDate<br> ";
   $isly=28;
   if (($_GET['syear'] % 4) == 0) { $isly=29;  }
   $thisyear=$_GET['syear'];
   $maxes=[-1,31,$isly,31,30,31,30,31,31,30,31,30,31];
   $sdate=$_GET['syear'] * 10000;
   $sdate+=$_GET['smonth'] * 100;
   $sdate+=$_GET['sday'];
   $thisdate=$sdate;
   $edate=$_GET['eyear'] * 10000;
   $edate+=$_GET['emonth'] * 100;
   $edate+=$_GET['eday'];
   if ($sdate <= $edate) {
   while ($thisdate <= $edate) {
     $thisday=($thisdate % 100);
     $thismonth=((($thisdate - $thisday) / 100) % 100);
     $gm=substr(("0" . $thismonth), strlen(("0" . $thismonth)) - 2);
     $gd=substr(("0" . $thisday), strlen(("0" . $thisday)) - 2);
     $url="http://www.legislation.nsw.gov.au/~/search/inForceActsRegsEPIs/repealedActsRegsEPIs/customquery=FirstValidDate=" . $thisyear . "-" . $gm . "-" . $gd . "&advanced=Search";
     $found=2;
     $nexturl="https://www.legislation.nsw.gov.au/~/search/inForceActsRegsEPIs/repealedActsRegsEPIs/advanced=Search&customquery=FirstValidDate%3D" . $thisyear . "-" . $gm . "-" . $gd . "/page" . $found;
     //file_put_contents("up.to", $url);
     $html.=$url . "<br>";
     while ($found > 0) {
     $found=-$found;
     $restl=@file_get_contents($url);
     $bits=explode('<a href="/~/view/', $restl);
     //file_put_contents("up.to", $url . " ... " . sizeof($bits));
     for ($i=1; $i<sizeof($bits); $i++) {
       $pline='<a target="_blank" href="https://www.legislation.nsw.gov.au/~/view/' . explode("</a>", $bits[$i])[0] . "</a>";
       if (strpos($pline, ">Whole title<") === false && strpos($pline, ">Search title<") === false && strpos($pline, ">Hits list<") === false) {
         $html.=$pline . "<br>";
         $found=abs($found);
       }
     }
       if ($found > 0) {
       $url=$nexturl;
       $found++;  // /inForceActsRegsEPIs/repealedActsRegsEPIs/repealedActsRegsEPIs/
       $nexturl="https://www.legislation.nsw.gov.au/~/search/inForceActsRegsEPIs/repealedActsRegsEPIs/advanced=Search&customquery=FirstValidDate%3D" . $thisyear . "-" . $gm . "-" . $gd . "/page" . $found;
       }
     }
     if ($thisday >= $maxes[$thismonth]) {
       if ($thismonth == 12) {
         $thisyear++;
         $thismonth=1;
         $thisday=1;
         $thisdate=$thisyear * 10000;
         $thisdate+=$thismonth * 100;
         $thisdate+=$thisday;
         $isly=28;
         if (($_GET['syear'] % 4) == 0) { $isly=29;  }
         $maxes[2]=$isly;
       } else {
         $thismonth++;
         $thisday=1;
         $thisdate=$thisyear * 10000;
         $thisdate+=$thismonth * 100;
         $thisdate+=$thisday;
       }
     } else {
       $thisday++;
       $thisdate++;
     } 
   }
   }
   $html.="</p></body></html>";
   echo $html;
 } else if (isset($_GET['adate'])) {
   $gxml=urldecode(str_replace("+"," ",$_GET['adate']));
   if (strpos($gxml, "http") !== false) {
   $restl=file_get_contents(str_replace('https','http',$gxml));
   } else {
   $restl=file_get_contents("http://www.legislation.nsw.gov.au/~/search/inForceActsRegsEPIs/repealedActsRegsEPIs/customquery=FirstValidDate=" . $gxml . "&advanced=Search");
   }
   echo $restl;
   exit;
 } else {
   $gm=substr(("0" . gmdate('m')), strlen(("0" . gmdate('m'))) - 2);
   $gd=substr(("0" . gmdate('d')), strlen(("0" . gmdate('d'))) - 2);
   $html="<!doctype html><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body><h1>NSW Legislation Search via FirstValidDate<br><form action=./nswstuff.php method=GET> Start Date <input type=number min=2015 max=" . gmdate('Y') . " value=" . gmdate('Y') . " step=1 name=syear></input>-";
   $html.="<select name=smonth><option value='01'>01</option><option value='02'>02</option><option value='03'>03</option><option value='04'>04</option><option value='05'>05</option><option value='06'>06</option><option value='07'>07</option><option value='08'>08</option><option value='09'>09</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option></select>-";
   $html.="<select name=sday><option value='01'>01</option><option value='02'>02</option><option value='03'>03</option><option value='04'>04</option><option value='05'>05</option><option value='06'>06</option><option value='07'>07</option><option value='08'>08</option><option value='09'>09</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option><option value='13'>13</option><option value='14'>14</option><option value='15'>15</option><option value='16'>16</option><option value='17'>17</option><option value='18'>18</option><option value='19'>19</option><option value='20'>20</option><option value='21'>21</option><option value='22'>22</option><option value='23'>23</option><option value='24'>24</option><option value='25'>25</option><option value='26'>26</option><option value='27'>27</option><option value='28'>28</option><option value='29'>29</option><option value='30'>30</option><option value='31'>31</option></select>&nbsp;<br>";
   $html.=" End Date <input type=number min=2015 max=" . gmdate('Y') . " value=" . gmdate('Y') . " step=1 name=eyear></input>-";
   $html.="<select name=emonth><option value='" . $gm . "'>" . $gm . "</option><option value='01'>01</option><option value='02'>02</option><option value='03'>03</option><option value='04'>04</option><option value='05'>05</option><option value='06'>06</option><option value='07'>07</option><option value='08'>08</option><option value='09'>09</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option></select>-";
   $html.="<select name=eday><option value='" . $gd . "'>" . $gd . "</option><option value='01'>01</option><option value='02'>02</option><option value='03'>03</option><option value='04'>04</option><option value='05'>05</option><option value='06'>06</option><option value='07'>07</option><option value='08'>08</option><option value='09'>09</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option><option value='13'>13</option><option value='14'>14</option><option value='15'>15</option><option value='16'>16</option><option value='17'>17</option><option value='18'>18</option><option value='19'>19</option><option value='20'>20</option><option value='21'>21</option><option value='22'>22</option><option value='23'>23</option><option value='24'>24</option><option value='25'>25</option><option value='26'>26</option><option value='27'>27</option><option value='28'>28</option><option value='29'>29</option><option value='30'>30</option><option value='31'>31</option></select>&nbsp;";
   $html.="<input type=submit value=Report></input></form></h1></body></html>";
   echo $html;
 }
?>
