Override Setting
apply_filters( 'vikappointments_override_employees_area_setting', mixed $value, string $role, mixed $setting, mixed $handler )
Fires while fetching a setting for the employees area.
Description
Trigger hook to allow external plugins to override a specific setting of the employees area.
Here's the full list of settings (roles) that can be overwritten at runtime:
config.register
config.signup.status
config.signup.group
config.services
profile.manage
service.create
service.manage
service.override
service.assign
service.remove
service.max
payment.manage
coupon.manage
field.manage
worktime.manage
location.manage
reservation.create
reservation.manage
reservation.confirm
reservation.remove
reservation.notify
Parameters
- $value
-
(mixed) The value to return.
- $role
-
(string) The identifier of the role to override.
- $setting
-
(mixed) The default setting value.
- $handler
-
(VAPEmployeeAuth|null) The employee wrapper instance or null.
Example
The example below explains how to have dynamic settings, which may vary depending on the purchased subscription plan. In this case, we are going to increase the maximum number of services that can be created, depending on the latest purchased subscription. In example:
- Basic (ID #1) - 5 services
- Advanced (ID #2) - 10 services
- Premium (ID #3) - 15 services
/**
* Trigger event to allow external plugins to override a specific setting
* of the employees area.
*
* @param mixed $value The value to return.
* @param string $role The role to check.
* @param mixed $setting The default setting value.
* @param mixed $handler The employee wrapper instance or null.
*/
add_filter('vikappointments_override_employees_area_setting', function($value, $role, $setting, $handler)
{
if ($role !== 'service.max')
{
return $value;
}
$dbo = JFactory::getDbo();
// fetch the latest purchased subscription
$q = $dbo->getQuery(true)
->select($dbo->qn('id_subscr'))
->from($dbo->qn('#__vikappointments_subscr_order'))
->where($dbo->qn('id_employee') . ' = ' . (int) $handler->id)
->where($dbo->qn('status') . ' IN (\'P\', \'C\')')
->order($dbo->qn('id') . ' DESC');
$dbo->setQuery($q, 0, 1);
$dbo->execute();
if ($dbo->getNumRows())
{
switch ((int) $dbo->loadResult())
{
// basic
case 1:
$value = 5;
break;
// advanced
case 2:
$value = 10;
break;
// premium
case 3:
$value = 15;
break;
}
}
return $value;
}, 10, 4);
Changelog
Version | Description |
---|---|
1.2 | Introduced. |
Last Update: 2021-10-08
Helpful?