release; } /** * {@inheritdoc} */ public function require_all_upgrades() { return false; } /** * {@inheritdoc} */ public function getDoctrineMigrations() { return []; } /** * {@inheritdoc} */ public function concern() { return $this->concern; } /** * {@inheritdoc} */ public function apply(base $appbox, Application $app) { $sql = 'SELECT base_id, ord, sbas_id FROM `bas` ORDER BY sbas_id, ord'; $stmt = $appbox->get_connection()->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); $sbasData = []; $sbas_id = null; $reorder = []; foreach ($rs as $row) { $sbasData[$row['sbas_id']][] = ['base_id' => $row['base_id']]; if ($sbas_id !== $row['sbas_id']) { $orders = []; } $sbas_id = $row['sbas_id']; if (in_array($row['ord'], $orders, true)) { $reorder[] = $row['sbas_id']; } $orders[] = $row['ord']; } $reorder = array_unique($reorder); if (count($reorder) > 0) { $sql = 'UPDATE bas SET ord = :ord WHERE base_id = :base_id'; $stmt = $appbox->get_connection()->prepare($sql); foreach ($reorder as $sbas_id) { $i = 1; foreach ($sbasData[$sbas_id] as $data) { $stmt->execute(['base_id' => $data['base_id'], 'ord' => $i++]); } } $stmt->closeCursor(); } return true; } }