public function banner()
{
$this->permission(['Garden.Community.Manage', 'Garden.Settings.Manage'], false);
$this->setHighlightRoute('dashboard/settings/banner');
$this->title(t('Banner'));
$Validation = new Gdn_Validation();
$ConfigurationModel = new Gdn_ConfigurationModel($Validation);
$ConfigurationModel->setField(array('Garden.HomepageTitle' => c('Garden.Title'), 'Garden.Title', 'Garden.Description'));
// Set the model on the form.
$this->Form->setModel($ConfigurationModel);
// Get the current logo.
$Logo = c('Garden.Logo');
if ($Logo) {
$Logo = ltrim($Logo, '/');
// Fix the logo path.
if (stringBeginsWith($Logo, 'uploads/')) {
$Logo = substr($Logo, strlen('uploads/'));
}
$this->setData('Logo', $Logo);
}
// Get the current mobile logo.
$MobileLogo = c('Garden.MobileLogo');
if ($MobileLogo) {
$MobileLogo = ltrim($MobileLogo, '/');
// Fix the logo path.
if (stringBeginsWith($MobileLogo, 'uploads/')) {
$MobileLogo = substr($MobileLogo, strlen('uploads/'));
}
$this->setData('MobileLogo', $MobileLogo);
}
// Get the current favicon.
$Favicon = c('Garden.FavIcon');
$this->setData('Favicon', $Favicon);
$ShareImage = c('Garden.ShareImage');
$this->setData('ShareImage', $ShareImage);
// If seeing the form for the first time...
if (!$this->Form->authenticatedPostBack()) {
// Apply the config settings to the form.
$this->Form->setData($ConfigurationModel->Data);
} else {
$SaveData = array();
if ($this->Form->save() !== false) {
$Upload = new Gdn_Upload();
try {
// Validate the upload
$TmpImage = $Upload->validateUpload('Logo', false);
if ($TmpImage) {
// Generate the target image name
$TargetImage = $Upload->generateTargetName(PATH_UPLOADS);
$ImageBaseName = pathinfo($TargetImage, PATHINFO_BASENAME);
// Delete any previously uploaded images.
if ($Logo) {
$Upload->delete($Logo);
}
// Save the uploaded image
$Parts = $Upload->SaveAs($TmpImage, $ImageBaseName);
$ImageBaseName = $Parts['SaveName'];
$SaveData['Garden.Logo'] = $ImageBaseName;
$this->setData('Logo', $ImageBaseName);
}
$TmpMobileImage = $Upload->validateUpload('MobileLogo', false);
if ($TmpMobileImage) {
// Generate the target image name
$TargetImage = $Upload->generateTargetName(PATH_UPLOADS);
$ImageBaseName = pathinfo($TargetImage, PATHINFO_BASENAME);
// Delete any previously uploaded images.
if ($MobileLogo) {
$Upload->delete($MobileLogo);
}
// Save the uploaded image
$Parts = $Upload->saveAs($TmpMobileImage, $ImageBaseName);
$ImageBaseName = $Parts['SaveName'];
$SaveData['Garden.MobileLogo'] = $ImageBaseName;
$this->setData('MobileLogo', $ImageBaseName);
}
$ImgUpload = new Gdn_UploadImage();
$TmpFavicon = $ImgUpload->validateUpload('Favicon', false);
if ($TmpFavicon) {
$ICOName = 'favicon_' . substr(md5(microtime()), 16) . '.ico';
if ($Favicon) {
$Upload->delete($Favicon);
}
// Resize the to a png.
$Parts = $ImgUpload->SaveImageAs($TmpFavicon, $ICOName, 16, 16, array('OutputType' => 'ico', 'Crop' => true));
$SaveData['Garden.FavIcon'] = $Parts['SaveName'];
$this->setData('Favicon', $Parts['SaveName']);
}
$TmpShareImage = $Upload->ValidateUpload('ShareImage', false);
if ($TmpShareImage) {
$TargetImage = $Upload->GenerateTargetName(PATH_UPLOADS, false);
$ImageBaseName = pathinfo($TargetImage, PATHINFO_BASENAME);
if ($ShareImage) {
$Upload->delete($ShareImage);
}
$Parts = $Upload->SaveAs($TmpShareImage, $ImageBaseName);
$SaveData['Garden.ShareImage'] = $Parts['SaveName'];
$this->setData('ShareImage', $Parts['SaveName']);
}
} catch (Exception $ex) {
$this->Form->addError($ex);
}
// If there were no errors, save the path to the logo in the config
if ($this->Form->errorCount() == 0) {
saveToConfig($SaveData);
}
$this->informMessage(t("Your settings have been saved."));
}
}
$this->render();
}