/**
  * Remove the logo from config & delete it.
  *
  * @since 2.1
  * @param string $TransientKey Security token.
  */
 public function RemoveFavicon($TransientKey = '')
 {
     $Session = Gdn::Session();
     if ($Session->ValidateTransientKey($TransientKey) && $Session->CheckPermission('Garden.Settings.Manage')) {
         $Favicon = C('Garden.FavIcon', '');
         RemoveFromConfig('Garden.FavIcon');
         $Upload = new Gdn_Upload();
         $Upload->Delete($Favicon);
     }
     Redirect('/settings/banner');
 }
 public function RemovePicture($UserID)
 {
     // Grab the current photo.
     $User = $this->GetID($UserID, DATASET_TYPE_ARRAY);
     if ($Photo = $User['Photo']) {
         $ProfilePhoto = ChangeBasename($Photo, 'p%s');
         $Upload = new Gdn_Upload();
         $Upload->Delete($ProfilePhoto);
         $this->SetField($UserID, 'Photo', NULL);
     }
 }
   /**
    * Banner management screen.
    */
   public function Banner() {
      $this->Permission('Garden.Settings.Manage');
      $this->AddSideMenu('dashboard/settings/banner');
      $this->Title(T('Banner'));
      
      $Validation = new Gdn_Validation();
      $ConfigurationModel = new Gdn_ConfigurationModel($Validation);
      $ConfigurationModel->SetField(array('Garden.Title'));
      
      // 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);
      }
      
      // If seeing the form for the first time...
      if ($this->Form->AuthenticatedPostBack() === FALSE) {
         // Apply the config settings to the form.
         $this->Form->SetData($ConfigurationModel->Data);
      } else {
         // Define some validation rules for the fields being saved
         $ConfigurationModel->Validation->ApplyRule('Garden.Title', 'Required');
         
         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_ROOT . DS . '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'];
               }
            } catch (Exception $ex) {
               $this->Form->AddError($ex->getMessage());
            }
            // If there were no errors, save the path to the logo in the config
            if ($this->Form->ErrorCount() == 0 && $Upload->GetUploadedFileName() != '') {
               SaveToConfig('Garden.Logo', $ImageBaseName);
               $this->SetData('Logo', $ImageBaseName);
            }
            
            $this->InformMessage(T("Your settings have been saved."));
         }
      }
      
      $this->Render();      
   }
 /**
  * Remove the share image from config & delete it.
  *
  * @since 2.1
  * @param string $TransientKey Security token.
  */
 public function RemoveShareImage($TransientKey = '')
 {
     $this->Permission('Garden.Settings.Manage');
     $Session = Gdn::Session();
     if (Gdn::Request()->IsAuthenticatedPostBack()) {
         $ShareImage = C('Garden.ShareImage', '');
         RemoveFromConfig('Garden.ShareImage');
         $Upload = new Gdn_Upload();
         $Upload->Delete($ShareImage);
     }
     $this->RedirectUrl = '/settings/banner';
     $this->Render('Blank', 'Utility');
 }