ercore-8.x-1.20/modules/ercore_event/ercore_event.module
modules/ercore_event/ercore_event.module
<?php
/**
* @file
* Defines ERCore Event content and field types.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Entity\EntityInterface;
require_once drupal_get_path('module', 'ercore_event') . '/includes/ercore_event_computed.inc';
/**
* Implements hook_form_alter().
*/
function ercore_event_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id === 'node_ercore_event_form' || $form_id === 'node_ercore_event_edit_form') {
$form['field_event_type']['#states'] = [
'visible' => [
':input[name="field_ercore_event_type"]' => ['value' => 'Other'],
],
];
$form['#validate'][] = 'ercore_event_form_validate';
$form['#attached']['library'][] = 'ercore_event/ercore-event-form';
if (isset($form['field_ercore_ev_date_start']['widget'][0]['value'])) {
$event_date = $form['field_ercore_ev_date_start']['widget'][0]['value']['#default_value'];
$now = DrupalDateTime::createFromTimestamp(time());
if ($event_date < $now) {
$form['field_ercore_ev_engagement']['#states'] = [
'visible' => [
':input[name="field_ercore_ev_reminders"]' => ['value' => 1],
],
];
}
else {
$form['field_ercore_ev_engagement']['#attributes']['class'][] = 'hide';
}
}
}
}
/**
* Validates submission values in the FORM_ID() form.
*/
function ercore_event_form_validate(array &$form, FormStateInterface $form_state) {
$value1 = $form_state->getValue('field_ercore_ev_date_start');
$value2 = $form_state->getValue('field_ercore_ev_date_end');
if (!empty($value2['0']['value']) && $value2['0']['value'] < $value1['0']['value']) {
$form_state->setErrorByName('field_ercore_ev_date_end', t('End date must be after start date.'));
}
}
/**
* Implements hook_form_node_form_alter().
*/
function ercore_event_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$forms = [
'node_ercore_event_form',
'node_ercore_event_edit_form',
];
if (in_array($form_id, $forms)) {
$form['field_ercore_ev_engagement']['widget'][0]['subform']['field_ercore_ee_disable_file_alt']['#states'] = [
'visible' => [
':input[name="field_ercore_ev_engagement[0][subform][field_ercore_ee_excel][0][fids]"]' => ['filled' => TRUE],
],
];
$form['field_ercore_ev_engagement']['widget'][0]['subform']['field_ercore_ee_excel']['#states'] = [
'invisible' => [
':input[name="field_ercore_ev_engagement[0][subform][field_ercore_ee_disable_file_alt][value]"]' => ['checked' => TRUE],
],
];
$file_path = '/' . drupal_get_path('module', 'ercore_event') . '/files/External_Engagement_Reporting_Sheet.xls';
// $form['field_ercore_ev_engagement']['widget'][0]['subform']['field_ercore_ee_excel']['#prefix'] = '<p>Download the <a href="' . $file_path . '">External Engagement Reporting Sheet</a> and fill out the data at your event. Once the sheet is completed you may then upload the excel sheet below, and the system will do the rest.</p>';
}
}
/**
* Implements hook_entity_presave().
*/
function ercore_event_node_presave(EntityInterface $entity) {
if ($entity->getType() === 'ercore_event') {
$disallow = 1;
$engagement = $entity->get('field_ercore_ev_engagement')->getValue();
if (isset($engagement[0]['subform']['field_ercore_ee_disable_file_alt']['value']) &&
isset($engagement[0]['subform']['field_ercore_ee_excel'][0]['fids']) &&
!empty($engagement[0]['subform']['field_ercore_ee_excel'][0]['fids'])
) {
$disallow = $engagement[0]['subform']['field_ercore_ee_disable_file_alt']['value'];
}
if ($disallow !== 1) {
Drupal::service('ercore_event.ercore_import_engagement')
->processEngagement($engagement);
}
}
}
