我正在制作一个自定义脚本来自动发送邀请和提醒。我有一切工作正常,直到有一点。我发送邀请的功能如下所示:
function sendInvites($iSurveyID) {
$oSurvey = Survey::model()->findByPk($iSurveyID);
if (!isset($oSurvey)) {
die("could not load survey");
}
if(!tableExists("{{tokens_$iSurveyID}}")) {
die("survey has no tokens or something");
}
$SQLemailstatuscondition = "emailstatus = 'OK'";
$SQLremindercountcondition = '';
$SQLreminderdelaycondition = '';
$iMaxEmails = (int)Yii::app()->getConfig("maxemails");
$iMaxReminders = 1;
if(!is_null($iMaxReminders)) {
$SQLremindercountcondition = "remindercount < " . $iMaxReminders;
}
$oTokens = Tokens_dynamic::model($iSurveyID);
$aResultTokens = $oTokens->findUninvited(false, $iMaxEmails, true, $SQLemailstatuscondition, $SQLremindercountcondition, $SQLreminderdelaycondition);
if (empty($aResultTokens)) {
die("No tokens to send invites to");
}
$aResult = emailTokens($iSurveyID, $aResultTokens, 'invite');
}
我还有一个简单的小文件启动Yii:
Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT);
Yii::app()->loadHelper('admin/token');
Yii::app()->loadHelper('common');
在实际尝试向令牌发送电子邮件之前,一切都按预期工作。我已将问题跟踪到以下问题,在emailTokens调用的函数中有这个:
$clang = Yii::app()->lang;
$aBasicTokenFields=array('firstname'=>array(
'description'=>$clang->gT('First name'),
'mandatory'=>'N',
'showregister'=>'Y'
),
Yii :: app() - &gt; lang部分似乎导致问题,因为php无法调用gT方法。但是,当LimeSurvey“正常”运行时,这种情况永远不会发生。我甚至无法找到LimeSurvey来源中的“lang”。
我该怎么做才能让它发挥作用?
答案 0 :(得分:0)
为什么你自己如此努力而不使用遥控器2 API? 见http://manual.limesurvey.org/wiki/RemoteControl_2_API#invite_participants
在该页面上,您还可以找到PHP示例脚本。
答案 1 :(得分:0)
也许
Yii::import('application.libraries.Limesurvey_lang');
$clang = new Limesurvey_lang($oTokens->language);