getTable('ngb_targets'); if ($t->hasColumn('schedule')) { return null; } $t->addColumn('schedule', Types::STRING, ['notnull' => false, 'length' => 16]); $t->addColumn('schedule_zone', Types::STRING, ['notnull' => false, 'length' => 64]); $t->addColumn('schedule_since', Types::BIGINT, ['notnull' => false, 'unsigned' => true]); return $schema; } public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { ['time' => $time, 'timezone' => $zone] = $this->schedule->get(); $qb = $this->db->getQueryBuilder(); $qb->update('ngb_targets') ->set('schedule', $qb->createNamedParameter(Schedule::validTime($time) ? LocationSchedule::normalize($time) : '')) ->set('schedule_zone', $qb->createNamedParameter($zone)) ->where($qb->expr()->isNull('schedule')); $qb->executeStatement(); } }