establishConnection('w'); // Convert "Mail Format", "Re Prefix" and "Vary Subjects" mail settings to // string constants to avoid weird stuff where we store "true" and "false" as // strings in the database. // Each of these keys will be converted to the first value if present and // truthy, or the second value if present and falsey. $remap = array( 'html-emails' => array('html', 'text'), 're-prefix' => array('re', 'none'), 'vary-subject' => array('vary', 'static'), ); foreach (new LiskMigrationIterator($table) as $row) { $dict = $row->getPreferences(); $should_update = false; foreach ($remap as $key => $value) { if (isset($dict[$key])) { if ($dict[$key]) { $dict[$key] = $value[0]; } else { $dict[$key] = $value[1]; } $should_update = true; } } if (!$should_update) { continue; } queryfx( $conn_w, 'UPDATE %T SET preferences = %s WHERE id = %d', $table->getTableName(), phutil_json_encode($dict), $row->getID()); } $prefs_key = PhabricatorUserPreferencesCacheType::KEY_PREFERENCES; PhabricatorUserCache::clearCacheForAllUsers($prefs_key);