original_string: public function DeleteCategory($CategoryID = FALSE) {
        // Check permission
        $this->Permission('Garden.Settings.Manage');
        
        // Set up head
        $this->AddJsFile('categories.js');
        $this->Title(T('Delete Category'));
        $this->AddSideMenu('vanilla/settings/managecategories');
  
        // Get category data
        $this->Category = $this->CategoryModel->GetID($CategoryID);
        
        
        if (!$this->Category) {
           $this->Form->AddError('The specified category could not be found.');
        } else {
           // Make sure the form knows which item we are deleting.
           $this->Form->AddHidden('CategoryID', $CategoryID);
           
           // Get a list of categories other than this one that can act as a replacement
           $this->OtherCategories = $this->CategoryModel->GetWhere(
              array(
                 'CategoryID <>' => $CategoryID,
                 'AllowDiscussions' => $this->Category->AllowDiscussions, // Don't allow a category with discussion to be the replacement for one without discussions (or vice versa)
                 'CategoryID >' => 0
              ),
              'Sort'
           );
           
           if (!$this->Form->AuthenticatedPostBack()) {
              $this->Form->SetFormValue('DeleteDiscussions', '1'); // Checked by default
           } else {
              $ReplacementCategoryID = $this->Form->GetValue('ReplacementCategoryID');
              $ReplacementCategory = $this->CategoryModel->GetID($ReplacementCategoryID);
              // Error if:
              // 1. The category being deleted is the last remaining category that
              // allows discussions.
              if ($this->Category->AllowDiscussions == '1'
                 && $this->OtherCategories->NumRows() == 0)
                 $this->Form->AddError('You cannot remove the only remaining category that allows discussions');
              
              /*
              // 2. The category being deleted allows discussions, and it contains
              // discussions, and there is no replacement category specified.
              if ($this->Form->ErrorCount() == 0
                 && $this->Category->AllowDiscussions == '1'
                 && $this->Category->CountDiscussions > 0
                 && ($ReplacementCategory == FALSE || $ReplacementCategory->AllowDiscussions != '1'))
                 $this->Form->AddError('You must select a replacement category in order to remove this category.');
              */
              
              // 3. The category being deleted does not allow discussions, and it
              // does contain other categories, and there are replacement parent
              // categories available, and one is not selected.
              /*
              if ($this->Category->AllowDiscussions == '0'
                 && $this->OtherCategories->NumRows() > 0
                 && !$ReplacementCategory) {
                 if ($this->CategoryModel->GetWhere(array('ParentCategoryID' => $CategoryID))->NumRows() > 0)
                    $this->Form->AddError('You must select a replacement category in order to remove this category.');
              }
              */
              
              if ($this->Form->ErrorCount() == 0) {
                 // Go ahead and delete the category
                 try {
                    $this->CategoryModel->Delete($this->Category, $this->Form->GetValue('ReplacementCategoryID'));
                 } catch (Exception $ex) {
                    $this->Form->AddError($ex);
                 }
                 if ($this->Form->ErrorCount() == 0) {
                    $this->RedirectUrl = Url('vanilla/settings/managecategories');
                    $this->InformMessage(T('Deleting category...'));
                 }
              }
           }
        }
        
        // Render default view
        $this->Render();
     }
code: public function DeleteCategory($CategoryID = FALSE) {
        // Check permission
        $this->Permission('Garden.Settings.Manage');
        
        // Set up head
        $this->AddJsFile('categories.js');
        $this->Title(T('Delete Category'));
        $this->AddSideMenu('vanilla/settings/managecategories');
  
        // Get category data
        $this->Category = $this->CategoryModel->GetID($CategoryID);
        
        
        if (!$this->Category) {
           $this->Form->AddError('The specified category could not be found.');
        } else {
           // Make sure the form knows which item we are deleting.
           $this->Form->AddHidden('CategoryID', $CategoryID);
           
           // Get a list of categories other than this one that can act as a replacement
           $this->OtherCategories = $this->CategoryModel->GetWhere(
              array(
                 'CategoryID <>' => $CategoryID,
                 'AllowDiscussions' => $this->Category->AllowDiscussions, // Don't allow a category with discussion to be the replacement for one without discussions (or vice versa)
                 'CategoryID >' => 0
              ),
              'Sort'
           );
           
           if (!$this->Form->AuthenticatedPostBack()) {
              $this->Form->SetFormValue('DeleteDiscussions', '1'); // Checked by default
           } else {
              $ReplacementCategoryID = $this->Form->GetValue('ReplacementCategoryID');
              $ReplacementCategory = $this->CategoryModel->GetID($ReplacementCategoryID);
              // Error if:
              // 1. The category being deleted is the last remaining category that
              // allows discussions.
              if ($this->Category->AllowDiscussions == '1'
                 && $this->OtherCategories->NumRows() == 0)
                 $this->Form->AddError('You cannot remove the only remaining category that allows discussions');
              
              /*
              // 2. The category being deleted allows discussions, and it contains
              // discussions, and there is no replacement category specified.
              if ($this->Form->ErrorCount() == 0
                 && $this->Category->AllowDiscussions == '1'
                 && $this->Category->CountDiscussions > 0
                 && ($ReplacementCategory == FALSE || $ReplacementCategory->AllowDiscussions != '1'))
                 $this->Form->AddError('You must select a replacement category in order to remove this category.');
              */
              
              // 3. The category being deleted does not allow discussions, and it
              // does contain other categories, and there are replacement parent
              // categories available, and one is not selected.
              /*
              if ($this->Category->AllowDiscussions == '0'
                 && $this->OtherCategories->NumRows() > 0
                 && !$ReplacementCategory) {
                 if ($this->CategoryModel->GetWhere(array('ParentCategoryID' => $CategoryID))->NumRows() > 0)
                    $this->Form->AddError('You must select a replacement category in order to remove this category.');
              }
              */
              
              if ($this->Form->ErrorCount() == 0) {
                 // Go ahead and delete the category
                 try {
                    $this->CategoryModel->Delete($this->Category, $this->Form->GetValue('ReplacementCategoryID'));
                 } catch (Exception $ex) {
                    $this->Form->AddError($ex);
                 }
                 if ($this->Form->ErrorCount() == 0) {
                    $this->RedirectUrl = Url('vanilla/settings/managecategories');
                    $this->InformMessage(T('Deleting category...'));
                 }
              }
           }
        }
        
        // Render default view
        $this->Render();
     }
code_tokens: public function DeleteCategory ( $ CategoryID = FALSE ) { // Check permission $ this -> Permission ( 'Garden.Settings.Manage' ) ; // Set up head $ this -> AddJsFile ( 'categories.js' ) ; $ this -> Title ( T ( 'Delete Category' ) ) ; $ this -> AddSideMenu ( 'vanilla/settings/managecategories' ) ; // Get category data $ this -> Category = $ this -> CategoryModel -> GetID ( $ CategoryID ) ; if ( ! $ this -> Category ) { $ this -> Form -> AddError ( 'The specified category could not be found.' ) ; } else { // Make sure the form knows which item we are deleting. $ this -> Form -> AddHidden ( 'CategoryID' , $ CategoryID ) ; // Get a list of categories other than this one that can act as a replacement $ this -> OtherCategories = $ this -> CategoryModel -> GetWhere ( array ( 'CategoryID <>' => $ CategoryID , 'AllowDiscussions' => $ this -> Category -> AllowDiscussions , // Don't allow a category with discussion to be the replacement for one without discussions (or vice versa) 'CategoryID >' => 0 ) , 'Sort' ) ; if ( ! $ this -> Form -> AuthenticatedPostBack ( ) ) { $ this -> Form -> SetFormValue ( 'DeleteDiscussions' , '1' ) ; // Checked by default } else { $ ReplacementCategoryID = $ this -> Form -> GetValue ( 'ReplacementCategoryID' ) ; $ ReplacementCategory = $ this -> CategoryModel -> GetID ( $ ReplacementCategoryID ) ; // Error if: // 1. The category being deleted is the last remaining category that // allows discussions. if ( $ this -> Category -> AllowDiscussions == '1' && $ this -> OtherCategories -> NumRows ( ) == 0 ) $ this -> Form -> AddError ( 'You cannot remove the only remaining category that allows discussions' ) ; /*
              // 2. The category being deleted allows discussions, and it contains
              // discussions, and there is no replacement category specified.
              if ($this->Form->ErrorCount() == 0
                 && $this->Category->AllowDiscussions == '1'
                 && $this->Category->CountDiscussions > 0
                 && ($ReplacementCategory == FALSE || $ReplacementCategory->AllowDiscussions != '1'))
                 $this->Form->AddError('You must select a replacement category in order to remove this category.');
              */ // 3. The category being deleted does not allow discussions, and it // does contain other categories, and there are replacement parent // categories available, and one is not selected. /*
              if ($this->Category->AllowDiscussions == '0'
                 && $this->OtherCategories->NumRows() > 0
                 && !$ReplacementCategory) {
                 if ($this->CategoryModel->GetWhere(array('ParentCategoryID' => $CategoryID))->NumRows() > 0)
                    $this->Form->AddError('You must select a replacement category in order to remove this category.');
              }
              */ if ( $ this -> Form -> ErrorCount ( ) == 0 ) { // Go ahead and delete the category try { $ this -> CategoryModel -> Delete ( $ this -> Category , $ this -> Form -> GetValue ( 'ReplacementCategoryID' ) ) ; } catch ( Exception $ ex ) { $ this -> Form -> AddError ( $ ex ) ; } if ( $ this -> Form -> ErrorCount ( ) == 0 ) { $ this -> RedirectUrl = Url ( 'vanilla/settings/managecategories' ) ; $ this -> InformMessage ( T ( 'Deleting category...' ) ) ; } } } } // Render default view $ this -> Render ( ) ; }
docstring: Deleting a category.
  
  @since 2.0.0
  @access public
  
  @param int $CategoryID Unique ID of the category to be deleted.
docstring_tokens: Deleting a category .