/** * Action for deleting an instance */ public function deleteQuestionnaireAction() { $session = new Zend_Session_Namespace('login'); $questionnaireID = $session->dataQuestionnaireID; if (!isset($questionnaireID)) { $this->_redirector->gotoRouteAndExit(array('action' => 'index')); } $questionnaire = new QuestionnaireModel(array('questionnaireID' => $questionnaireID, 'depth' => 'questionnaire')); $questionnaire->delete(); unset($session->dataQuestionnaireID); $this->flash('notice', 'Deletion Complete'); $this->_redirector->gotoRoute(array('action' => 'index')); }
/** * Generates a signature for an questionnaire definition * * @param questionnaire definition xml dom object * @return string md5 hash */ public static function generateSignature($dom) { $questionnaireID = QuestionnaireModel::importXML($dom, array('SkipQuestionnaireExistCheck' => 1, 'SkipFileAttachments' => 1)); $instanceID = InstanceModel::importXML($dom, '_generateSignature', array('questionnaireID' => $questionnaireID)); $instance = new InstanceModel(array('instanceID' => $instanceID, 'depth' => 'instance')); $questionnaire = new QuestionnaireModel(array('questionnaireID' => $questionnaireID, 'depth' => 'questionnaire')); $signature = md5($instance->toXML(1)); $instance->delete(); $questionnaire->delete(); return $signature; }
public function testDeletingRemovesHiddenInstances() { $this->auth(); $xml = file_get_contents(PROJECT_PATH . "/test/data/xml/test1-questionnaire-definition.xml"); QuestionnaireModel::importXML($xml); $questionnaire = new QuestionnaireModel(array('questionnaireName' => 'Test1 Questionnaire', 'questionnaireVersion' => '3.00', 'revision' => 1, 'depth' => 'instance')); $instanceID = $questionnaire->getDefaultInstance()->instanceID; $questionnaire->delete(); QFrame_Db_Table::resetAll(); try { new InstanceModel(array('instanceID' => $instanceID)); } catch (Exception $e) { $this->assertTrue(preg_match('/^Instance not found/', $e->getMessage()) > 0); return; } $this->fail('Fetching hidden instance after questionnaire deletion should throw an exception'); }