%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/plugin/whispeakauth/Controller/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/plugin/whispeakauth/Controller/EnrollmentController.php

<?php
/* For licensing terms, see /license.txt */

namespace Chamilo\PluginBundle\WhispeakAuth\Controller;

use Chamilo\PluginBundle\WhispeakAuth\Request\ApiRequest;

/**
 * Class EnrollmentController.
 *
 * @package Chamilo\PluginBundle\WhispeakAuth\Controller
 */
class EnrollmentController extends BaseController
{
    /**
     * @throws \Exception
     */
    public function index()
    {
        if (!$this->plugin->toolIsEnabled()) {
            throw new \Exception(get_lang('NotAllowed'));
        }

        $user = api_get_user_entity(api_get_user_id());

        $userIsEnrolled = \WhispeakAuthPlugin::checkUserIsEnrolled($user->getId());

        if ($userIsEnrolled) {
            throw new \Exception($this->plugin->get_lang('SpeechAuthAlreadyEnrolled'));
        }

        $request = new ApiRequest();
        $response = $request->createEnrollmentSessionToken($user);

        \ChamiloSession::write(\WhispeakAuthPlugin::SESSION_SENTENCE_TEXT, $response['token']);

        $this->displayPage(
            true,
            [
                'action' => 'enrollment',
                'sample_text' => $response['text'],
            ]
        );
    }

    /**
     * @throws \Exception
     */
    public function ajax()
    {
        $result = ['resultHtml' => ''];

        if (!$this->plugin->toolIsEnabled() || empty($_FILES['audio'])) {
            throw new \Exception(get_lang('NotAllowed'));
        }

        $user = api_get_user_entity(api_get_user_id());

        $audioFilePath = $this->uploadAudioFile($user);

        $token = \ChamiloSession::read(\WhispeakAuthPlugin::SESSION_SENTENCE_TEXT);

        if (empty($token)) {
            throw new \Exception($this->plugin->get_lang('EnrollmentFailed'));
        }

        $request = new ApiRequest();

        try {
            $response = $request->createEnrollment($token, $audioFilePath, $user);
        } catch (\Exception $exception) {
            $enrollTokenRequest = new ApiRequest();
            $enrollTokenResponse = $enrollTokenRequest->createEnrollmentSessionToken($user);

            \ChamiloSession::write(\WhispeakAuthPlugin::SESSION_SENTENCE_TEXT, $enrollTokenResponse['token']);

            return [
                'resultHtml' => \Display::return_message($exception->getMessage(), 'error'),
                'text' => $enrollTokenResponse['text'],
            ];
        }

        \ChamiloSession::erase(\WhispeakAuthPlugin::SESSION_SENTENCE_TEXT);

        $this->plugin->saveEnrollment($user, $response['speaker']);

        $result['resultHtml'] .= \Display::return_message($this->plugin->get_lang('EnrollmentSuccess'), 'success');

        return $result;
    }

    /**
     * {@inheritdoc}
     */
    protected function displayPage($isFullPage, array $variables)
    {
        global $htmlHeadXtra;

        $htmlHeadXtra[] = api_get_js('rtc/RecordRTC.js');
        $htmlHeadXtra[] = api_get_js_simple(api_get_path(WEB_PLUGIN_PATH).'whispeakauth/assets/js/RecordAudio.js');

        $pageTitle = $this->plugin->get_lang('EnrollmentTitle');

        $template = new \Template($pageTitle);

        foreach ($variables as $key => $value) {
            $template->assign($key, $value);
        }

        $pageContent = $template->fetch('whispeakauth/view/record_audio.html.twig');

        $template->assign('header', $pageTitle);
        $template->assign('content', $pageContent);
        $template->display_one_col_template();
    }
}

Zerion Mini Shell 1.0