public function applyChangeToFutureEvents() { $startDiff = $this->initalEvent->getStartAtInUTC()->diff($this->initialEventJustBeforeLastChange->getStartAtInUTC()); $endDiff = $this->initalEvent->getEndAtInUTC()->diff($this->initialEventJustBeforeLastChange->getEndAtInUTC()); foreach ($this->futureEvents as $futureEvent) { $this->futureEventsProposedChanges[$futureEvent->getSlug()] = new EventInRecurSetProposedChangesModel(); if (($this->initalEventLastChange->getCountryIdChanged() || $this->initalEventLastChange->getVenueIdChanged() || $this->initalEventLastChange->getAreaIdChanged()) && ($this->initalEvent->getCountryId() != $futureEvent->getCountryId() || $this->initalEvent->getAreaId() != $futureEvent->getAreaId() || $this->initalEvent->getVenueId() != $futureEvent->getVenueId())) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCountryAreaVenueIdChangePossible(true); if ($this->initialEventJustBeforeLastChange->getCountryId() != $futureEvent->getCountryId() || $this->initialEventJustBeforeLastChange->getAreaId() != $futureEvent->getAreaId() || $this->initialEventJustBeforeLastChange->getVenueId() != $futureEvent->getVenueId()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCountryAreaVenueIdChangeSelected(true); } } if ($this->initalEventLastChange->getSummaryChanged()) { $summary = $this->initalEvent->getSummary(); // change month title $currentMonthLong = $this->initalEvent->getStartAtInUTC()->format('F'); $currentMonthShort = $this->initalEvent->getStartAtInUTC()->format('M'); if (stripos($summary, $currentMonthLong) !== false) { $summary = str_ireplace($currentMonthLong, $futureEvent->getStartAtInUTC()->format('F'), $summary); } else { if (stripos($summary, $currentMonthShort) !== false) { $summary = str_ireplace($currentMonthShort, $futureEvent->getStartAtInUTC()->format('M'), $summary); } } if ($summary != $futureEvent->getSummary()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummary($summary); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummaryChangePossible(true); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummaryChangeSelected(true); } } if ($this->initalEventLastChange->getDescriptionChanged() && $this->initalEvent->getDescription() != $futureEvent->getDescription()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setDescriptionChangePossible(true); if ($this->initialEventJustBeforeLastChange->getDescription() == $futureEvent->getDescription()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setDescriptionChangeSelected(true); } } if ($this->initalEventLastChange->getUrlChanged() && $this->initalEvent->getUrl() != $futureEvent->getUrl()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setUrlChangePossible(true); if ($this->initialEventJustBeforeLastChange->getUrl() == $futureEvent->getUrl()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setUrlChangeSelected(true); } } if ($this->initalEventLastChange->getTicketUrlChanged() && $this->initalEvent->getTicketUrl() != $futureEvent->getTicketUrl()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTicketUrlChangePossible(true); if ($this->initialEventJustBeforeLastChange->getTicketUrl() == $futureEvent->getTicketUrl()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTicketUrlChangeSelected(true); } } if ($this->initalEventLastChange->getTimezoneChanged() && $this->initalEvent->getTimezone() != $futureEvent->getTimezone()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTimezoneChangePossible(true); if ($this->initialEventJustBeforeLastChange->getTimezone() == $futureEvent->getTimezone()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTimezoneChangeSelected(true); } } if ($this->initalEventLastChange->getIsPhysicalChanged() && $this->initalEvent->getIsPhysical() != $futureEvent->getIsPhysical()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsPhysicalChangePossible(true); if ($this->initialEventJustBeforeLastChange->getIsPhysical() == $futureEvent->getIsPhysical()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsPhysicalChangeSelected(true); } } if ($this->initalEventLastChange->getIsVirtualChanged() && $this->initalEvent->getIsVirtual() != $futureEvent->getIsVirtual()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsVirtualChangePossible(true); if ($this->initialEventJustBeforeLastChange->getIsVirtual() == $futureEvent->getIsVirtual()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsVirtualChangeSelected(true); } } if ($this->initalEventLastChange->getIsCancelledChanged() && $this->initalEvent->getIsCancelled() != $futureEvent->getIsCancelled()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsCancelledChangePossible(true); if ($this->initialEventJustBeforeLastChange->getIsCancelled() == $futureEvent->getIsCancelled()) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsCancelledChangeSelected(true); } } if ($startDiff->y != 0 || $startDiff->m != 0 || $startDiff->d != 0 || $startDiff->h != 0 || $startDiff->i != 0 || $startDiff->s != 0 || ($endDiff->y != 0 || $endDiff->m != 0 || $endDiff->d != 0 || $endDiff->h != 0 || $endDiff->i != 0 || $endDiff->s != 0)) { $start = clone $futureEvent->getStartAtInUTC(); $start->sub($startDiff); $end = clone $futureEvent->getEndAtInUTC(); $end->sub($endDiff); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartEndAtChangePossible(true); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartEndAtChangeSelected(true); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartAt($start); $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setEndAt($end); } foreach ($this->customFields as $customField) { if ($this->initalEventLastChange->hasCustomField($customField) && $this->initalEvent->getCustomField($customField) != $futureEvent->getCustomField($customField)) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCustomFieldChangePossible($customField, true); if ($this->initialEventJustBeforeLastChange->getCustomField($customField) == $futureEvent->getCustomField($customField)) { $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCustomFieldChangeSelected($customField, true); } } } } }