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);
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc