diff --git a/resources/sql/autopatches/20190412.dashboard.01.panels.php b/resources/sql/autopatches/20190412.dashboard.01.panels.php new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20190412.dashboard.01.panels.php @@ -0,0 +1,81 @@ +establishConnection('r'); +$table_name = $dashboard_table->getTableName(); + +$rows = new LiskRawMigrationIterator($conn, $table_name); +foreach ($rows as $row) { + $config = $row['layoutConfig']; + + try { + $config = phutil_json_decode($config); + } catch (Exception $ex) { + $config = array(); + } + + if (!is_array($config)) { + $config = array(); + } + + $panels = idx($config, 'panelLocations'); + if (!is_array($panels)) { + $panels = array(); + } + + if (idx($config, 'layoutMode') === 'layout-mode-full') { + $column_map = array( + 0 => 'main', + ); + } else { + $column_map = array( + 0 => 'left', + 1 => 'right', + ); + } + + $panel_list = array(); + foreach ($panels as $column_idx => $panel_phids) { + $column_key = idx($column_map, $column_idx, 'unknown'); + foreach ($panel_phids as $panel_phid) { + $panel_list[] = array( + 'panelKey' => Filesystem::readRandomCharacters(8), + 'columnKey' => $column_key, + 'panelPHID' => $panel_phid, + ); + } + } + unset($config['panelLocations']); + $config['panels'] = $panel_list; + + queryfx( + $conn, + 'UPDATE %R SET layoutConfig = %s WHERE id = %d', + $dashboard_table, + phutil_json_encode($config), + $row['id']); +}