Newer
Older
<?php
class CRM_Availability_BAO_Availability {
/**
*
*/
static function loadResources() {
Civi::resources()
->addStyleFile('availability', 'availability.css')
Shane
committed
->addScriptFile('availability', 'availability.js', 10, 'page-header');
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$fields = Civi::settings()->get('availability_fields');
if (!is_array($fields)) {
$fields = explode(CRM_Core_DAO::VALUE_SEPARATOR, $fields);
}
$settings = [
'fields' => [],
];
foreach ($fields as $field_id) {
if (!empty($field_id)) {
list($days, $periods) = self::getDaysAndPeriods($field_id);
$settings['fields'][$field_id]['days'] = $days;
$settings['fields'][$field_id]['periods'] = $periods;
}
}
Civi::resources()->addSetting(['availability' => $settings]);
}
/**
*
*/
static function getDaysAndPeriods($field_id) {
$days = [];
$periods = [];
$option_group_id = civicrm_api3('CustomField', 'getsingle', [
'id' => $field_id,
])['option_group_id'];
if (empty($option_group_id)) {
return $days;
}
$options = civicrm_api3('OptionValue', 'get', [
'option_group_id' => $option_group_id,
'options' => ['limit' => 0],
])['values'];
foreach ($options as $key => $val) {
$parts = explode(' ', $val['label']);
if (!in_array($parts[0], $days)) {
$days[] = $parts[0];
}
// NB: a label might just have "Monday" (not "Monday AM"), in which case
// we will display a "All" row label (see empty periods below).
if (isset($parts[1]) && !in_array($parts[1], $periods)) {
$periods[] = $parts[1];
}
}
if (empty($periods[0])) {
$periods = [ts('All')];
}