Release Notes


General Framework Update
Version: 27.0

29.04.2026

  • Added fire_popupmessage parameter in KCommon.removeAjaxUploadedFile to allow hiding of error & success message
  • Fixing Showing & hiding of the Yes / No field when using the Hide if / Hide if Not function.
  • Added searchable option for checkbox and supporting JS KCommon function loadSearchableResults added support for YesNo hideif & hideifnot and supporting JS KCommon function toggleYesNoHideConditions
  • Added collection_validation_field & collection_validation_mode fields in routine-helper/configuration/field-workflow-collection-conditional-requirements.php allowed removal of option and still get all parameters when calling urlPath
  • Fixed radio button callbacks and added entry mode in field-workflow-collection-conditional-requirements.php
  • Added more file extensions on KFile::isAudio 'ogg','oga','aac','m4a','weba','webm','flac','opus'
  • Added kfw-stf and kfw-caf for output storage file and cache file to browser
  • Added key identifier for multilist block
  • Added an array check on value data is_array($value['data']) in createPDF function
  • Introduced status MEDIATED on the framework KStatus
  • Fixing max length for cordinates.
  • added getFileUploadLimitArray to the KCommon
  • Fixing semi donut chart output discrepancy.
  • Added count field support in KConverter arrayToSql updated the KDatabase getCheckNullsExpression to have "field is null or filed = '' or field = 0" fix KSystemData getList no field list to set the core.*
  • Fixed KDatabase execute error on quote function when array is used
  • Fixed KDatabase getList like for like where statement with double AND
  • Added support for like binding with array support
  • Removed input type number maxlength handling
  • Added EMAIL_TAG_SIGNATURE and SMS_TAG_SIGNATURE in the KGateway
  • Added minlength in i18nMobile KConfiguration
  • Added a Security method to handle direct reset in forgot password: processForgotPasswordByDirectReset
  • Fixed the hideif/not js and added registry full load on KGateway
  • Added disabled for the hideif/not in js and getFormElement
  • Fixing the feed to & feed from to prevent fields from always being populated.
  • Added kfw-copy-to-clipboard support for div: data to copy added feedToExtraParams in KConfiguration added getCurrentField in KConfiguration added ITEM_FIELD_PROPERTY_FEED_TO_EXTRAPARAMS in KSystemManager
  • Fixed hideifnot fields
  • Added extra_attributes param in KResponse trace method added arrFormAvailableData getFieldDefaultValue consideration for hideif/not and readonlyif/not
  • Fixed the getFriendlyDate and getFriendlyDateTime to not use UTC on date not provided
  • Added action title for button label overwrite on reused modules KConverter::whereExactClause added to convert array('status_id' => 'KStatus::ACTIVE') to array('status_id' => 1), which also support array('customer_id' => 'KSecurity::getCustomerID())

General Framework Update
Version: 26.0

23.02.2026

  • Added a filter by null or empty field in the where statement on KDatabase and added the 4th is null check mode 4
  • fixed issue with childarray field types used in multiple and checkbox fields runtime->getViewItemsFromLoadedData() fixed field_required_if issues when field should be submitted with any type of data
  • fixed getValueByChildInfo to consider multi select / checkbox on child array data source
  • fixed hideif/not and readonlyif/not
  • fixed hideif hideifnot
  • fixed the childdatabase where clause and added feedtocollection support
  • Added case KStatus::REFERRED and case KStatus::DEFERRED on the getStatusListColumn of the runtime
  • added referred and deferred status
  • updated the runtime performDrillDownManipulation updated routine-helper field for feedTo
  • Added getUtm method in KCommon JS Fixed home button setting
  • added home button support in registry and KetrouteApplication HOME_BUTTON_PANEL HOME_BUTTON_PORTAL OPTIONS: ICONANDTEXT|ICONANDTEXT=Icon and Text,ICONONLY=Icon Only,TEXTONLY=Text Only,NONE=Hide Home button
  • updated routing helpers, fixed runtime applyFieldFormat on email, added comments on broadcastFormErrors
  • Updated KPDF logo load to point to assets/logos directory
  • added form routine helper for multi-list added convertToMultiList in KConfiguration and KSystemManager added addItemToConvertToMultiList in ketroute.js
  • Adding configuration for central records.
  • Updating Map charts to configure the information to be shown.
  • Update the language of the GPS tips.
  • Updating language "Get Coordinates" -> "Get GPS Coordinates"
  • Added service restrictions under user manager
  • Added disclaimer session data check on hideif/not validation
  • Added EDV validation in form validations
  • Added broadcastSqlError in KException
  • Added in-complete status lang tag fix runtime custom data from default value removed dead code in collection-fields.php: $objAIAssistComponent
  • Added $show_child_linked_value param in linkTable::Configuration - to show or hide the child value added $fields_mirror param in saveToTable KConfiguration added dotted border on themes list on switch theme window KetrouteApplication
  • Updated KDate to consider Timezone on getFriendlyDate and getFriendlyDateTime
  • Added billing-fields and master-record-schema language tags to the language file
  • added CACHE_CONTROL_DATE registry for cache-busting and cache control in frontend assets.
  • Adding functionality to generate Map charts.
  • fixed required if and required ifnot behaviour
  • Moved gps coordinate form callback within the main field
  • Added 'none' to the parent table in the collections fields, master record and transaction-fields.php
  • Added handling of enforced linked application added field_enforce_linked_application into the routine-helper/configuration/field.php added field_enforce_linked_application into the routine-helper/configuration/field-workflow-conditional-req...
  • Added LOCATION_RESTRICTION_REGION_START registry check for location restrictions starting with Region which is location_restriction0. This is done in the location-restriction.php
  • Added $start_counter_at_zero in KConfiguration->sequentialSelect to allow the counter start number zero: if true tablename0 otherwise default to : tablename1a
  • Fixed array merge issues on SessionData during form global validation
  • Updated the system to recognise 0 a value for validation
  • Added field conditional requiremenst setup and handlers
  • Added field mapping for feedFrom feedTo in transaction-fields.php routine helper
  • Added getDashboardDatasourceTableFields in KCommon
  • Removed automated fields from KCommon getCommunicationDatasourceTableFields
  • Added language tags: workflow-verify-decision-correct, and workflow-verify-decision-incorrect on the core language file
  • Added language tags: workflow-fieldname, workflow-fielddata, and workflow-comment on the core language file
  • Removed break tag in ajax upload when label is hidden
  • Removed a curly brace on line 20 of master-records.php routine helper
  • Added moveToNextNavigationTab in KCommon added eservice name in eserviceBusinessRules
  • Changed master-records.php and collection-fields.php in the struct routine helper to build a master record select based on the new structure in eservices
  • Change the master records on the routine helper configuration, master record metadata from being unserialized to being json decoded
  • Updsated KSecurity.getEservices added eserviceBusinessRules method in KSecurity
  • Added getEservices in KSecurity added eservices parameter in KPermission buildPermissions added eserviceBusinessRules in KetrouteApplication
  • Fixed data entry for KDatabase getDatabaseTableFields
  • Fixed js for: kfw-apply-roif-flag kfw-apply-roifnot-flag kfw-apply-hideif-flag kfw-apply-hideifnot-flag]
  • Added get component code: $this->getComponentCode(); KetrouteApplication::instance()->getComponentCode();
  • Added getDatabaseTableFields in KCommon added checks for empty fixed not-verified translation
  • Updated transaction-fields.php configuration routine-helper
  • Updated routine-helper/configuration/master-records.php on in the entire file, removed the double dollar sign
  • Updated routine-helper/configuration/master-records.php on line 207, removed the double dollar sign
  • Fixed KFile warning and on KSystemManager.php

Support for Theme Manager
Version: 25.0

27.03.2025

  • Adding theme manager support implementation on Extra tabs.
  • Adding theme manager support implementation on Extra tabs.
  • Updating & optimizing theme implementation
  • Implementing the function getUiThemeInUse in order to get the theme_code for the theme in use.
  • Added a check for KFW_THEME_MANAGER in support of themes
  • Added databaseExists in KDatabase
  • Move getDatabaseTableFields & getDatabaseTables from static call in KCommon to object call KDatabase
  • Added theme param in KCommon.showThemeIconUnderSelect call
  • Added getPrettyItemList method in KFormat for list of checked items
  • Updated default SSN and code read in KSystem
  • Added messaging language tag to global lang
  • Updated KDate getI18nMonthsArray method to stop using strftime due to the deprecation and started using DateTime
  • Added isPostVariableBySuffixMatchingValue in KValidate
  • Updated KGUI widget width calculation
  • Added support for other algorithm(sha256, sha512, blake2b) for MFA, PASSWORD History, USER_PASSCODE, Cookie key, Session key
  • Removing redundant date intializing script from generateGanttChart function.
  • Adding Gantt chart to KChart.
  • fixed explode issie on line 714 on KPermission
  • Added throw exception with SQL and DATA when system is on DEV mode
  • Adding KChart to the framework for creating graphs.
  • Added rgbTohex conversion in KConverter
  • Fixed TOTP alternative checks
  • Updated the MFA TOTP limit rate
  • Added an implementation for MFA_ACCOUNT_DEFAULT_MFA_METHOD
  • Fixed ctype_digit warning on string - KValidate
  • KGenerator::createTabs - Added icon positioning for left tabs, and Added ajax flag
  • Added minutesBetweenTwoDates to KConverter
  • Added routine helpers for mfa: (account, system,interface,user-role)
  • Fixed owner issue on KGatewayA
  • Added trust-shield support for onsite framework implementation 
  • changed the select-helper trigger to support swal popup(kfw-winswal="yes"). This allow select-helpers to be used in a fancy box screens
  • Added KCommon.hideIFrameLoader for PDF viewer in an iframe
  • Updated FPDI-PDF-Parser to support PHP 8.4
  • Added support for checkbox enableSorting
  • Updated KSystemManager to support Heading Field group fields
  • Added MFA timeout is not valid and not over 30 minutes
  • Updated KConfiguration::heading method to support group_fields & force_single_group_access
  • Added KConfiguration::groupFields KConfiguration::forceSingleGroupAccess
  • Added executeDynamicRestfulWebserviceCall & executeCustomRestfulWebserviceCall
  • Added new language tags to handle metadata for AI Assist
  • Added isAlphanumericHyphen method in the KValidate
  • KSecurity bug fix in createAPICredentials for handling of autogen_session_key & restrict_to_same_origin
  • Updated the jsonToArrayStringExport method in the KFormat to allow for multidimensional array formatting
  • Added getDatabaseName in the KDatabase
  • Added getDatabaseTableFields & getDatabaseTables in the KCommon
  • Added storageMedia in KConfiguration
  • Added registerShutdownFunction for fatal error handling
  • Added jsonToArrayStringExport in the KFormat
  • Added list page group filter ignore on clicking funnel
  • Added executeRestfulService in KWebService to support dynamic service builds
  • Updated languages/en.xml and Added kfw-winswal option under kfwajax to support selectHelper function
  • Added  $type and $extra_data options in the KConfiguration::selectHelper
  • Added handling of theme_code to support assets/themes option
  • Added KCommon::getThemeIconsSelection to support working with new theme modules
  • Removed the PHPSpreadsheet.
  • Added getAccountID method in KSecurity
  • Added $database_object optional parameter in KSecurity::generateFrameworkBarcode

Application
Version: 24.0

24.07.2024

  • KCommon - fixed to support the new assets: Changes TAGS: site_dir to images_uri
  • Moved ketroute.js to js/framework.ketroute.js
  • added syntax-container.tpl
  • fix Trim deprecation issue on empty string
  • Added getViewItemsFromLoadedData to the delete and edit core modules
  • KSystemData - Added getFieldDataWrapCharacter getFieldDataElementSeparator for data storage to checkboxes and multiple selects
  • KGUI - added kgui_left_widgets_2 for the extra left widget that are independed of the main left widget that will now go to the bottom: usage: $this->ui()->appendLeftWidgets('data goes here', $bottom = true);
  • KGateway - added parent ID to support bulk messages
  • KetrouteApplication WebService call activity logging using registry:WEBSERVICE_ACTIVITY_LOGGING - data will be encrypted on production
  • KetrouteApplication WebService call activity logging by default in system mode: DEV, UAT & DEBUG - data will not be encrypted
  • Introduction of KWebServiceHandler to help with activity logging of soap calls before function routing
  • Debug support in RESTful service call by just adding parameter called debug with value 1
  • KSecurity - added a call: setWebserviceApiId during the  apiAuthentication & 
  • API Account - integration_code for routing web service call to an external service program/interface
  • KSystemManager encodeGroupedData & decodeGroupedData allow to use custom separators
  • added images-uri attribute to the base in application, in support of js/css/images migration to assets directory
  • Note: It is recommended to utilize $this->getComponentRealname() when referencing the component name. This practice ensures that if the component name changes in the future, you will not need to manually update your code.

Web Service & GUI
Version: 23.5

24.04.2024

  • syntaxFormattingFieldtype: KConfiguration.
  • getFilename: KFile enforce lowercase filename.
  • sendBulkSMS: KGateway support for parent_id field
  • KGUI: system-mode as a flag for UX/UI.
  • generateGroupFilters: KSYstemData Runtime fix on urldecode on null values
  • reuseModule: list module fix on urldecode on null values
  • KWebService: invoke enhancement & open API (swagger) raw data
  • generateFileEncryptionIv: KGenerator
  • arrayToSql: KConverter upgrade
  • createPdfKFile show numbers issue on new document format and issue with data indexing that pushed the last column data outside the render

PDF
Version: 23.3

21.04.2024

  • KFile - method createPdf updated an option to pass data as array
  • KPDF - moved document timestamp to the bottom by a few inches
  • KPDF - updated FancyRow to implement $style parameter
  • KSystemData - fixed group filter multiple where clause issue

Application
Version: 23.2

20.04.2024

  • added custom path for the saveAjaxCachedFile runtime function
  • added arrayToSql function in the KConvertor class
  • added runSql in the KDatabase class
  • Fixed issues with the joinTable: where the groupfilter was failing to feature on child table
  • Added support for heading field
  • Fixed get coordinates translation
  • added reuseModule: in the configurations that will now allow developers to reuse the list, add, delete, approve, reject in any of their modules
  • updated delete of linked table: To not delete the records when doing an update
  • fixed trim with the silencing of deprecation @trim
  • wallpaperComponent: Customizable login background
  • maintenancePlan: Application support for standalone design
  • restrictionIpAddress: Application enhancement
  • destroyDatabaseCredential: Database encryption of config in memory
  • StreamingKVideo: Header to serve the video content
  • isJsonString: Validation checks
  • getDivElement: System Manager view formatting
  • getValidationString: System Manager validation based on fields
  • cloneField: System Manager for reuse of field properties and structure
  • downloadFile: System Manager hook file FTP connect
  • loadedComponentConfiguration: System Manager for support with sub modules

Application
Version: 20.2

16.02.2023

  • reuseModule: enhancement on error handling
  • fixed KSystemManager::getFormElementError
  • fixed linked table table fields
  • fixed linktable issue on view and approve modules
  • Cleaned the approve module: With redundant script
  • added showSelectDeSelectOption: in KConfiguration
  • fixed get coordinates translation: updated delete of linked table to not delete the records when doing an update
  • fixed trim with the silencing of deprecation @trim
  • SelectboxNoOptionLabel: Configuration select box with one item UI/UX support
  • broadcastFormErrors: System Manager support formatting with new themes
  • buildCustomDefaultListActions: System Manager eval verification checks
  • getDisableNormalExport: System Manager flag to disable normal export

Application
Version: 18.0

02.11.2021

  • isSignatureField: System Manager support for digital signatures
  • isRgbCodeField: System Manager for UI/UX color pickers
  • isJoinedField: System Manager for database query builders
  • updateProperties: System Manager with combinations of parameters supported
  • getAllRequiredIfChildren: System Manager forms field with relationship flag
  • isAnyStatus: Status validation of multiple values
  • allowMoreSecurityQuestions: Security control user when has reached maximum allowed security questions
  • clearSecurityPatternSession: Security MFA login pattern use case
  • getRequestReLoadPopup: GUI library update on modals and reloading
  • maskPhoneNumber: Data formatting for international mobile numbers
  • readIntoLines: File manipulation of data into an array
  • getTimeSpendInWords: Data format on money fields
  • maskEmail: Data Security and privacy implementation
  • getHtmlSyntax: Data formatting for source code on UI/UX
  • radio: Form formation and styling
  • downloadFile: File Custom Header for application ownership
  • runSql: Database execution using query string
  • checkbox: Form formation and styling

Application
Version: 15.0

15.06.2018

  • createSwagger: KWebService for Hybrid Calls
  • reateEmptySwagger: KWebService for Hybrid Calls
  • validMethodCall: KWebService flexible required parameter validation
  • setupContextEnvironment: Application
  • setupRouting: Application to support unlimited interfaces
  • apiAuthentication: Security apply the same origin policy implementation
  • buildUserAccountList: Security addedreference name for the account switching
  • byPassUrlPartOnSessionIdle: Security & Navigate controls
  • signature: Configuration render for digital signatures
  • joinedField: Configuration reference on other components and tables
  • rgbToCmyk: Convert from RGB colors
  • startSession: Application check for MVC to work with flexible context
  • resizeToFitRectangle: Image manipulator for responsive UI/UX
  • generateTippyMenu: Generator to work with frontend libraries
  • communicationInterface: Gateway for SMS & email adapters
  • secondsToHoursMinutes: Convert seconds to minutes with UI/UX formatting
  • automatedFields: Configuration control on Database standard fields
  • customValidation: Configuration setting for form validations
  • downloadable: Configuration properties to flag upload files
  • feedFrom: Configuration joined fields navigation
  • reuseModule: Configuration scalability of modules
  • sourceComponent & SourceModule: Configuration support on sub modules for image viewing
  • manageObjectOverwrite: reuseModule
  • applyCustomModuleExtraFieldsRule: System Manager control of automated field

Application
Version: 11.0

14.02.2015

  • getCoordinates: Configuration support for browser GPS support
  • heading: Configuration non-form field for UI/UX formatting
  • hexColor: Configuration support for color pickers
  • i18nMobile: Configuration support for international mobile numbers storage
  • ignoreLangConversion: Configuration support for field drag and drop result storage
  • switchToAccount: Security to support multiple user profiles
  • aesRead: Security backwards compatibility check for mcrypt_decrypt
  • saveCredentials: Security update to allow registry data encryption
  • buildPermissions: AccessControl support for restriction and prohibited to work with flexible context
  • getPagerInfo: Pagination fix formatting on UI/UX
  • fancyTable: PDF bug fix on document alignment
  • showVerticalTimestampOnAllPages: PDF ability to switch timestamp on/off
  • createAPICredentials: Security custom endpoint to advanced API account setup
  • createPatternFormField: Security switch between patterns
  • generateFrameworkBarcode: Application support custom barcode field
  • initializeForcePath: Security controls for user password change enforcement - terminateForcePath

Application
Version: 5.0

07.03.2010

  • connect: Database fix for OS environment variables
  • htmlAttributesToIndexedArray:htmlAttributesToIndexedArray: Convert for html tag attributes which works for all markup languageswyciwygTags . Configuration rich text editor user tags injections
  • encryptUploadedFile: Configuration Securoty of file data binary storage
  • removeMatchedValues :Common Function on values maching the token list
  • getDataSequenceTree: Common Function recursive data tree extraction
  • sValidMfaPIN: iSecurity on authentication with Multi Fator AUthentication
  • mfaAllowSMSAsAlternative, mfaAllowEmailAsAlternative, mfaAllowPatternAsAlternative
  • initiateCloudAthenticator: Security mobile security application 2FA
  • ketroute.JS implementaion of SmartTabs
  • getAllRequiredIfChildren: Validation process