diff --git a/application/controllers/admin/tokens.php b/application/controllers/admin/tokens.php index ed0e269be9a..635c729d5ce 100644 --- a/application/controllers/admin/tokens.php +++ b/application/controllers/admin/tokens.php @@ -57,6 +57,9 @@ function index($iSurveyId) } else { + //Check that the tokens table has the required fields + Tokens_dynamic::model($iSurveyId)->checkColumns(); + $aData['thissurvey'] = $thissurvey; $aData['surveyid'] = $iSurveyId; $aData['queries'] = Tokens_dynamic::model($iSurveyId)->summary(); diff --git a/application/models/Tokens_dynamic.php b/application/models/Tokens_dynamic.php index 96a39d6e75b..99b80085ca4 100644 --- a/application/models/Tokens_dynamic.php +++ b/application/models/Tokens_dynamic.php @@ -97,6 +97,20 @@ public function summary() return $data; } + /** + * Checks to make sure that all required columns exist in this tokens table + * (some older tokens tables dont' get udated properly) + * + */ + public function checkColumns() { + $sid = self::$sid; + $surveytable='{{tokens_'.$sid.'}}'; + $columns = Yii::app()->db->schema->getTable($surveytable)->getColumnNames(); + if(!in_array('participant_id', $columns)) Yii::app()->db->createCommand()->addColumn($surveytable, "participant_id", "text null"); + if(!in_array('validuntil', $columns)) Yii::app()->db->createCommand()->addColumn($surveytable, 'validuntil', 'date null'); + if(!in_array('validfrom', $columns)) Yii::app()->db->createCommand()->addColumn($surveytable, 'validfrom', 'date null'); + } + public function findUninvited($aTokenIds = false, $iMaxEmails = 0, $bEmail = true, $SQLemailstatuscondition = '', $SQLremindercountcondition = '', $SQLreminderdelaycondition = '') { $emquery = "SELECT * FROM {{tokens_" . self::$sid . "}} WHERE ((completed ='N') or (completed='')) AND token <> '' AND email <> ''"; diff --git a/scripts/admin/tokens.js b/scripts/admin/tokens.js index 9afcd64acc5..4930be2c684 100644 --- a/scripts/admin/tokens.js +++ b/scripts/admin/tokens.js @@ -110,13 +110,13 @@ $(document).ready(function() { var lastSel,lastSel2; jQuery("#displaytokens").jqGrid({ align:"center", + headertitles: true, url: jsonUrl, editurl: editUrl, datatype: "json", mtype: "post", colNames : colNames, colModel: colModels, - toppager: true, height: "100%", rowNum: 25, editable:true,