diff --git a/public_html/application/helpers/export_helper.php b/public_html/application/helpers/export_helper.php index ae83a08..7483ecc 100644 --- a/public_html/application/helpers/export_helper.php +++ b/public_html/application/helpers/export_helper.php @@ -1712,60 +1712,65 @@ function tokensExport($iSurveyID) $oSurvey=Survey::model()->findByPk($iSurveyID); $bIsNotAnonymous= ($oSurvey->anonymized=='N' && $oSurvey->active=='Y');// db table exist (survey_$iSurveyID) ? - $oRecordSet = Yii::app()->db->createCommand()->from("{{tokens_$iSurveyID}}"); + $oRecordSet = Yii::app()->db->createCommand()->from("{{tokens_$iSurveyID}} lt"); $databasetype = Yii::app()->db->getDriverName(); $oRecordSet->where("1=1"); if ($sEmailFiter!='') { if (in_array($databasetype, array('mssql', 'sqlsrv', 'dblib'))) { - $oRecordSet->andWhere("CAST(email as varchar) like ".dbQuoteAll('%'.$sEmailFiter.'%', true)); + $oRecordSet->andWhere("CAST(lt.email as varchar) like ".dbQuoteAll('%'.$sEmailFiter.'%', true)); } else { - $oRecordSet->andWhere("email like ".dbQuoteAll('%'.$sEmailFiter.'%', true)); + $oRecordSet->andWhere("lt.email like ".dbQuoteAll('%'.$sEmailFiter.'%', true)); } } if ($iTokenStatus==1) { - $oRecordSet->andWhere("completed<>'N'"); + $oRecordSet->andWhere("lt.completed<>'N'"); } elseif ($iTokenStatus==2) { - $oRecordSet->andWhere("completed='N'"); + $oRecordSet->andWhere("lt.completed='N'"); if ($bIsNotAnonymous) { - $oRecordSet->andWhere("token not in (select token from {{survey_$iSurveyID}} group by token)"); + // $oRecordSet->andWhere("token not in (select token from {{survey_$iSurveyID}} group by token)"); + $oRecordSet->leftJoin("{{survey_$iSurveyID}} ls", 'lt.token=ls.token'); + $oRecordSet->andWhere("ls.id IS NULL"); } } if ($iTokenStatus==3 && $bIsNotAnonymous) { - $oRecordSet->andWhere("completed='N' and token in (select token from {{survey_$iSurveyID}} group by token)"); + // $oRecordSet->andWhere("lt.completed='N' and token in (select token from {{survey_$iSurveyID}} group by token)"); + $oRecordSet->leftJoin("{{survey_$iSurveyID}} ls", 'lt.token=ls.token'); + $oRecordSet->andWhere("lt.completed='N'"); + $oRecordSet->andWhere("ls.id IS NULL"); } if ($iInvitationStatus==1) { - $oRecordSet->andWhere("sent<>'N'"); + $oRecordSet->andWhere("lt.sent<>'N'"); } if ($iInvitationStatus==2) { - $oRecordSet->andWhere("sent='N'"); + $oRecordSet->andWhere("lt.sent='N'"); } if ($iReminderStatus==1) { - $oRecordSet->andWhere("remindersent<>'N'"); + $oRecordSet->andWhere("lt.remindersent<>'N'"); } if ($iReminderStatus==2) { - $oRecordSet->andWhere("remindersent='N'"); + $oRecordSet->andWhere("lt.remindersent='N'"); } if ($sTokenLanguage!='') { - $oRecordSet->andWhere("language=".dbQuoteAll($sTokenLanguage)); + $oRecordSet->andWhere("lt.language=".dbQuoteAll($sTokenLanguage)); } - $oRecordSet->order("tid"); + $oRecordSet->order("lt.tid"); $bresult = $oRecordSet->query(); //HEADERS should be after the above query else timeout errors in case there are lots of tokens! header("Content-Disposition: attachment; filename=tokens_".$iSurveyID.".csv");