本文整理汇总了PHP中SurveyDynamic::save方法的典型用法代码示例。如果您正苦于以下问题:PHP SurveyDynamic::save方法的具体用法?PHP SurveyDynamic::save怎么用?PHP SurveyDynamic::save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SurveyDynamic
的用法示例。
在下文中一共展示了SurveyDynamic::save方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: insert
/**
* dataentry::insert()
* insert new dataentry
* @return
*/
public function insert()
{
$subaction = Yii::app()->request->getPost('subaction');
$surveyid = Yii::app()->request->getPost('sid');
$lang = isset($_POST['lang']) ? Yii::app()->request->getPost('lang') : NULL;
$aData = array('surveyid' => $surveyid, 'lang' => $lang);
if (Permission::model()->hasSurveyPermission($surveyid, 'responses', 'create')) {
if ($subaction == "insert" && Permission::model()->hasSurveyPermission($surveyid, 'responses', 'create')) {
$surveytable = "{{survey_{$surveyid}}}";
$thissurvey = getSurveyInfo($surveyid);
$errormsg = "";
Yii::app()->loadHelper("database");
$aViewUrls['display']['menu_bars']['browse'] = gT("Data entry");
$aDataentryoutput = '';
$aDataentrymsgs = array();
$hiddenfields = '';
$lastanswfortoken = '';
// check if a previous answer has been submitted or saved
$rlanguage = '';
if (Yii::app()->request->getPost('token') && Permission::model()->hasSurveyPermission($surveyid, 'tokens', 'update')) {
$tokencompleted = "";
$tcquery = "SELECT completed from {{tokens_{$surveyid}}} WHERE token=" . dbQuoteAll($_POST['token']);
$tcresult = dbExecuteAssoc($tcquery);
$tcresult = $tcresult->readAll();
$tccount = count($tcresult);
foreach ($tcresult as $tcrow) {
$tokencompleted = $tcrow['completed'];
}
if ($tccount < 1) {
// token doesn't exist in token table
$lastanswfortoken = 'UnknownToken';
} elseif ($thissurvey['anonymized'] == "Y") {
// token exist but survey is anonymous, check completed state
if ($tokencompleted != "" && $tokencompleted != "N") {
// token is completed
$lastanswfortoken = 'PrivacyProtected';
}
} else {
// token is valid, survey not anonymous, try to get last recorded response id
$aquery = "SELECT id,startlanguage FROM {$surveytable} WHERE token=" . dbQuoteAll($_POST['token']);
$aresult = dbExecuteAssoc($aquery);
foreach ($aresult->readAll() as $arow) {
if ($tokencompleted != "N") {
$lastanswfortoken = $arow['id'];
}
$rlanguage = $arow['startlanguage'];
}
}
}
// First Check if the survey uses tokens and if a token has been provided
if (tableExists('{{tokens_' . $thissurvey['sid'] . '}}') && !$_POST['token']) {
$errormsg = CHtml::tag('div', array('class' => 'warningheader'), gT("Error"));
$errormsg .= CHtml::tag('p', array(), gT("This is a closed-access survey, so you must supply a valid token. Please contact the administrator for assistance."));
} elseif (tableExists('{{tokens_' . $thissurvey['sid'] . '}}') && $lastanswfortoken == 'UnknownToken') {
$errormsg = CHtml::tag('div', array('class' => 'warningheader'), gT("Error"));
$errormsg .= CHtml::tag('p', array(), gT("The token you have provided is not valid or has already been used."));
} elseif (tableExists('{{tokens_' . $thissurvey['sid'] . '}}') && $lastanswfortoken != '') {
$errormsg = CHtml::tag('div', array('class' => 'warningheader'), gT("Error"));
$errormsg .= CHtml::tag('p', array(), gT("There is already a recorded answer for this token"));
if ($lastanswfortoken != 'PrivacyProtected') {
$errormsg .= "<br /><br />" . gT("Follow the following link to update it") . ":\n";
$errormsg .= CHtml::link("[id:{$lastanswfortoken}]", $this->getController()->createUrl('/admin/dataentry/sa/editdata/subaction/edit/id/' . $lastanswfortoken . '/surveyid/' . $surveyid . '/lang/' . $rlanguage), array('title' => gT("Edit this entry")));
$errormsg .= "<br/><br/>";
} else {
$errormsg .= "<br /><br />" . gT("This surveys uses anonymized responses, so you can't update your response.") . "\n";
}
} else {
$last_db_id = 0;
if (isset($_POST['save']) && $_POST['save'] == "on") {
$aData['save'] = TRUE;
$saver['identifier'] = $_POST['save_identifier'];
$saver['language'] = $_POST['save_language'];
$saver['password'] = $_POST['save_password'];
$saver['passwordconfirm'] = $_POST['save_confirmpassword'];
$saver['email'] = $_POST['save_email'];
if (!returnGlobal('redo')) {
$password = md5($saver['password']);
} else {
$password = $saver['password'];
}
$errormsg = "";
if (!$saver['identifier']) {
$errormsg .= gT("Error") . ": " . gT("You must supply a name for this saved session.");
}
if (!$saver['password']) {
$errormsg .= gT("Error") . ": " . gT("You must supply a password for this saved session.");
}
if ($saver['password'] != $saver['passwordconfirm']) {
$errormsg .= gT("Error") . ": " . gT("Your passwords do not match.");
}
$aData['errormsg'] = $errormsg;
if ($errormsg) {
foreach ($_POST as $key => $val) {
if (substr($key, 0, 4) != "save" && $key != "action" && $key != "sid" && $key != "datestamp" && $key != "ipaddr") {
$hiddenfields .= CHtml::hiddenField($key, $val);
//.........这里部分代码省略.........
示例2: CSVImportResponses
//.........这里部分代码省略.........
} else {
SurveyDynamic::sid($iSurveyId);
$oSurvey = new SurveyDynamic();
}
} else {
SurveyDynamic::sid($iSurveyId);
$oSurvey = new SurveyDynamic();
}
if ($oSurvey) {
// First rule for id and submitdate
if (is_int($iIdKey)) {
if (!$bExistingsId) {
$oSurvey->id = $aResponses[$iIdKey];
$iMaxId = $aResponses[$iIdKey] > $iMaxId ? $aResponses[$iIdKey] : $iMaxId;
} elseif ($aOptions['sExistingId'] == 'replace' || $aOptions['sExistingId'] == 'replaceanswers') {
$oSurvey->id = $aResponses[$iIdKey];
}
}
if ($aOptions['bNotFinalized']) {
$oSurvey->submitdate = new CDbExpression('NULL');
} elseif (is_int($iSubmitdateKey)) {
if ($aResponses[$iSubmitdateKey] == '{question_not_shown}' || trim($aResponses[$iSubmitdateKey] == '')) {
$oSurvey->submitdate = new CDbExpression('NULL');
} else {
// Maybe control valid date : see http://php.net/manual/en/function.checkdate.php#78362 for example
$oSurvey->submitdate = $aResponses[$iSubmitdateKey];
}
}
foreach ($aKeyForFieldNames as $sFieldName => $iFieldKey) {
if ($aResponses[$iFieldKey] == '{question_not_shown}') {
$oSurvey->{$sFieldName} = new CDbExpression('NULL');
} else {
$sResponse = str_replace(array("{quote}", "{tab}", "{cr}", "{newline}", "{lbrace}"), array("\"", "\t", "\r", "\n", "{"), $aResponses[$iFieldKey]);
$oSurvey->{$sFieldName} = $sResponse;
}
}
// We use transaction to prevent DB error
$oTransaction = Yii::app()->db->beginTransaction();
try {
if (isset($oSurvey->id) && !is_null($oSurvey->id)) {
switchMSSQLIdentityInsert('survey_' . $iSurveyId, true);
$bSwitched = true;
}
if ($oSurvey->save()) {
$oTransaction->commit();
if ($bExistingsId && $aOptions['sExistingId'] != 'renumber') {
$aResponsesUpdated[] = $aResponses[$iIdReponsesKey];
} else {
$aResponsesInserted[] = $aResponses[$iIdReponsesKey];
}
} else {
$oTransaction->rollBack();
$aResponsesError[] = $aResponses[$iIdReponsesKey];
}
if (isset($bSwitched) && $bSwitched == true) {
switchMSSQLIdentityInsert('survey_' . $iSurveyId, false);
$bSwitched = false;
}
} catch (Exception $oException) {
$oTransaction->rollBack();
$aResponsesError[] = $aResponses[$iIdReponsesKey];
// Show some error to user ?
// $CSVImportResult['errors'][]=$oException->getMessage(); // Show it in view
// tracevar($oException->getMessage());// Show it in console (if debug is set)
}
}
}
// Fix max next id (for pgsql)
// mysql dot need fix, but what for mssql ?
// Do a model function for this can be a good idea (see activate_helper/activateSurvey)
if (Yii::app()->db->driverName == 'pgsql') {
$sSequenceName = Yii::app()->db->getSchema()->getTable("{{survey_{$iSurveyId}}}")->sequenceName;
$iActualSerial = Yii::app()->db->createCommand("SELECT last_value FROM {$sSequenceName}")->queryScalar();
if ($iActualSerial < $iMaxId) {
$sQuery = "SELECT setval(pg_get_serial_sequence('{{survey_{$iSurveyId}}}', 'id'),{$iMaxId},false);";
$result = @Yii::app()->db->createCommand($sQuery)->execute();
}
}
// End of import
// Construction of returned information
if ($iNbResponseLine) {
$CSVImportResult['success'][] = sprintf($clang->gT("%s response lines in your file."), $iNbResponseLine);
} else {
$CSVImportResult['errors'][] = $clang->gT("No response lines in your file.");
}
if (count($aResponsesInserted)) {
$CSVImportResult['success'][] = sprintf($clang->gT("%s responses were inserted."), count($aResponsesInserted));
// Maybe add implode aResponsesInserted array
}
if (count($aResponsesUpdated)) {
$CSVImportResult['success'][] = sprintf($clang->gT("%s responses were updated."), count($aResponsesUpdated));
}
if (count($aResponsesError)) {
$CSVImportResult['errors'][] = sprintf($clang->gT("%s responses cannot be inserted or updated."), count($aResponsesError));
}
if (count($aExistingsId) && ($aOptions['sExistingId'] == 'skip' || $aOptions['sExistingId'] == 'ignore')) {
$CSVImportResult['warnings'][] = sprintf($clang->gT("%s responses already exist."), count($aExistingsId));
}
return $CSVImportResult;
}