Yii::app()-›lang иногда не работает с LimeSurvey

Я работаю над собственным скриптом для автоматической рассылки приглашений и напоминаний. У меня все работает нормально до определенного момента. Моя функция отправки приглашений выглядит так:

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()->lang вызывает проблемы, потому что тогда php не может вызвать метод gT. Однако, когда LimeSurvey работает «правильно», этого никогда не происходит. Я даже не могу найти, где находится "lang" в исходниках LimeSurvey.

Что я могу сделать, чтобы заставить его работать?


person Cameron Ball    schedule 09.05.2013    source источник


Ответы (2)


Почему вы так усложняете себе задачу и не используете API RemoteControl2? См. http://manual.limesurvey.org/wiki/RemoteControl_2_API#invite_participants.

На этой странице вы также найдете пример сценария PHP.

person Deckard    schedule 10.05.2013

может быть

Yii::import('application.libraries.Limesurvey_lang');
$clang = new Limesurvey_lang($oTokens->language);
person Denis Chenu    schedule 27.02.2014