Comment on page
New developer features in Elentra ME 1.22
Highlights from the release
You can find below a list of highlights for significant code changes, or new additions that developers may find useful.
The Core team has added a new table to store Event meta data. The table will store the Event ID, a Meta Key and a Meta Value. Moving forward, please leverage this table for adding new properties to events, rather than adding a new column in the
events
table.Please note that Events Meta Data is an ideal storage location for data. However, if you are storing complex data that has relationships, the recommendation is to create a new table. Meta is not the best solution for data that requires multiple joins of the table on itself.
Event ID: 9
Meta Key: alternate_url
Meta Value:
https://something.com
The Core Team has etended the Migration Model to include new methods allowing developers to easily modify ENUM fields. Altering an ENUM can be problamatic and this simplifies things.
// Example usage
$migrate = new Models_Migration();
// Add an ENUM value
// Assume that Enum values are currently ["blue", "green", "yellow"]
$migrate->addEnumValue("my_database", "my_table", "my_enumerated_field", "black");
// Enum values are now ["blue", "green", "yellow", "black"]
// Remove an ENUM value
$migrate->removeEnumValue("my_database", "my_table", "my_enumerated_field", "green");
// This did nothing because you can only remove the last item in the enumeration
$migrate->removeEnumValue("my_database", "my_table", "my_enumerated_field", "black");
// Enum values are now ["blue", "green", "yellow"]
$migrate->removeEnumValue("my_database", "my_table", "my_enumerated_field", "yellow");
// Enum values are now ["blue", "green"]
Hooks allow developers to add functionality to Elentra without changing the Core codebase. Hooks give you the flexibility to extend parts of Elentra, and maintain the code in your branded editiion of the software.
The Core Team has created a basic hook system that allows you to insert calls to certain actions in a standardized way.
To implement hooks, you need create a
functions-custom.inc.php
in the same directory as Elentra's functions.inc.php
file// Example code in functions-custom.inc.php
// this example will inject
function dashboard_customize_calendar($active_tab) {
echo 'The current active tab: ' . $active_tab;
}
Entrada_Hooks::addAction('dashboard_before_calendar', 'dashboard_customize_calendar');
Step 1
Define your hook in Entrada_Hooks
private static $actions = [
// Dashboard
'dashboard_calendar_before' => [],
'dashboard_calendar_after' => []
// define your own hook here, using this pattern
// module_component_location_duration
// example
// user_edit_form_submit => []
];
Step 2
Navigate to the file where you want to execute your own custom code, and define a hook execution, also pass the hook any parameters that you want (single parameter, or array of parameters)
Entrada_Hooks::doAction('dashboard_calendar_before', $active_tab);
Step 3
Navigate to
functions-custom.inc.php
and add an action to the hookfunction dashboard_customize_calendar($active_tab) {
echo 'The current active tab: ' . $active_tab;
}
Entrada_Hooks::addAction('dashboard_calendar_before', 'dashboard_customize_calendar');
The Elentra Corporation has added a new location to store temporary data. It is highly recommended that you create this new folder on your staging and production servers in
/var/www/vhosts/host/storage/tmp
// This has been added to settings.inc.php
define("TMP_STORAGE_PATH", $config->entrada_storage . "/tmp");
Websockets open a connection through which your frontend and backend can interact in real-time. This will be used in the new Peer Instruction feature that's currently being worked on.
The Core team has added a service for retrieving data from the
settings
table using these simple methods. Please note that this only works while working within elentra-1x-api
// Read information from a setting
Settings::read('key');
// Update a specific setting
Settings::write('key', 'somevalue');
A small, yet very nice improvement, the Settings table now includes a Description column. Developers are now required to add a description to explain what the setting does.
Last modified 2mo ago