public function getSystemAction()
{
$this->checkPermission("system_settings");
$values = Config::getSystemConfig();
if (($handle = fopen(PIMCORE_PATH . "/config/data/timezones.csv", "r")) !== false) {
while (($rowData = fgetcsv($handle, 10000, ",", '"')) !== false) {
$timezones[] = $rowData[0];
}
fclose($handle);
}
$locales = Tool::getSupportedLocales();
$languageOptions = [];
foreach ($locales as $short => $translation) {
if (!empty($short)) {
$languageOptions[] = ["language" => $short, "display" => $translation . " ({$short})"];
$validLanguages[] = $short;
}
}
$valueArray = $values->toArray();
$valueArray['general']['validLanguage'] = explode(",", $valueArray['general']['validLanguages']);
//for "wrong" legacy values
if (is_array($valueArray['general']['validLanguage'])) {
foreach ($valueArray['general']['validLanguage'] as $existingValue) {
if (!in_array($existingValue, $validLanguages)) {
$languageOptions[] = ["language" => $existingValue, "display" => $existingValue];
}
}
}
//cache exclude patterns - add as array
if (!empty($valueArray['cache']['excludePatterns'])) {
$patterns = explode(",", $valueArray['cache']['excludePatterns']);
if (is_array($patterns)) {
foreach ($patterns as $pattern) {
$valueArray['cache']['excludePatternsArray'][] = ["value" => $pattern];
}
}
}
//remove password from values sent to frontend
$valueArray['database']["params"]['password'] = "##SECRET_PASS##";
//admin users as array
$adminUsers = [];
$userList = new Model\User\Listing();
$userList->setCondition("admin = 1 and email is not null and email != ''");
$users = $userList->load();
if (is_array($users)) {
foreach ($users as $user) {
$adminUsers[] = ["id" => $user->getId(), "username" => $user->getName()];
}
}
$adminUsers[] = ["id" => "", "username" => "-"];
$response = ["values" => $valueArray, "adminUsers" => $adminUsers, "config" => ["timezones" => $timezones, "languages" => $languageOptions, "client_ip" => Tool::getClientIp(), "google_private_key_exists" => file_exists(\Pimcore\Google\Api::getPrivateKeyPath()), "google_private_key_path" => \Pimcore\Google\Api::getPrivateKeyPath(), "path_separator" => PATH_SEPARATOR]];
$this->_helper->json($response);
}