getAllLibraries() as $lib) { $lib_data[$lib] = phutil_get_library_root($lib); } return array( 'config' => PhabricatorEnv::getAllConfigKeys(), 'libraries' => $lib_data, ); } public function render() { $data = $this->getData(); $lib_data = $data['libraries']; $lib_rows = array(); foreach ($lib_data as $key => $value) { $lib_rows[] = array( phutil_escape_html($key), phutil_escape_html($value), ); } $lib_table = new AphrontTableView($lib_rows); $lib_table->setHeaders( array( 'Library', 'Loaded From', )); $lib_table->setColumnClasses( array( 'header', 'wide wrap', )); $config_data = $data['config']; ksort($config_data); $mask = PhabricatorEnv::getEnvConfig('darkconsole.config-mask'); $mask = array_fill_keys($mask, true); $rows = array(); foreach ($config_data as $key => $value) { if (empty($mask[$key])) { $display_value = is_array($value) ? json_encode($value) : $value; $display_value = phutil_escape_html($display_value); } else { $display_value = phutil_escape_html(''); } $rows[] = array( phutil_escape_html($key), $display_value, ); } $table = new AphrontTableView($rows); $table->setHeaders( array( 'Key', 'Value', )); $table->setColumnClasses( array( 'header', 'wide wrap', )); return $lib_table->render().$table->render(); } }