CalendarEventForm.php in Opigno calendar event 8
File
src/Form/CalendarEventForm.php
View source
<?php
namespace Drupal\opigno_calendar_event\Form;
use Drupal\opigno_calendar\Plugin\Field\FieldWidget\OpignoDateRangeWidget;
use Drupal\opigno_calendar_event\CalendarEventExceptionLoggerTrait;
use Drupal\Core\Entity\ContentEntityForm;
use Drupal\Core\Entity\EntityMalformedException;
use Drupal\Core\Form\FormStateInterface;
class CalendarEventForm extends ContentEntityForm {
use CalendarEventExceptionLoggerTrait;
public function save(array $form, FormStateInterface $form_state) {
$calendar_event = $this->entity;
$insert = $calendar_event
->isNew();
$calendar_event
->setValidationRequired(FALSE);
parent::save($form, $form_state);
try {
$link = $calendar_event
->toLink($this
->t('View'))
->toString();
$context = [
'%title' => $calendar_event
->label(),
'link' => $link,
];
$t_args = [
'%title' => $calendar_event
->toLink($calendar_event
->label())
->toString(),
];
$redirect_url = $calendar_event
->toUrl();
if ($insert) {
$this
->logger('content')
->notice('%title calendar event created.', $context);
$this
->messenger()
->addStatus($this
->t('The calendar event %title has been created.', $t_args));
}
else {
$this
->logger('content')
->notice('%title calendar event updated.', $context);
$this
->messenger()
->addStatus($this
->t('The calendar event %title has been updated.', $t_args));
}
} catch (EntityMalformedException $e) {
$this
->logException($e);
}
if ($calendar_event
->id()) {
if (isset($redirect_url) && $calendar_event
->access('view')) {
$form_state
->setRedirectUrl($redirect_url);
}
else {
$form_state
->setRedirect('<front>');
}
}
else {
$this
->messenger()
->addError($this
->t('The calendar event could not be saved.'));
$form_state
->setRebuild();
}
}
public function validateForm(array &$form, FormStateInterface $form_state) {
$result = parent::validateForm($form, $form_state);
$values = $form_state
->getValues();
if (isset($values['date_daterange'][0]['value_wrapper']['date']) && !empty($values['date_daterange'][0]['value_wrapper']['date']) && isset($values['date_daterange'][0]['end_value_wrapper']['date']) && !empty($values['date_daterange'][0]['end_value_wrapper']['date'])) {
$pattern = \Drupal::config('core.date_format.datepicker')
->get('pattern');
$date = OpignoDateRangeWidget::createDateTimeFromWrapper($values['date_daterange'][0]['value_wrapper'], $pattern);
$end_date = OpignoDateRangeWidget::createDateTimeFromWrapper($values['date_daterange'][0]['end_value_wrapper'], $pattern);
if ($end_date < $date) {
$form_state
->setError($form['date_daterange']['widget'][0]['end_value_wrapper'], $this
->t('The end date cannot be before the start date'));
}
}
return $result;
}
}