/** * RPC Routine to delete a group of a survey . * Returns the id of the deleted group. * * @access public * @param string $sSessionKey Auth credentials * @param int $iSurveyID Id of the survey that the group belongs * @param int $iGroupID Id of the group to delete * @return array|int The id of the deleted group or status */ public function delete_group($sSessionKey, $iSurveyID, $iGroupID) { if ($this->_checkSessionKey($sSessionKey)) { $iSurveyID = sanitize_int($iSurveyID); $iGroupID = sanitize_int($iGroupID); $oSurvey = Survey::model()->findByPk($iSurveyID); if (!isset($oSurvey)) { return array('status' => 'Error: Invalid survey ID'); } if (Permission::model()->hasSurveyPermission($iSurveyID, 'surveycontent', 'delete')) { $oGroup = QuestionGroup::model()->findByAttributes(array('gid' => $iGroupID)); if (!isset($oGroup)) { return array('status' => 'Error: Invalid group ID'); } if ($oSurvey['active'] == 'Y') { return array('status' => 'Error:Survey is active and not editable'); } $depented_on = getGroupDepsForConditions($oGroup->sid, "all", $iGroupID, "by-targgid"); if (isset($depented_on)) { return array('status' => 'Group with depencdencies - deletion not allowed'); } $iGroupsDeleted = QuestionGroup::deleteWithDependency($iGroupID, $iSurveyID); if ($iGroupsDeleted === 1) { fixSortOrderGroups($iSurveyID); return (int) $iGroupID; } else { return array('status' => 'Group deletion failed'); } } else { return array('status' => 'No permission'); } } else { return array('status' => 'Invalid Session Key'); } }
/** * Action to delete a question group. * * @access public * @return void */ public function delete($iSurveyId, $iGroupId) { $iSurveyId = sanitize_int($iSurveyId); if (Permission::model()->hasSurveyPermission($iSurveyId, 'surveycontent', 'delete')) { LimeExpressionManager::RevertUpgradeConditionsToRelevance($iSurveyId); $iGroupId = sanitize_int($iGroupId); $iGroupsDeleted = QuestionGroup::deleteWithDependency($iGroupId, $iSurveyId); if ($iGroupsDeleted > 0) { fixSortOrderGroups($iSurveyId); Yii::app()->setFlashMessage(gT('The question group was deleted.')); } else { Yii::app()->setFlashMessage(gT('Group could not be deleted'), 'error'); } LimeExpressionManager::UpgradeConditionsToRelevance($iSurveyId); $this->getController()->redirect(array('admin/survey/sa/view/surveyid/' . $iSurveyId)); } }