SettingsController::banner PHP Method

banner() public method

Banner management screen.
Since: 2.0.0
public banner ( )
    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();
    }