protected function validateSettingsVars($submissionVars, $formVars)
{
foreach ($formVars as $field => $info) {
$submissionVars[$field] = trim($submissionVars[$field]);
if ($info['required'] == TRUE && $submissionVars[$field] === '') {
$name = _elgg_services()->translator->translate("install:settings:label:{$field}");
register_error(_elgg_services()->translator->translate('install:error:requiredfield', array($name)));
return FALSE;
}
}
// check that data root is absolute path
if (stripos(PHP_OS, 'win') === 0) {
if (strpos($submissionVars['dataroot'], ':') !== 1) {
$msg = _elgg_services()->translator->translate('install:error:relative_path', array($submissionVars['dataroot']));
register_error($msg);
return FALSE;
}
} else {
if (strpos($submissionVars['dataroot'], '/') !== 0) {
$msg = _elgg_services()->translator->translate('install:error:relative_path', array($submissionVars['dataroot']));
register_error($msg);
return FALSE;
}
}
// check that data root exists
if (!file_exists($submissionVars['dataroot'])) {
$msg = _elgg_services()->translator->translate('install:error:datadirectoryexists', array($submissionVars['dataroot']));
register_error($msg);
return FALSE;
}
// check that data root is writable
if (!is_writable($submissionVars['dataroot'])) {
$msg = _elgg_services()->translator->translate('install:error:writedatadirectory', array($submissionVars['dataroot']));
register_error($msg);
return FALSE;
}
if (!isset($this->CONFIG->data_dir_override) || !$this->CONFIG->data_dir_override) {
// check that data root is not subdirectory of Elgg root
if (stripos($submissionVars['dataroot'], $submissionVars['path']) === 0) {
$msg = _elgg_services()->translator->translate('install:error:locationdatadirectory', array($submissionVars['dataroot']));
register_error($msg);
return FALSE;
}
}
// check that email address is email address
if ($submissionVars['siteemail'] && !is_email_address($submissionVars['siteemail'])) {
$msg = _elgg_services()->translator->translate('install:error:emailaddress', array($submissionVars['siteemail']));
register_error($msg);
return FALSE;
}
// @todo check that url is a url
// @note filter_var cannot be used because it doesn't work on international urls
return TRUE;
}