RADICORE v2.37.0 released

This version includes some minor bug fixes, plus some changes to enable headless APIs.

This version contains the following changes:

Database changes:

- none

Other changes:

  • updated mnu_task.class.inc to replace nested IFs when checking user’s access.
  • updated mnu_task.class.inc to remove ‘nodisplay’ option on task_name_quicknav field.
  • updated mnu_task_s02.class.inc to check for missing value in new_task_id.
  • updated logon.class.inc to include check for missing screen structure file.
  • updated std.table.class.inc so that sqlSelectInit() method will set $this->pageno to 1 and, if $scrolling is active for the current class, will set ‘curitem’ to 1.
  • updated include.session.inc for the following:
    • update order in which session_name and session_id are obtained, using $_COOKIE first and $_REQUEST second.
    • updated scriptRestart() to only call method_exists() before calling $object->commit();
  • move function adjustQueryString() from include.library.inc to include.session.inc.
  • updated numerous controller scripts in INCLUDES folder to ensure variable $messages is an array before using it in array_merge().
  • updated numerous controller scripts in INCLUDES folder to replace deprecated (double) to (float).
  • updated std.output4.inc to output CSV file directly instead of via the previous script.
  • updated std.validation.class.inc so that if field being validated has ‘optionlist’ set in its fieldspecs then the current value must be an entry in that list.

The following changes were made to support the headless API:

  • updated std.table.class.inc so that $this->array_update_associative() method calls $this->removeNoeditFields() to remove any fields in the $_POST array which are either not displayed in the screen or marked as NOEDIT.
  • updated std.table.class.inc so that $this->updateFieldArray() - which is called because of a javascript SUBMIT - will generate an error when called via a headless API.
  • updated mnu_menu.class.inc to insert all permisible tasks into $menu_buttons instead of just those for the current menu when being run in headless mode.
  • updated include.session.inc so that childform() function does the following:
    • calls findCustomButtons() function to obtain a list of custom buttons which may appear in the current screen.
    • will reject any task which was not listed as an option on either a navigation, custom or favourite button.
  • updated include.session.inc so that getNewSession() function will generate a name with ‘API’ as its prefix instead of ‘menu’ so that it does not conflict with headful sessions.
  • updated include.session.inc so that initSession() function performs the following:
    • if in headless mode and $_SERVER[‘REQUEST_METHOD’] == ‘POST’ then read JSON string from raw post data, convert it into an array and load it into $_POST variable.
    • if current task is not a menu then unset $script_vars[‘menu_buttons’].
    • if current task does not have an entry in $_SESSION[‘pages’] then report this as an error as it is not a valid selection.
    • if current task_id <> ‘logon’ then populate $nav_buttons with all navigation buttons for this task.
    • remove any setting for ‘initial_passthru’.
  • updated include.library.inc to include is_Headless_API() function.
  • updated include.xml.php5.inc to output current script variables as JSON instead of HTML.

Published: 03 November 2026