Nicely done.
For those of us who don't like the error_log filling up:
Add:
$_GET['action'] = isset($_GET['action']) && is_string($_GET['action']) ? strtolower(trim($_GET['action'])) : null;
above (line 7):
switch($_GET['action'])
Add:
$_POST['step'] = isset($_POST['step']) && is_numeric($_POST['step']) && in_array($_POST['step'], array(0, 1, 2)) ? abs(@intval($_POST['step'])) : null;
above (line 106):
switch($_POST['step'])
Change (line 210):
if($_POST['course'])
to:
if(isset($_POST['course']))
There are multiple other things that may throw errors, but you can tackle those yourself ;)
Great mod illusions, nicely done :)