private function installDataTypes()
{
$groupedDataTypes = DataTypePluginHelper::getDataTypePlugins("installationDatabaseReady", false);
$L = Core::$language->getCurrentLanguageStrings();
$hasError = false;
$response = array();
$count = 0;
$folders = array();
while (list($group_name, $dataTypes) = each($groupedDataTypes)) {
$data = array();
foreach ($dataTypes as $currDataType) {
try {
list($success, $content) = $currDataType->install();
if (!$success) {
$hasError = true;
break;
}
$folder = $currDataType->getFolder();
$data[] = array("name" => $currDataType->getName(), "folder" => $folder, "desc" => $currDataType->getDesc());
$folders[] = $folder;
$count++;
} catch (Exception $e) {
$hasError = true;
break;
}
}
// organized in this data structure because objects lose their order
$response[] = array("group_name" => $L[$group_name], "data_types" => $data);
}
// need error handling here
Settings::setSetting("installedDataTypes", implode(",", $folders));
$this->response["success"] = !$hasError;
$this->response["content"] = array("total" => $count, "results" => $response);
}