@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 81 lines 2.0 kB view raw
1<?php 2 3// Convert dashboards to a new storage format. The old storage format looks 4// like this: 5 6// { 7// "0": ["PHID-DSHP-A", ...], 8// "1": ["PHID-DSHP-B", ...] 9// } 10 11// The new storage format looks like this: 12 13// [ 14// { 15// "panelKey": "abcdefgh", 16// "panelPHID": "PHID-DSHP-A", 17// "columnKey": "left" 18// }, 19// ... 20// ] 21 22// One major issue with the old storage format is that when multiple copies of 23// a single dashboard panel appeared on the same dashboard, the UI had a lot 24// of difficulty acting on a particular copy because copies were identified 25// only by PHID and all copies of the same panel have the same panel PHID. 26 27$dashboard_table = new PhabricatorDashboard(); 28$conn = $dashboard_table->establishConnection('r'); 29$table_name = $dashboard_table->getTableName(); 30 31$rows = new LiskRawMigrationIterator($conn, $table_name); 32foreach ($rows as $row) { 33 $config = $row['layoutConfig']; 34 35 try { 36 $config = phutil_json_decode($config); 37 } catch (Exception $ex) { 38 $config = array(); 39 } 40 41 if (!is_array($config)) { 42 $config = array(); 43 } 44 45 $panels = idx($config, 'panelLocations'); 46 if (!is_array($panels)) { 47 $panels = array(); 48 } 49 50 if (idx($config, 'layoutMode') === 'layout-mode-full') { 51 $column_map = array( 52 0 => 'main', 53 ); 54 } else { 55 $column_map = array( 56 0 => 'left', 57 1 => 'right', 58 ); 59 } 60 61 $panel_list = array(); 62 foreach ($panels as $column_idx => $panel_phids) { 63 $column_key = idx($column_map, $column_idx, 'unknown'); 64 foreach ($panel_phids as $panel_phid) { 65 $panel_list[] = array( 66 'panelKey' => Filesystem::readRandomCharacters(8), 67 'columnKey' => $column_key, 68 'panelPHID' => $panel_phid, 69 ); 70 } 71 } 72 unset($config['panelLocations']); 73 $config['panels'] = $panel_list; 74 75 queryfx( 76 $conn, 77 'UPDATE %R SET layoutConfig = %s WHERE id = %d', 78 $dashboard_table, 79 phutil_json_encode($config), 80 $row['id']); 81}