public function runAddGroup(TBGRequest $request)
 {
     try {
         $mode = $request->getParameter('mode');
         if ($group_name = $request->getParameter('group_name')) {
             if ($mode == 'clone') {
                 try {
                     $old_group = TBGContext::factory()->TBGGroup($request->getParameter('group_id'));
                 } catch (Exception $e) {
                 }
                 if (!$old_group instanceof TBGGroup) {
                     throw new Exception(TBGContext::getI18n()->__("You cannot clone this group"));
                 }
             }
             if (TBGGroup::doesGroupNameExist(trim($group_name))) {
                 throw new Exception(TBGContext::getI18n()->__("Please enter a group name that doesn't already exist"));
             }
             $group = new TBGGroup();
             $group->setName($group_name);
             $group->save();
             if ($mode == 'clone') {
                 if ($request->getParameter('clone_permissions')) {
                     TBGPermissionsTable::getTable()->cloneGroupPermissions($old_group->getID(), $group->getID());
                 }
                 $message = TBGContext::getI18n()->__('The group was cloned');
             } else {
                 $message = TBGContext::getI18n()->__('The group was added');
             }
             return $this->renderJSON(array('failed' => false, 'message' => $message, 'content' => $this->getTemplateHTML('configuration/groupbox', array('group' => $group))));
         } else {
             throw new Exception(TBGContext::getI18n()->__('Please enter a group name'));
         }
     } catch (Exception $e) {
         $this->getResponse()->setHttpStatus(400);
         return $this->renderJSON(array('failed' => true, 'error' => $e->getMessage()));
     }
 }