English (United Kingdom)

apply_filters_ref_array( 'vikappointments_before_save_reservation', bool $save, mixed &$data, JTable $table )

Fires before saving an appointment.


Description

This hook is triggered before creating or updating an appointment record. It can be used to bind the data that are going to be saved within the database.

TIP: in case of failure while saving the record, it is possible to throw an exception to abort the saving process and return a readable error message. The same can be accomplished by registering an error to the table and returning false.

// throw an exception
throw new Exception('Missing required field', 404);
// or register the error
$table->setError('Missing required field');
return false;

Parameters

$save

(bool)  Use false to abort the saving process.

&$data

(array|object)  Either an array or an object specifying the appointment properties to bind.

$table

(JTable)  The table instance that handles the saving process.


Example

The following example is used to save a new property that is not supported by default. It is assumed that the appointments database table has been altered to support the id_meeting column.

/**
 * Trigger hook to allow the plugins to bind the object that
 * is going to be saved.
 *
 * @param  boolean  $save   False to abort the saving process.
 * @param  mixed    &$data  The array/object to bind.
 * @param  JTable   $table  The table instance.
 */
add_filter('vikappointments_before_save_reservation', function($save, &$data, $table)
{
    $input = JFactory::getApplication()->input;

    // retrieve ID_MEETING from request
    $id_meeting = $input->get('id_meeting', null, 'string');

    // make sure the meeting ID was set
    if (!is_null($id_meeting))
    {
        // bind array with id_meeting to include it within the UPDATE/INSERT query
        $data['id_meeting'] = $id_meeting;
    }

    return $save;
}, 10, 3);

Changelog

Version Description
1.2.0 Added $save and $table arguments.
1.1.3 Introduced.
Last Update: 2021-10-05
Helpful?
See Also: