Skip to content

Commit

Permalink
Fixed issue #7759: Sending email invitation takes lot of memory when …
Browse files Browse the repository at this point in the history
…having alot of tokens
  • Loading branch information
c-schmitz committed May 10, 2013
1 parent 18ca412 commit a328ee9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
4 changes: 2 additions & 2 deletions application/controllers/admin/remotecontrol.php
Expand Up @@ -2189,7 +2189,7 @@ public function invite_participants($sSessionKey, $iSurveyID )

$oTokens = TokenDynamic::model($iSurveyID);
$aResultTokens = $oTokens->findUninvited(false, $iMaxEmails, true, $SQLemailstatuscondition);
$aAllTokens = $oTokens->findUninvited(false, 0, true, $SQLemailstatuscondition);
$aAllTokens = $oTokens->findUninvitedIDs(false, 0, true, $SQLemailstatuscondition);
if (empty($aResultTokens))
return array('status' => 'Error: No candidate tokens');

Expand Down Expand Up @@ -2253,7 +2253,7 @@ public function remind_participants($sSessionKey, $iSurveyID, $iMinDaysBetween=n

$oTokens = TokenDynamic::model($iSurveyID);
$aResultTokens = $oTokens->findUninvited(false, $iMaxEmails, false, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
$aAllTokens = $oTokens->findUninvited(false, 0, false, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
$aAllTokens = $oTokens->findUninvitedIDs(false, 0, false, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);

if (empty($aResultTokens))
return array('status' => 'Error: No candidate tokens');
Expand Down
4 changes: 2 additions & 2 deletions application/controllers/admin/tokens.php
Expand Up @@ -1317,7 +1317,7 @@ function email($iSurveyId, $tokenids = null)
{
if (empty($aData['tokenids']))
{
$aTokens = TokenDynamic::model($iSurveyId)->findUninvited($aTokenIds, 0, $bEmail, $SQLemailstatuscondition);
$aTokens = TokenDynamic::model($iSurveyId)->findUninvitedIDs($aTokenIds, 0, $bEmail, $SQLemailstatuscondition);
foreach($aTokens as $aToken)
{
$aData['tokenids'][] = $aToken['tid'];
Expand Down Expand Up @@ -1353,7 +1353,7 @@ function email($iSurveyId, $tokenids = null)
}
}

$ctresult = TokenDynamic::model($iSurveyId)->findUninvited($aTokenIds, 0, $bEmail, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
$ctresult = TokenDynamic::model($iSurveyId)->findUninvitedIDs($aTokenIds, 0, $bEmail, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
$ctcount = count($ctresult);

$emresult = TokenDynamic::model($iSurveyId)->findUninvited($aTokenIds, $iMaxEmails, $bEmail, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
Expand Down
40 changes: 40 additions & 0 deletions application/models/TokenDynamic.php
Expand Up @@ -186,6 +186,46 @@ public function findUninvited($aTokenIds = false, $iMaxEmails = 0, $bEmail = tru
$oResult = TokenDynamic::model()->findAll($command);
return $oResult;
}

public function findUninvitedIDs($aTokenIds = false, $iMaxEmails = 0, $bEmail = true, $SQLemailstatuscondition = '', $SQLremindercountcondition = '', $SQLreminderdelaycondition = '')
{
$command = new CDbCriteria;
$command->condition = '';
$command->addCondition("(completed ='N') or (completed='')");
$command->addCondition("token <> ''");
$command->addCondition("email <> ''");
$command->addCondition("tid < 15000 ");


if ($bEmail) {
$command->addCondition("(sent = 'N') or (sent = '')");
} else {
$command->addCondition("(sent <> 'N') AND (sent <> '')");
}

if ($SQLemailstatuscondition)
$command->addCondition($SQLemailstatuscondition);

if ($SQLremindercountcondition)
$command->addCondition($SQLremindercountcondition);

if ($SQLreminderdelaycondition)
$command->addCondition($SQLreminderdelaycondition);

if ($aTokenIds)
$command->addCondition("tid IN ('".implode("', '", $aTokenIds)."')" );

if ($iMaxEmails)
$command->limit = $iMaxEmails;

$command->order = 'tid';

$oResult=$this->getCommandBuilder()
->createFindCommand($this->getTableSchema(), $command)
->select('tid')
->queryAll();
return $oResult;
}

function insertParticipant($data)
{
Expand Down

0 comments on commit a328ee9

Please sign in to comment.