本文整理匯總了PHP中killSurveySession函數的典型用法代碼示例。如果您正苦於以下問題:PHP killSurveySession函數的具體用法?PHP killSurveySession怎麽用?PHP killSurveySession使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了killSurveySession函數的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: run
//.........這裏部分代碼省略.........
//Automatically redirect the page to the "url" setting for the survey
header("Location: {$thissurvey['surveyls_url']}");
}
doHeader();
echo $content;
}
$redata['completed'] = $completed;
// @todo Remove direct session access.
$event = new PluginEvent('afterSurveyComplete');
if (isset($_SESSION[$LEMsessid]['srid'])) {
$event->set('responseId', $_SESSION[$LEMsessid]['srid']);
}
$event->set('surveyId', $surveyid);
App()->getPluginManager()->dispatchEvent($event);
$blocks = array();
foreach ($event->getAllContent() as $blockData) {
/* @var $blockData PluginEventContent */
$blocks[] = CHtml::tag('div', array('id' => $blockData->getCssId(), 'class' => $blockData->getCssClass()), $blockData->getContent());
}
$redata['completed'] = implode("\n", $blocks) . "\n" . $redata['completed'];
$redata['thissurvey']['surveyls_url'] = $thissurvey['surveyls_url'];
echo templatereplace(file_get_contents($sTemplateViewPath . "completed.pstpl"), array('completed' => $completed), $redata, 'SubmitCompleted', false, NULL, array(), true);
echo "\n";
if (($LEMdebugLevel & LEM_DEBUG_TIMING) == LEM_DEBUG_TIMING) {
echo LimeExpressionManager::GetDebugTimingMessage();
}
if (($LEMdebugLevel & LEM_DEBUG_VALIDATION_SUMMARY) == LEM_DEBUG_VALIDATION_SUMMARY) {
echo "<table><tr><td align='left'><b>Group/Question Validation Results:</b>" . $moveResult['message'] . "</td></tr></table>\n";
}
echo templatereplace(file_get_contents($sTemplateViewPath . "endpage.pstpl"), array(), $redata, 'SubmitEndpage', false, NULL, array(), true);
doFooter();
// The session cannot be killed until the page is completely rendered
if ($thissurvey['printanswers'] != 'Y') {
killSurveySession($surveyid);
}
exit;
}
}
$redata = compact(array_keys(get_defined_vars()));
// IF GOT THIS FAR, THEN DISPLAY THE ACTIVE GROUP OF QUESTIONSs
//SEE IF $surveyid EXISTS ####################################################################
if ($surveyExists < 1) {
//SURVEY DOES NOT EXIST. POLITELY EXIT.
echo templatereplace(file_get_contents($sTemplateViewPath . "startpage.pstpl"), array(), $redata);
echo "\t<center><br />\n";
echo "\t" . gT("Sorry. There is no matching survey.") . "<br /></center> \n";
echo templatereplace(file_get_contents($sTemplateViewPath . "endpage.pstpl"), array(), $redata);
doFooter();
exit;
}
createFieldMap($surveyid, 'full', false, false, $_SESSION[$LEMsessid]['s_lang']);
//GET GROUP DETAILS
if ($surveyMode == 'group' && $previewgrp) {
// setcookie("limesurvey_timers", "0"); //@todo fix - sometimes results in headers already sent error
$_gid = sanitize_int($param['gid']);
LimeExpressionManager::StartSurvey($thissurvey['sid'], 'group', $surveyOptions, false, $LEMdebugLevel);
$gseq = LimeExpressionManager::GetGroupSeq($_gid);
if ($gseq == -1) {
echo gT('Invalid group number for this survey: ') . $_gid;
exit;
}
$moveResult = LimeExpressionManager::JumpTo($gseq + 1, true);
if (is_null($moveResult)) {
echo gT('This group contains no questions. You must add questions to this group before you can preview it');
exit;
}
示例2: checkQuota
//.........這裏部分代碼省略.........
unset($fields_query_array);
unset($fields_value_array);
// Lets only continue if any of the quota fields is in the posted page
$matched_fields = false;
if (isset($_POST['fieldnames'])) {
$posted_fields = explode("|", $_POST['fieldnames']);
foreach ($fields_list as $checkfield) {
if (in_array($checkfield, $posted_fields)) {
$matched_fields = true;
$global_matched = true;
}
}
}
// A field was submitted that is part of the quota
if ($matched_fields == true) {
// Check the status of the quota, is it full or not
$sQuery = "SELECT count(id) FROM {{survey_" . $surveyid . "}}\n WHERE " . implode(' AND ', $querycond) . " " . "\n AND submitdate IS NOT NULL";
$iRowCount = Yii::app()->db->createCommand($sQuery)->queryScalar();
if ($iRowCount >= $quota['Limit']) {
// Now we have to check if the quota matches in the current session
// This will let us know if this person is going to exceed the quota
$counted_matches = 0;
foreach ($quota_info[$x]['members'] as $member) {
if (isset($member['insession']) && $member['insession'] == "true") {
$counted_matches++;
}
}
if ($counted_matches == count($quota['members'])) {
// They are going to exceed the quota if data is submitted
$quota_info[$x]['status'] = "matched";
} else {
$quota_info[$x]['status'] = "notmatched";
}
} else {
// Quota is no in danger of being exceeded.
$quota_info[$x]['status'] = "notmatched";
}
}
}
$x++;
}
} else {
return false;
}
// Now we have all the information we need about the quotas and their status.
// Lets see what we should do now
if ($checkaction == 'return') {
return $quota_info;
} elseif ($global_matched == true && $checkaction == 'enforce') {
// Need to add Quota action enforcement here.
reset($quota_info);
$tempmsg = "";
$found = false;
$redata = compact(array_keys(get_defined_vars()));
foreach ($quota_info as $quota) {
$quota['Message'] = templatereplace($quota['Message'], array(), $redata);
$quota['Url'] = passthruReplace($quota['Url'], $thissurvey);
$quota['Url'] = templatereplace($quota['Url'], array(), $redata);
$quota['UrlDescrip'] = templatereplace($quota['UrlDescrip'], array(), $redata);
if (isset($quota['status']) && $quota['status'] == "matched" && (isset($quota['Action']) && $quota['Action'] == "1")) {
// If a token is used then mark the token as completed
if (isset($clienttoken) && $clienttoken) {
submittokens(true);
}
sendCacheHeaders();
if ($quota['AutoloadUrl'] == 1 && $quota['Url'] != "") {
header("Location: " . $quota['Url']);
killSurveySession($surveyid);
}
doHeader();
echo templatereplace(file_get_contents($sTemplatePath . "/startpage.pstpl"), array(), $redata, 'frontend_helper[2617]');
echo "\t<div class='quotamessage'>\n";
echo "\t" . $quota['Message'] . "<br /><br />\n";
echo "\t<a href='" . $quota['Url'] . "'>" . $quota['UrlDescrip'] . "</a><br />\n";
echo "\t</div>\n";
echo templatereplace(file_get_contents($sTemplatePath . "/endpage.pstpl"), array(), $redata, 'frontend_helper[2622]');
doFooter();
killSurveySession($surveyid);
exit;
}
if (isset($quota['status']) && $quota['status'] == "matched" && (isset($quota['Action']) && $quota['Action'] == "2")) {
sendCacheHeaders();
doHeader();
$redata = compact(array_keys(get_defined_vars()));
echo templatereplace(file_get_contents($sTemplatePath . "/startpage.pstpl"), array(), $redata, 'frontend_helper[2634]');
echo "\t<div class='quotamessage'>\n";
echo "\t" . $quota['Message'] . "<br /><br />\n";
echo "\t<a href='" . $quota['Url'] . "'>" . $quota['UrlDescrip'] . "</a><br />\n";
echo CHtml::form(array("/survey/index"), 'post', array('id' => 'limesurvey', 'name' => 'limesurvey')) . "\n <input type='hidden' name='move' value='movenext' id='movenext' />\n <button class='nav-button nav-button-icon-left ui-corner-all' class='submit' accesskey='p' onclick=\"javascript:document.limesurvey.move.value = 'moveprev'; document.limesurvey.submit();\" id='moveprevbtn'>" . $clang->gT("Previous") . "</button>\n <input type='hidden' name='thisstep' value='" . $_SESSION['survey_' . $surveyid]['step'] . "' id='thisstep' />\n <input type='hidden' name='sid' value='" . returnGlobal('sid') . "' id='sid' />\n <input type='hidden' name='token' value='" . $clienttoken . "' id='token' />\n </form>\n";
echo "\t</div>\n";
echo templatereplace(file_get_contents($sTemplatePath . "/endpage.pstpl"), array(), $redata, 'frontend_helper[2644]');
doFooter();
exit;
}
}
} else {
// Unknown value
return false;
}
}
示例3: checkCompletedQuota
//.........這裏部分代碼省略.........
}
if ($iMatchedAnswers == count($aQuotaFields)) {
switch ($aQuotaCompleted['action']) {
case '1':
default:
$aMatchedQuotas[] = $aQuotaCompleted;
break;
case '2':
if ($bPostedField) {
// Action 2 allow to correct last answers, then need to be posted
$aMatchedQuotas[] = $aQuotaCompleted;
}
break;
}
}
}
}
if ($return) {
return $aMatchedQuotas;
}
if (empty($aMatchedQuotas)) {
return;
}
// Now we have all the information we need about the quotas and their status.
// We need to construct the page and do all needed action
$aSurveyInfo = getSurveyInfo($surveyid, $_SESSION['survey_' . $surveyid]['s_lang']);
$sTemplatePath = getTemplatePath($aSurveyInfo['templatedir']);
$sClientToken = isset($_SESSION['survey_' . $surveyid]['token']) ? $_SESSION['survey_' . $surveyid]['token'] : "";
// {TOKEN} is take by $redata ...
// $redata for templatereplace
$aDataReplacement = array('thissurvey' => $aSurveyInfo, 'clienttoken' => $sClientToken, 'token' => $sClientToken);
// We take only the first matched quota, no need for each
$aMatchedQuota = $aMatchedQuotas[0];
// If a token is used then mark the token as completed, do it before event : this allow plugin to update token information
$event = new PluginEvent('afterSurveyQuota');
$event->set('surveyId', $surveyid);
$event->set('responseId', $_SESSION['survey_' . $surveyid]['srid']);
// We allways have a responseId
$event->set('aMatchedQuotas', $aMatchedQuotas);
// Give all the matched quota : the first is the active
App()->getPluginManager()->dispatchEvent($event);
$blocks = array();
foreach ($event->getAllContent() as $blockData) {
/* @var $blockData PluginEventContent */
$blocks[] = CHtml::tag('div', array('id' => $blockData->getCssId(), 'class' => $blockData->getCssClass()), $blockData->getContent());
}
// Allow plugin to update message, url, url description and action
$sMessage = $event->get('message', $aMatchedQuota['quotals_message']);
$sUrl = $event->get('url', $aMatchedQuota['quotals_url']);
$sUrlDescription = $event->get('urldescrip', $aMatchedQuota['quotals_urldescrip']);
$sAction = $event->get('action', $aMatchedQuota['action']);
$sAutoloadUrl = $event->get('autoloadurl', $aMatchedQuota['autoload_url']);
// Construct the default message
$sMessage = templatereplace($sMessage, array(), $aDataReplacement, 'QuotaMessage', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
$sUrl = passthruReplace($sUrl, $aSurveyInfo);
$sUrl = templatereplace($sUrl, array(), $aDataReplacement, 'QuotaUrl', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
$sUrlDescription = templatereplace($sUrlDescription, array(), $aDataReplacement, 'QuotaUrldescription', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
// Doing the action and show the page
if ($sAction == "1" && $sClientToken) {
submittokens(true);
}
// Construction of default message inside quotamessage class
$quotaMessage = "<div class='quotamessage limesurveycore'>\n";
$quotaMessage .= "\t" . $sMessage . "\n";
if ($sUrl) {
$quotaMessage .= "<br /><br />\t<a href='" . $sUrl . "'>" . $sUrlDescription . "</a><br />\n";
}
// Add the navigator with Previous button if quota allow modification.
if ($sAction == "2") {
$sQuotaStep = isset($_SESSION['survey_' . $surveyid]['step']) ? $_SESSION['survey_' . $surveyid]['step'] : 0;
// Surely not needed
$sNavigator = CHtml::htmlButton(gT("Previous"), array('type' => 'submit', 'id' => "moveprevbtn", 'value' => $sQuotaStep, 'name' => 'move', 'accesskey' => 'p', 'class' => "submit button"));
$quotaMessage .= CHtml::form(array("/survey/index"), 'post', array('id' => 'limesurvey', 'name' => 'limesurvey'));
$quotaMessage .= templatereplace(file_get_contents($sTemplatePath . "/navigator.pstpl"), array('NAVIGATOR' => $sNavigator, 'SAVE' => ''), $aDataReplacement);
$quotaMessage .= CHtml::hiddenField('sid', $surveyid);
$quotaMessage .= CHtml::hiddenField('token', $sClientToken);
// Did we really need it ?
$quotaMessage .= CHtml::endForm();
}
$quotaMessage .= "</div>\n";
// Add the plugin message before default message
$quotaMessage = implode("\n", $blocks) . "\n" . $quotaMessage;
// Send page to user and end.
sendCacheHeaders();
if ($sAutoloadUrl == 1 && $sUrl != "") {
if ($sAction == "1") {
killSurveySession($surveyid);
}
header("Location: " . $sUrl);
}
doHeader();
echo templatereplace(file_get_contents($sTemplatePath . "/startpage.pstpl"), array(), $aDataReplacement);
echo $quotaMessage;
echo templatereplace(file_get_contents($sTemplatePath . "/endpage.pstpl"), array(), $aDataReplacement);
doFooter();
if ($sAction == "1") {
killSurveySession($surveyid);
}
Yii::app()->end();
}
示例4: checkCompletedQuota
//.........這裏部分代碼省略.........
}
// Condition to count quota : Answers are the same in quota + an answer is submitted at this time (bPostedField) OR all questions is hidden (bAllHidden)
$bAllHidden = QuestionAttribute::model()->countByAttributes(array('qid' => $aQuotaQid), 'attribute=:attribute', array(':attribute' => 'hidden')) == count($aQuotaQid);
if ($iMatchedAnswers == count($aQuotaFields) && ($bPostedField || $bAllHidden)) {
if ($aQuotaInfo['qlimit'] == 0) {
// Always add the quota if qlimit==0
$aMatchedQuotas[] = $aQuotaInfo;
} else {
$iCompleted = getQuotaCompletedCount($surveyid, $aQuotaInfo['id']);
if (!is_null($iCompleted) && (int) $iCompleted >= (int) $aQuotaInfo['qlimit']) {
// This remove invalid quota and not completed
$aMatchedQuotas[] = $aQuotaInfo;
}
}
}
}
}
if ($return) {
return $aMatchedQuotas;
}
if (empty($aMatchedQuotas)) {
return;
}
// Now we have all the information we need about the quotas and their status.
// We need to construct the page and do all needed action
$aSurveyInfo = getSurveyInfo($surveyid, $_SESSION['survey_' . $surveyid]['s_lang']);
$oTemplate = Template::model()->getInstance('', $surveyid);
$sTemplatePath = $oTemplate->path;
$sTemplateViewPath = $oTemplate->viewPath;
$sClientToken = isset($_SESSION['survey_' . $surveyid]['token']) ? $_SESSION['survey_' . $surveyid]['token'] : "";
// $redata for templatereplace
$aDataReplacement = array('thissurvey' => $aSurveyInfo, 'clienttoken' => $sClientToken, 'token' => $sClientToken);
// We take only the first matched quota, no need for each
$aMatchedQuota = $aMatchedQuotas[0];
// If a token is used then mark the token as completed, do it before event : this allow plugin to update token information
$event = new PluginEvent('afterSurveyQuota');
$event->set('surveyId', $surveyid);
$event->set('responseId', $_SESSION['survey_' . $surveyid]['srid']);
// We allways have a responseId
$event->set('aMatchedQuotas', $aMatchedQuotas);
// Give all the matched quota : the first is the active
App()->getPluginManager()->dispatchEvent($event);
$blocks = array();
foreach ($event->getAllContent() as $blockData) {
/* @var $blockData PluginEventContent */
$blocks[] = CHtml::tag('div', array('id' => $blockData->getCssId(), 'class' => $blockData->getCssClass()), $blockData->getContent());
}
// Allow plugin to update message, url, url description and action
$sMessage = $event->get('message', $aMatchedQuota['quotals_message']);
$sUrl = $event->get('url', $aMatchedQuota['quotals_url']);
$sUrlDescription = $event->get('urldescrip', $aMatchedQuota['quotals_urldescrip']);
$sAction = $event->get('action', $aMatchedQuota['action']);
$sAutoloadUrl = $event->get('autoloadurl', $aMatchedQuota['autoload_url']);
// Doing the action and show the page
if ($sAction == "1" && $sClientToken) {
submittokens(true);
}
// Construct the default message
$sMessage = templatereplace($sMessage, array(), $aDataReplacement, 'QuotaMessage', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
$sUrl = passthruReplace($sUrl, $aSurveyInfo);
$sUrl = templatereplace($sUrl, array(), $aDataReplacement, 'QuotaUrl', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
$sUrlDescription = templatereplace($sUrlDescription, array(), $aDataReplacement, 'QuotaUrldescription', $aSurveyInfo['anonymized'] != 'N', NULL, array(), true);
// Construction of default message inside quotamessage class
$sHtmlQuotaMessage = "<div class='quotamessage limesurveycore'>\n";
$sHtmlQuotaMessage .= "\t" . $sMessage . "\n";
$sHtmlQuotaUrl = $sUrl ? "<a href='" . $sUrl . "'>" . $sUrlDescription . "</a>" : "";
// Add the navigator with Previous button if quota allow modification.
if ($sAction == "2") {
$sQuotaStep = isset($_SESSION['survey_' . $surveyid]['step']) ? $_SESSION['survey_' . $surveyid]['step'] : 0;
// Surely not needed
$sNavigator = CHtml::htmlButton(gT("Previous"), array('type' => 'submit', 'id' => "moveprevbtn", 'value' => $sQuotaStep, 'name' => 'move', 'accesskey' => 'p', 'class' => "submit button btn btn-default"));
//$sNavigator .= " ".CHtml::htmlButton(gT("Submit"),array('type'=>'submit','id'=>"movesubmit",'value'=>"movesubmit",'name'=>"movesubmit",'accesskey'=>'l','class'=>"submit button"));
$sHtmlQuotaMessage .= CHtml::form(array("/survey/index", "sid" => $surveyid), 'post', array('id' => 'limesurvey', 'name' => 'limesurvey', 'class' => 'survey-form-container QuotaMessage'));
$sHtmlQuotaMessage .= templatereplace(file_get_contents($sTemplateViewPath . "/navigator.pstpl"), array('NAVIGATOR' => $sNavigator, 'SAVE' => ''), $aDataReplacement);
$sHtmlQuotaMessage .= CHtml::hiddenField('sid', $surveyid);
$sHtmlQuotaMessage .= CHtml::hiddenField('token', $sClientToken);
// Did we really need it ?
$sHtmlQuotaMessage .= CHtml::endForm();
}
$sHtmlQuotaMessage .= "</div>\n";
// Add the plugin message before default message
$sHtmlQuotaMessage = implode("\n", $blocks) . "\n" . $sHtmlQuotaMessage;
// Send page to user and end.
sendCacheHeaders();
if ($sAutoloadUrl == 1 && $sUrl != "") {
if ($sAction == "1") {
killSurveySession($surveyid);
}
header("Location: " . $sUrl);
}
doHeader();
echo templatereplace(file_get_contents($sTemplateViewPath . "/startpage.pstpl"), array(), $aDataReplacement);
echo templatereplace(file_get_contents($sTemplateViewPath . "/completed.pstpl"), array("COMPLETED" => $sHtmlQuotaMessage, "URL" => $sHtmlQuotaUrl), $aDataReplacement);
echo templatereplace(file_get_contents($sTemplateViewPath . "/endpage.pstpl"), array(), $aDataReplacement);
doFooter();
if ($sAction == "1") {
killSurveySession($surveyid);
}
Yii::app()->end();
}
示例5: _createNewUserSessionAndRedirect
function _createNewUserSessionAndRedirect($surveyid, &$redata, $iDebugLine, $asMessage = array())
{
killSurveySession($surveyid);
$thissurvey = getSurveyInfo($surveyid);
if ($thissurvey) {
$templatename = $thissurvey['template'];
} else {
$templatename = Yii::app()->getConfig('defaulttemplate');
}
// Let's redirect the client to the same URL after having reset the session
$this->_niceExit($redata, $iDebugLine, $templatename, $asMessage);
}
示例6: run
//.........這裏部分代碼省略.........
//*****************************************
if ($thissurvey['publicstatistics'] == 'Y' && $thissurvey['printanswers'] == 'Y') {
$completed .= '<br />' . $clang->gT("or");
}
// Link to Public statistics **********
if ($thissurvey['publicstatistics'] == 'Y') {
$url = Yii::app()->getController()->createUrl("statistics_user/action/surveyid/{$surveyid}/language/" . $_SESSION[$LEMsessid]['s_lang']);
$completed .= "<br /><br />" . "<a class='publicstatisticslink' href='{$url}' target='_blank'>" . $clang->gT("View the statistics for this survey.") . "</a><br />\n";
}
//*****************************************
$_SESSION[$LEMsessid]['finished'] = true;
$_SESSION[$LEMsessid]['sid'] = $surveyid;
sendCacheHeaders();
if (isset($thissurvey['autoredirect']) && $thissurvey['autoredirect'] == "Y" && $thissurvey['surveyls_url']) {
//Automatically redirect the page to the "url" setting for the survey
header("Location: {$thissurvey['surveyls_url']}");
}
doHeader();
echo $content;
}
$redata['completed'] = $completed;
echo templatereplace(file_get_contents($sTemplatePath . "completed.pstpl"), array('completed' => $completed), $redata);
echo "\n<br />\n";
if (($LEMdebugLevel & LEM_DEBUG_TIMING) == LEM_DEBUG_TIMING) {
echo LimeExpressionManager::GetDebugTimingMessage();
}
if (($LEMdebugLevel & LEM_DEBUG_VALIDATION_SUMMARY) == LEM_DEBUG_VALIDATION_SUMMARY) {
echo "<table><tr><td align='left'><b>Group/Question Validation Results:</b>" . $moveResult['message'] . "</td></tr></table>\n";
}
echo templatereplace(file_get_contents($sTemplatePath . "endpage.pstpl"));
doFooter();
// The session cannot be killed until the page is completely rendered
if ($thissurvey['printanswers'] != 'Y') {
killSurveySession($surveyid);
}
exit;
}
}
$redata = compact(array_keys(get_defined_vars()));
// IF GOT THIS FAR, THEN DISPLAY THE ACTIVE GROUP OF QUESTIONSs
//SEE IF $surveyid EXISTS ####################################################################
if ($surveyExists < 1) {
//SURVEY DOES NOT EXIST. POLITELY EXIT.
echo templatereplace(file_get_contents($sTemplatePath . "startpage.pstpl"), array(), $redata);
echo "\t<center><br />\n";
echo "\t" . $clang->gT("Sorry. There is no matching survey.") . "<br /></center> \n";
echo templatereplace(file_get_contents($sTemplatePath . "endpage.pstpl"), array(), $redata);
doFooter();
exit;
}
createFieldMap($surveyid, 'full', false, false, $_SESSION[$LEMsessid]['s_lang']);
//GET GROUP DETAILS
if ($surveyMode == 'group' && $previewgrp) {
// setcookie("limesurvey_timers", "0"); //@todo fix - sometimes results in headers already sent error
$_gid = sanitize_int($param['gid']);
LimeExpressionManager::StartSurvey($thissurvey['sid'], 'group', $surveyOptions, false, $LEMdebugLevel);
$gseq = LimeExpressionManager::GetGroupSeq($_gid);
if ($gseq == -1) {
echo $clang->gT('Invalid group number for this survey: ') . $_gid;
exit;
}
$moveResult = LimeExpressionManager::JumpTo($gseq + 1, true);
if (is_null($moveResult)) {
echo $clang->gT('This group contains no questions. You must add questions to this group before you can preview it');
exit;
}
示例7: _createNewUserSessionAndRedirect
function _createNewUserSessionAndRedirect($surveyId, &$redata, $iDebugLine, $asMessage = array())
{
$clang = Yii::app()->lang;
killSurveySession($surveyId);
// Let's redirect the client to the same URL after having reset the session
$this->_niceExit($redata, $iDebugLine, null, $asMessage);
}
示例8: deactivate
/**
* Function responsible to deactivate a survey.
*
* @access public
* @param int $iSurveyID
* @return void
*/
public function deactivate($iSurveyID = null)
{
$iSurveyID = Yii::app()->request->getPost('sid', $iSurveyID);
$iSurveyID = sanitize_int($iSurveyID);
$date = date('YmdHis');
//'His' adds 24hours+minutes to name to allow multiple deactiviations in a day
$aData = array();
$aData['aSurveysettings'] = getSurveyInfo($iSurveyID);
$aData['surveyid'] = $iSurveyID;
$surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo;
$aData['title_bar']['title'] = $surveyinfo['surveyls_title'] . "(" . gT("ID") . ":" . $iSurveyID . ")";
$aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/' . $iSurveyID;
if (empty($_POST['ok'])) {
if (!tableExists('survey_' . $iSurveyID)) {
$_SESSION['flashmessage'] = gT("Error: Response table does not exist. Survey cannot be deactivated.");
$this->getController()->redirect($this->getController()->createUrl("admin/survey/sa/view/surveyid/{$iSurveyID}"));
}
$aData['surveyid'] = $iSurveyID;
$aData['date'] = $date;
$aData['dbprefix'] = Yii::app()->db->tablePrefix;
$aData['step1'] = true;
} else {
//See if there is a tokens table for this survey
if (tableExists("{{tokens_{$iSurveyID}}}")) {
$toldtable = Yii::app()->db->tablePrefix . "tokens_{$iSurveyID}";
$tnewtable = Yii::app()->db->tablePrefix . "old_tokens_{$iSurveyID}_{$date}";
if (Yii::app()->db->getDriverName() == 'pgsql') {
$tidDefault = Yii::app()->db->createCommand("SELECT pg_attrdef.adsrc FROM pg_attribute JOIN pg_class ON (pg_attribute.attrelid=pg_class.oid) JOIN pg_attrdef ON(pg_attribute.attrelid=pg_attrdef.adrelid AND pg_attribute.attnum=pg_attrdef.adnum) WHERE pg_class.relname='{$toldtable}' and pg_attribute.attname='tid'")->queryScalar();
if (preg_match("/nextval\\('(tokens_\\d+_tid_seq\\d*)'::regclass\\)/", $tidDefault, $matches)) {
$oldSeq = $matches[1];
$deactivateresult = Yii::app()->db->createCommand()->renameTable($oldSeq, $tnewtable . '_tid_seq');
$setsequence = "ALTER TABLE " . Yii::app()->db->quoteTableName($toldtable) . " ALTER COLUMN tid SET DEFAULT nextval('{$tnewtable}_tid_seq'::regclass);";
$deactivateresult = Yii::app()->db->createCommand($setsequence)->query();
}
}
$tdeactivateresult = Yii::app()->db->createCommand()->renameTable($toldtable, $tnewtable);
$aData['tnewtable'] = $tnewtable;
$aData['toldtable'] = $toldtable;
// Reset the session of the survey when deactivating it
killSurveySession($iSurveyID);
}
//Remove any survey_links to the CPDB
SurveyLink::model()->deleteLinksBySurvey($iSurveyID);
// IF there are any records in the saved_control table related to this survey, they have to be deleted
$result = SavedControl::model()->deleteSomeRecords(array('sid' => $iSurveyID));
//Yii::app()->db->createCommand($query)->query();
$sOldSurveyTableName = Yii::app()->db->tablePrefix . "survey_{$iSurveyID}";
$sNewSurveyTableName = Yii::app()->db->tablePrefix . "old_survey_{$iSurveyID}_{$date}";
$aData['sNewSurveyTableName'] = $sNewSurveyTableName;
//Update the autonumber_start in the survey properties
$new_autonumber_start = 0;
$query = "SELECT id FROM " . Yii::app()->db->quoteTableName($sOldSurveyTableName) . " ORDER BY id desc";
$sLastID = Yii::app()->db->createCommand($query)->limit(1)->queryScalar();
$new_autonumber_start = $sLastID + 1;
$insertdata = array('autonumber_start' => $new_autonumber_start);
$survey = Survey::model()->findByAttributes(array('sid' => $iSurveyID));
$survey->autonumber_start = $new_autonumber_start;
$survey->save();
if (Yii::app()->db->getDriverName() == 'pgsql') {
$idDefault = Yii::app()->db->createCommand("SELECT pg_attrdef.adsrc FROM pg_attribute JOIN pg_class ON (pg_attribute.attrelid=pg_class.oid) JOIN pg_attrdef ON(pg_attribute.attrelid=pg_attrdef.adrelid AND pg_attribute.attnum=pg_attrdef.adnum) WHERE pg_class.relname='{$sOldSurveyTableName}' and pg_attribute.attname='id'")->queryScalar();
if (preg_match("/nextval\\('(survey_\\d+_id_seq\\d*)'::regclass\\)/", $idDefault, $matches)) {
$oldSeq = $matches[1];
$deactivateresult = Yii::app()->db->createCommand()->renameTable($oldSeq, $sNewSurveyTableName . '_id_seq');
$setsequence = "ALTER TABLE " . Yii::app()->db->quoteTableName($sOldSurveyTableName) . " ALTER COLUMN id SET DEFAULT nextval('{{{$sNewSurveyTableName}}}_id_seq'::regclass);";
$deactivateresult = Yii::app()->db->createCommand($setsequence)->query();
}
}
$deactivateresult = Yii::app()->db->createCommand()->renameTable($sOldSurveyTableName, $sNewSurveyTableName);
$insertdata = array('active' => 'N');
$survey->active = 'N';
$survey->save();
$prow = Survey::model()->find('sid = :sid', array(':sid' => $iSurveyID));
if ($prow->savetimings == "Y") {
$sOldTimingsTableName = Yii::app()->db->tablePrefix . "survey_{$iSurveyID}_timings";
$sNewTimingsTableName = Yii::app()->db->tablePrefix . "old_survey_{$iSurveyID}_timings_{$date}";
$deactivateresult2 = Yii::app()->db->createCommand()->renameTable($sOldTimingsTableName, $sNewTimingsTableName);
$deactivateresult = $deactivateresult && $deactivateresult2;
$aData['sNewTimingsTableName'] = $sNewTimingsTableName;
}
$aData['surveyid'] = $iSurveyID;
Yii::app()->db->schema->refresh();
}
$this->_renderWrappedTemplate('survey', 'deactivateSurvey_view', $aData);
}