Ir para conteúdo
Fórum Script Brasil
  • 0

Plugin no limesurvey


Heloisa M.

Pergunta

Estou tentando criar um plugin pro limesurvey que consiste em pegar os funcionários do chefe logado e adiciona-los em uma one choice para ser realizado uma avaliação do funcionário da vez. Porém, estou com um certo problema ao adicionar as opções na question.
A question já foi criada e tem um certo código ($questionCode), logo pegando esse código tento adicionar os funcionários de uma API externa ($options).
Alguém já fez algo parecido que possa me ajudar? De primeira tentei colocar tabela de questions mas descobri que talvez devesse adicionar na de asnwers. Porém, parece existir outra forma utilizando o js inserido do código fonte da questão. https://manual.limesurvey.org/Workarounds:_Manipulating_a_survey_at_runtime_using_Javascript#Update_for_LimeSurvey_2.05.2B
Qual seria a melhor forma?
 

private function updateQuestionOptions($questionCode, $options) {
        $event = $this->getEvent();
        $surveyId = $event->get('surveyId');
        $questionId = $this->getQuestionIdByCode($surveyId, $questionCode);

        if ($questionId) {
            $optionValues = [];
            foreach ($options as $data) {
                foreach ($data as $option) {
                    $optionValues[] = $option['first_name'] . " " . $option['last_name'];
                }
            }
            $this->setQuestionOptions($questionId, $optionValues);
        }
    }

    private function getQuestionIdByCode($surveyId, $questionCode) {
        $sql = "SELECT * FROM {{questions}} WHERE sid = :surveyId AND title = :questionCode";
        $result = Yii::app()->db->createCommand($sql)
            ->bindValue(':surveyId', $surveyId)
            ->bindValue(':questionCode', $questionCode)
            ->queryRow();

        return $result['qid'] ?? null;
    }

    private function setQuestionOptions($questionId, $options) {
        $optionValues = implode("\n", $options);

        // $sql = "UPDATE {{questions}} SET defaultvalue = :optionValues WHERE qid = :questionId";
        // Yii::app()->db->createCommand($sql)
        //     ->bindValue(':optionValues', $optionValues)
        //     ->bindValue(':questionId', $questionId)
        //     ->execute();

        //$sql = "SELECT * FROM {{answers}}";
        //$result = Yii::app()->db->createCommand($sql)->queryAll();
        //print_r($result);
		
		//adicionar optionValues na question

    }

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu não conheço o serviço do LimeSurvey, mas achei curioso parte do código que você publicou. Ele tem bastante private function, e assim eu não consigo testar tipo (new teste)->updateQuestionsOptions(1,["José","Maria"]). Pelo que eu apurei, só existe uma tabela chamada questions com os campos qid, options,sid,title, sem alguns exemplos é difícil imaginar como usar essa tabela. O mais estranho é a função update que termina indo para a função set, são dois serviços diferentes e não poderiam ser misturados.

Tudo me leva a crer que você está perdido.

O mais importante é fazer um projeto mais simples possível. Se você quer expulsar o seu chefe da sua sessão é só fazer um abaixo assinado com os colegas e entregar para o patrão, o LimeSurvey, o MySQL, o JavaScript e o PHP só vão atrasar você.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...