/** * RPC Routine to delete a question of a survey . * Returns the id of the deleted question. * * @access public * @param string $sSessionKey Auth credentials * @param int iQuestionID Id of the question to delete * @return array|int Id of the deleted Question or status */ public function delete_question($sSessionKey, $iQuestionID) { if ($this->_checkSessionKey($sSessionKey)) { $oQuestion = Questions::model()->findByAttributes(array('qid' => $iQuestionID)); if (!isset($oQuestion)) { return array('status' => 'Error: Invalid question ID'); } $iSurveyID = $oQuestion['sid']; if (hasSurveyPermission($iSurveyID, 'surveycontent', 'delete')) { $oSurvey = Survey::model()->findByPk($iSurveyID); if ($oSurvey['active'] == 'Y') { return array('status' => 'Survey is active and not editable'); } $iGroupID = $oQuestion['gid']; $oCondition = Conditions::model()->findAllByAttributes(array('cqid' => $iQuestionID)); if (count($oCondition) > 0) { return array('status' => 'Cannot delete Question. Others rely on this question'); } LimeExpressionManager::RevertUpgradeConditionsToRelevance(NULL, $iQuestionID); try { Conditions::model()->deleteAllByAttributes(array('qid' => $iQuestionID)); Question_attributes::model()->deleteAllByAttributes(array('qid' => $iQuestionID)); Answers::model()->deleteAllByAttributes(array('qid' => $iQuestionID)); $sCriteria = new CDbCriteria(); $sCriteria->addCondition('qid = :qid or parent_qid = :qid'); $sCriteria->params[':qid'] = $iQuestionID; Questions::model()->deleteAll($sCriteria); Defaultvalues::model()->deleteAllByAttributes(array('qid' => $iQuestionID)); Quota_members::model()->deleteAllByAttributes(array('qid' => $iQuestionID)); Questions::updateSortOrder($iGroupID, $iSurveyID); return (int) $iQuestionID; } catch (Exception $e) { return array('status' => 'Error'); } } else { return array('status' => 'No permission'); } } else { return array('status' => 'Invalid session key'); } }