private function validateForm()
{
// is the form submitted?
if ($this->frm->isSubmitted()) {
// validate required fields
$this->frm->getField('site_title')->isFilled(BL::err('FieldIsRequired'));
// date & time
$this->frm->getField('time_format')->isFilled(BL::err('FieldIsRequired'));
$this->frm->getField('date_format_short')->isFilled(BL::err('FieldIsRequired'));
$this->frm->getField('date_format_long')->isFilled(BL::err('FieldIsRequired'));
// number
$this->frm->getField('number_format')->isFilled(BL::err('FieldIsRequired'));
// akismet key may be filled in
if ($this->needsAkismet && $this->frm->getField('akismet_key')->isFilled()) {
// key has changed
if ($this->frm->getField('akismet_key')->getValue() != $this->get('fork.settings')->get('Core', 'akismet_key', null)) {
// create instance
$akismet = new Akismet($this->frm->getField('akismet_key')->getValue(), SITE_URL);
// invalid key
if (!$akismet->verifyKey()) {
$this->frm->getField('akismet_key')->setError(BL::err('InvalidAPIKey'));
}
}
}
// domains filled in
if ($this->frm->getField('site_domains')->isFilled()) {
// split on newlines
$domains = explode("\n", trim($this->frm->getField('site_domains')->getValue()));
// loop domains
foreach ($domains as $domain) {
// strip funky stuff
$domain = trim(str_replace(array('www.', 'http://', 'https://'), '', $domain));
// invalid URL
if (!\SpoonFilter::isURL('http://' . $domain)) {
// set error
$this->frm->getField('site_domains')->setError(BL::err('InvalidDomain'));
// stop looping domains
break;
}
}
}
if ($this->frm->getField('ckfinder_image_max_width')->isFilled()) {
$this->frm->getField('ckfinder_image_max_width')->isInteger(BL::err('InvalidInteger'));
}
if ($this->frm->getField('ckfinder_image_max_height')->isFilled()) {
$this->frm->getField('ckfinder_image_max_height')->isInteger(BL::err('InvalidInteger'));
}
// no errors ?
if ($this->frm->isCorrect()) {
// general settings
$this->get('fork.settings')->set('Core', 'site_title_' . BL::getWorkingLanguage(), $this->frm->getField('site_title')->getValue());
$this->get('fork.settings')->set('Core', 'site_html_header', $this->frm->getField('site_html_header')->getValue());
$this->get('fork.settings')->set('Core', 'site_start_of_body_scripts', $this->frm->getField('site_start_of_body_scripts')->getValue());
$this->get('fork.settings')->set('Core', 'site_html_footer', $this->frm->getField('site_html_footer')->getValue());
// facebook settings
$this->get('fork.settings')->set('Core', 'facebook_admin_ids', $this->frm->getField('facebook_admin_ids')->isFilled() ? $this->frm->getField('facebook_admin_ids')->getValue() : null);
$this->get('fork.settings')->set('Core', 'facebook_app_id', $this->frm->getField('facebook_application_id')->isFilled() ? $this->frm->getField('facebook_application_id')->getValue() : null);
$this->get('fork.settings')->set('Core', 'facebook_app_secret', $this->frm->getField('facebook_application_secret')->isFilled() ? $this->frm->getField('facebook_application_secret')->getValue() : null);
// twitter settings
/** @var \SpoonFormText $txtTwitterSiteName */
$txtTwitterSiteName = $this->frm->getField('twitter_site_name');
if ($txtTwitterSiteName->isFilled()) {
$this->get('fork.settings')->set('Core', 'twitter_site_name', '@' . ltrim($txtTwitterSiteName->getValue(), '@'));
}
// ckfinder settings
$this->get('fork.settings')->set('Core', 'ckfinder_license_name', $this->frm->getField('ckfinder_license_name')->isFilled() ? $this->frm->getField('ckfinder_license_name')->getValue() : null);
$this->get('fork.settings')->set('Core', 'ckfinder_license_key', $this->frm->getField('ckfinder_license_key')->isFilled() ? $this->frm->getField('ckfinder_license_key')->getValue() : null);
$this->get('fork.settings')->set('Core', 'ckfinder_image_max_width', $this->frm->getField('ckfinder_image_max_width')->isFilled() ? $this->frm->getField('ckfinder_image_max_width')->getValue() : 1600);
$this->get('fork.settings')->set('Core', 'ckfinder_image_max_height', $this->frm->getField('ckfinder_image_max_height')->isFilled() ? $this->frm->getField('ckfinder_image_max_height')->getValue() : 1200);
// api keys
// @TODO should be removed when the api is kicked out
$this->get('fork.settings')->set('Core', 'fork_api_public_key', $this->frm->getField('fork_api_public_key')->getValue());
$this->get('fork.settings')->set('Core', 'fork_api_private_key', $this->frm->getField('fork_api_private_key')->getValue());
if ($this->needsAkismet) {
$this->get('fork.settings')->set('Core', 'akismet_key', $this->frm->getField('akismet_key')->getValue());
}
if ($this->needsGoogleMaps) {
$this->get('fork.settings')->set('Core', 'google_maps_key', $this->frm->getField('google_maps_key')->getValue());
}
// date & time formats
$this->get('fork.settings')->set('Core', 'time_format', $this->frm->getField('time_format')->getValue());
$this->get('fork.settings')->set('Core', 'date_format_short', $this->frm->getField('date_format_short')->getValue());
$this->get('fork.settings')->set('Core', 'date_format_long', $this->frm->getField('date_format_long')->getValue());
// date & time formats
$this->get('fork.settings')->set('Core', 'number_format', $this->frm->getField('number_format')->getValue());
// before we save the languages, we need to ensure that each language actually exists and may be chosen.
$languages = array(SITE_DEFAULT_LANGUAGE);
$activeLanguages = array_unique(array_merge($languages, $this->frm->getField('active_languages')->getValue()));
$redirectLanguages = array_unique(array_merge($languages, $this->frm->getField('redirect_languages')->getValue()));
// cleanup redirect-languages, by removing the values that aren't present in the active languages
$redirectLanguages = array_intersect($redirectLanguages, $activeLanguages);
// save active languages
$this->get('fork.settings')->set('Core', 'active_languages', $activeLanguages);
$this->get('fork.settings')->set('Core', 'redirect_languages', $redirectLanguages);
// domains may not contain www, http or https. Therefor we must loop and create the list of domains.
$siteDomains = array();
// domains filled in
if ($this->frm->getField('site_domains')->isFilled()) {
// split on newlines
$domains = explode("\n", trim($this->frm->getField('site_domains')->getValue()));
// loop domains
foreach ($domains as $domain) {
// strip funky stuff
$siteDomains[] = trim(str_replace(array('www.', 'http://', 'https://'), '', $domain));
}
}
// save domains
$this->get('fork.settings')->set('Core', 'site_domains', $siteDomains);
$this->get('fork.settings')->set('Core', 'show_cookie_bar', $this->frm->getField('show_cookie_bar')->getChecked());
// assign report
$this->tpl->assign('report', true);
$this->tpl->assign('reportMessage', BL::msg('Saved'));
}
}
}