OwlCyberSecurity - MANAGER
Edit File: AddAmountColumnToEventTicketsTable.php
<?php namespace Give\EventTickets\Migrations; use Give\Framework\Database\Exceptions\DatabaseQueryException; use Give\Framework\Migrations\Contracts\Migration; use Give\Framework\Migrations\Exceptions\DatabaseMigrationException; /** * @since 3.20.0 */ class AddAmountColumnToEventTicketsTable extends Migration { /** * @inheritdoc * * @since 3.20.0 */ public static function id() { return 'give-events-add-amount-column-to-events-tickets-table'; } /** * @since 3.20.0 */ public static function title() { return 'Add "amount" column to give_event_tickets table'; } /** * @inheritdoc * * @since 3.20.0 */ public static function timestamp() { return strtotime('2022-03-18 12:00:00'); } /** * @inheritdoc * * @since 3.20.0 * * @throws DatabaseMigrationException */ public function run() { global $wpdb; $eventTicketsTable = $wpdb->give_event_tickets; $eventTicketTypesTable = $wpdb->give_event_ticket_types; $this->addAmountColumn($wpdb, $eventTicketsTable); $this->migrateTicketPrices($wpdb, $eventTicketsTable, $eventTicketTypesTable); } /** * @since 3.20.0 * * @throws DatabaseMigrationException */ private function addAmountColumn($wpdb, $eventTicketsTable) { $sql = "ALTER TABLE $eventTicketsTable ADD COLUMN amount INT UNSIGNED NOT NULL AFTER donation_id"; try { maybe_add_column($eventTicketsTable, 'amount', $sql); } catch (DatabaseQueryException $exception) { throw new DatabaseMigrationException("An error occurred while adding the amount column to the $eventTicketsTable table", 0, $exception); } } /** * @since 3.20.0 * * @throws DatabaseMigrationException */ private function migrateTicketPrices($wpdb, $eventTicketsTable, $eventTicketTypesTable) { $sql = "UPDATE $eventTicketsTable eventTickets JOIN $eventTicketTypesTable evenTicketTypes ON eventTickets.ticket_type_id = evenTicketTypes.id SET eventTickets.amount = evenTicketTypes.price"; try { $wpdb->query($sql); } catch (DatabaseQueryException $exception) { throw new DatabaseMigrationException("An error occurred while migrating data to the amount column in the $eventTicketsTable table", 0, $exception); } } };