public function getSummary() { $txt = ''; if ($this->eventHistoryModel->getIsNew()) { $txt .= "New! \n"; } if ($this->eventHistoryModel->isAnyChangeFlagsUnknown()) { $txt .= $this->eventHistoryModel->getDescription(); } else { if ($this->eventHistoryModel->getSummaryChanged()) { $txt .= "Summary Changed. \n"; } if ($this->eventHistoryModel->getDescriptionChanged()) { $txt .= "Description Changed. \n"; } if ($this->eventHistoryModel->getUrlChanged()) { $txt .= "URL Changed. \n"; } if ($this->eventHistoryModel->getStartAtChanged()) { $txt .= "Start Changed. \n"; } if ($this->eventHistoryModel->getEndAtChanged()) { $txt .= "End Changed. \n"; } if ($this->eventHistoryModel->getCountryIdChanged()) { $txt .= "Country Changed.\n"; } if ($this->eventHistoryModel->getTimezoneChanged()) { $txt .= "Timezone Changed. \n"; } if ($this->eventHistoryModel->getAreaIdChanged()) { $txt .= "Area Changed. \n"; } if ($this->eventHistoryModel->getVenueIdChanged()) { $txt .= "Venue Changed. \n"; } if ($this->eventHistoryModel->getIsVirtualChanged()) { $txt .= "Is Virtual Changed. \n"; } if ($this->eventHistoryModel->getIsPhysicalChanged()) { $txt .= "Is Physical Changed.\n"; } if ($this->eventHistoryModel->getIsDeletedChanged()) { $txt .= 'Deleted Changed: ' . ($this->eventHistoryModel->getIsDeleted() ? "Deleted" : "Restored") . "\n"; } if ($this->eventHistoryModel->getIsCancelledChanged()) { $txt .= 'cancelled Changed: ' . ($this->eventHistoryModel->getIsCancelled() ? "Cancelled" : "Restored") . "\n"; } } return $txt; }
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); } } } } }
function testSetChangedFlagsFromLastCancel() { $lastHistory = new EventHistoryModel(); $lastHistory->setFromDataBaseRow(array('event_id' => 1, 'summary' => 'New Event', 'description' => '', 'user_account_id' => 1, 'created_at' => '2014-02-01 10:00:00', 'start_at' => '2014-02-03 10:00:00', 'end_at' => '2014-02-03 15:00:00', 'is_deleted' => 0, 'is_cancelled' => 0, 'country_id' => '', 'timezone' => '', 'venue_id' => 45, 'url' => '', 'ticket_url' => '', 'is_virtual' => 0, 'is_physical' => 0, 'area_id' => '', 'summary_changed' => 0, 'description_changed' => 0, 'start_at_changed' => 0, 'end_at_changed' => 0, 'is_deleted_changed' => 0, 'country_id_changed' => 0, 'timezone_changed' => 0, 'venue_id_changed' => 0, 'url_changed' => 0, 'is_virtual_changed' => 0, 'is_physical_changed' => 0, 'area_id_changed' => 0, 'custom_fields' => null, 'custom_fields_changed' => null)); $eventHistory = new EventHistoryModel(); $eventHistory->setFromDataBaseRow(array('event_id' => 1, 'summary' => 'New Event', 'description' => '', 'user_account_id' => 1, 'created_at' => '2014-02-01 10:00:00', 'start_at' => '2014-02-03 10:00:00', 'end_at' => '2014-02-03 15:00:00', 'is_deleted' => 0, 'is_cancelled' => 1, 'country_id' => '', 'timezone' => '', 'venue_id' => 45, 'url' => '', 'ticket_url' => '', 'is_virtual' => 0, 'is_physical' => 0, 'area_id' => '', 'summary_changed' => 0, 'description_changed' => 0, 'start_at_changed' => 0, 'end_at_changed' => 0, 'is_deleted_changed' => 0, 'country_id_changed' => 0, 'timezone_changed' => 0, 'venue_id_changed' => 0, 'url_changed' => 0, 'is_virtual_changed' => 0, 'is_physical_changed' => 0, 'area_id_changed' => 0, 'custom_fields' => null, 'custom_fields_changed' => null)); $eventHistory->setChangedFlagsFromLast($lastHistory); $this->assertEquals(false, $eventHistory->getSummaryChanged()); $this->assertEquals(false, $eventHistory->getDescriptionChanged()); $this->assertEquals(false, $eventHistory->getStartAtChanged()); $this->assertEquals(false, $eventHistory->getEndAtChanged()); $this->assertEquals(false, $eventHistory->getIsDeletedChanged()); $this->assertEquals(true, $eventHistory->getIsCancelledChanged()); $this->assertEquals(false, $eventHistory->getCountryIdChanged()); $this->assertEquals(false, $eventHistory->getTimezoneChanged()); $this->assertEquals(false, $eventHistory->getVenueIdChanged()); $this->assertEquals(false, $eventHistory->getUrlChanged()); $this->assertEquals(false, $eventHistory->getTicketUrlChanged()); $this->assertEquals(false, $eventHistory->getIsVirtualChanged()); $this->assertEquals(false, $eventHistory->getIsPhysicalChanged()); $this->assertEquals(false, $eventHistory->getAreaIdChanged()); $this->assertEquals(false, $eventHistory->getIsNew()); }
public function ensureChangedFlagsAreSet(EventHistoryModel $eventhistory) { global $DB; // do we already have them? if (!$eventhistory->isAnyChangeFlagsUnknown()) { return; } // load last. $stat = $DB->prepare("SELECT * FROM event_history WHERE event_id = :id AND created_at < :at " . "ORDER BY created_at DESC"); $stat->execute(array('id' => $eventhistory->getId(), 'at' => $eventhistory->getCreatedAt()->format("Y-m-d H:i:s"))); if ($stat->rowCount() == 0) { $eventhistory->setChangedFlagsFromNothing(); } else { while ($eventhistory->isAnyChangeFlagsUnknown() && ($lastHistoryData = $stat->fetch())) { $lastHistory = new EventHistoryModel(); $lastHistory->setFromDataBaseRow($lastHistoryData); $eventhistory->setChangedFlagsFromLast($lastHistory); } } // Save back to DB $sqlFields = array(); $sqlParams = array('id' => $eventhistory->getId(), 'created_at' => $eventhistory->getCreatedAt()->format("Y-m-d H:i:s"), 'is_new' => $eventhistory->getIsNew() ? 1 : 0); if ($eventhistory->getSummaryChangedKnown()) { $sqlFields[] = " summary_changed = :summary_changed "; $sqlParams['summary_changed'] = $eventhistory->getSummaryChanged() ? 1 : -1; } if ($eventhistory->getDescriptionChangedKnown()) { $sqlFields[] = " description_changed = :description_changed "; $sqlParams['description_changed'] = $eventhistory->getDescriptionChanged() ? 1 : -1; } if ($eventhistory->getStartAtChangedKnown()) { $sqlFields[] = " start_at_changed = :start_at_changed "; $sqlParams['start_at_changed'] = $eventhistory->getStartAtChanged() ? 1 : -1; } if ($eventhistory->getEndAtChangedKnown()) { $sqlFields[] = " end_at_changed = :end_at_changed "; $sqlParams['end_at_changed'] = $eventhistory->getEndAtChanged() ? 1 : -1; } if ($eventhistory->getVenueIdChangedKnown()) { $sqlFields[] = " venue_id_changed = :venue_id_changed "; $sqlParams['venue_id_changed'] = $eventhistory->getVenueIdChanged() ? 1 : -1; } if ($eventhistory->getAreaIdChangedKnown()) { $sqlFields[] = " area_id_changed = :area_id_changed "; $sqlParams['area_id_changed'] = $eventhistory->getAreaIdChanged() ? 1 : -1; } if ($eventhistory->getCountryIdChangedKnown()) { $sqlFields[] = " country_id_changed = :country_id_changed "; $sqlParams['country_id_changed'] = $eventhistory->getCountryIdChanged() ? 1 : -1; } if ($eventhistory->getTimezoneChangedKnown()) { $sqlFields[] = " timezone_changed = :timezone_changed "; $sqlParams['timezone_changed'] = $eventhistory->getTimezoneChanged() ? 1 : -1; } if ($eventhistory->getUrlChangedKnown()) { $sqlFields[] = " url_changed = :url_changed "; $sqlParams['url_changed'] = $eventhistory->getUrlChanged() ? 1 : -1; } if ($eventhistory->getTicketUrlChangedKnown()) { $sqlFields[] = " ticket_url_changed = :ticket_url_changed "; $sqlParams['ticket_url_changed'] = $eventhistory->getTicketUrlChanged() ? 1 : -1; } if ($eventhistory->getIsPhysicalChangedKnown()) { $sqlFields[] = " is_physical_changed = :is_physical_changed "; $sqlParams['is_physical_changed'] = $eventhistory->getIsPhysicalChanged() ? 1 : -1; } if ($eventhistory->getIsVirtualChangedKnown()) { $sqlFields[] = " is_virtual_changed = :is_virtual_changed "; $sqlParams['is_virtual_changed'] = $eventhistory->getIsVirtualChanged() ? 1 : -1; } if ($eventhistory->getIsCancelledChangedKnown()) { $sqlFields[] = " is_cancelled_changed = :is_cancelled_changed "; $sqlParams['is_cancelled_changed'] = $eventhistory->getIsCancelledChanged() ? 1 : -1; } if ($eventhistory->getIsDeletedChangedKnown()) { $sqlFields[] = " is_deleted_changed = :is_deleted_changed "; $sqlParams['is_deleted_changed'] = $eventhistory->getIsDeletedChanged() ? 1 : -1; } if ($eventhistory->getIsDuplicateOfIdChangedKnown()) { $sqlFields[] = " is_duplicate_of_id_changed = :is_duplicate_of_id_changed "; $sqlParams['is_duplicate_of_id_changed'] = $eventhistory->getIsDuplicateOfIdChanged() ? 1 : -1; } $sqlFields[] = " custom_fields_changed=:custom_fields_changed "; $sqlParams['custom_fields_changed'] = $eventhistory->getCustomFieldsChangedForDataBase(); $statUpdate = $DB->prepare("UPDATE event_history SET " . " is_new = :is_new, " . implode(" , ", $sqlFields) . " WHERE event_id = :id AND created_at = :created_at"); $statUpdate->execute($sqlParams); }