Skip to content

Commit

Permalink
Fixed issue #9466: "Import response from deactivated table" doesn't i…
Browse files Browse the repository at this point in the history
…mport timing table
  • Loading branch information
c-schmitz committed May 8, 2015
1 parent ec4f7e8 commit a2c3fe3
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions application/controllers/admin/dataentry.php
Expand Up @@ -292,6 +292,7 @@ public function import($surveyid)
}
else
{
$aSRIDConversions=array();
$targetSchema = SurveyDynamic::model($iSurveyId)->getTableSchema();
$sourceTable = PluginDynamic::model($_POST['table']);
$sourceSchema = $sourceTable->getTableSchema();
Expand Down Expand Up @@ -327,7 +328,7 @@ public function import($surveyid)
$sourceResponses = new CDataProviderIterator(new CActiveDataProvider($sourceTable), 500);
foreach ($sourceResponses as $sourceResponse)
{

$iOldID=$sourceResponse->id;
// Using plugindynamic model because I dont trust surveydynamic.
$targetResponse = new PluginDynamic("{{survey_$iSurveyId}}");

Expand All @@ -337,37 +338,36 @@ public function import($surveyid)
}
$imported++;
$targetResponse->save();
$aSRIDConversions[$iOldID]=$targetResponse->id;
unset($targetResponse);
}



Yii::app()->session['flashmessage'] = sprintf(gT("%s old response(s) were successfully imported."), $imported);
$sOldTimingsTable=substr($sourceTable->tableName(),0,strrpos($sourceTable->tableName(),'_')).'_timings'.substr($sourceTable->tableName(),strrpos($sourceTable->tableName(),'_'));
$sOldTimingsTable=substr(substr($sourceTable->tableName(),0,strrpos($sourceTable->tableName(),'_')).'_timings'.substr($sourceTable->tableName(),strrpos($sourceTable->tableName(),'_')),strlen(Yii::app()->db->tablePrefix));
$sNewTimingsTable = "survey_{$surveyid}_timings";

if (isset($_POST['timings']) && $_POST['timings'] == 1 && tableExists($sOldTimingsTable) && tableExists($sNewTimingsTable))
{
// Import timings
$aFieldsOldTimingTable=array_values($schema->getTable($sOldTimingsTable)->columnNames);
$aFieldsNewTimingTable=array_values($schema->getTable($sNewTimingsTable)->columnNames);
$arDestination=SurveyTimingDynamic::model($surveyid);
$aFieldsOldTimingTable=array_values(Yii::app()->db->schema->getTable('{{'.$sOldTimingsTable.'}}')->columnNames);
$aFieldsNewTimingTable=array_values(Yii::app()->db->schema->getTable('{{'.$sNewTimingsTable.'}}')->columnNames);

$aValidTimingFields=array_intersect($aFieldsOldTimingTable,$aFieldsNewTimingTable);

$queryOldValues = "SELECT ".implode(", ",$aValidTimingFields)." FROM {$sOldTimingsTable} ";
$resultOldValues = dbExecuteAssoc($queryOldValues) or show_error("Error:<br />$queryOldValues<br />");
$sQueryOldValues = "SELECT ".implode(", ",$aValidTimingFields)." FROM {{{$sOldTimingsTable}}} ";
$aQueryOldValues = Yii::app()->db->createCommand($sQueryOldValues)->query()->readAll(); //Checked
$iRecordCountT=0;
$aSRIDConversions=array();
foreach ($resultOldValues->readAll() as $sTable)
foreach ($aQueryOldValues as $sRecord)
{
if (isset($aSRIDConversions[$sTable['id']]))
if (isset($aSRIDConversions[$sRecord['id']]))
{
$sTable['id']=$aSRIDConversions[$sTable['id']];
$sRecord['id']=$aSRIDConversions[$sRecord['id']];
}
else continue;
//$sInsertSQL=Yii::app()->db->GetInsertSQL($sNewTimingsTable,$row);
$sInsertSQL="INSERT into {$sNewTimingsTable} (".implode(",", array_map("dbQuoteID", array_keys($sTable))).") VALUES (".implode(",", array_map("dbQuoteAll", array_values($sTable))).")";
$aTables = dbExecuteAssoc($sInsertSQL) or show_error("Error:<br />$sInsertSQL<br />");
Yii::app()->db->createCommand()->insert("{{{$sNewTimingsTable}}}",$sRecord);
$iRecordCountT++;
}
Yii::app()->session['flashmessage'] = sprintf(gT("%s old response(s) and according timings were successfully imported."),$imported,$iRecordCountT);
Expand Down

0 comments on commit a2c3fe3

Please sign in to comment.