Esempio n. 1
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $training = new Training();
        $t_data = $training->get(array('course_hash' => $this->course_hash, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-lg-10 col-lg-offset-1" id="window">
\t<div class="row" >
\t<div class="col-xs-10">
\t    <h4>{$c_data[category_name]}</h4>
\t    <h2>{$c_data[name]}</h2>
\t</div>
\t<div class="col-xs-2 text-right" id="top_buttons">
\t    <a href="#" id="fullscreen"><span class="glyphicon glyphicon-fullscreen"></span></a>
\t    <a href="#" id="inscreen" class="collapse"><span class="glyphicon glyphicon-remove"></span></a>
\t</div>
\t</div>
\t<div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
\t  <iframe class="embed-responsive-item" src="/learn/{$this->course_hash}/index.html" id="iframe"></iframe>
\t</div>
\t<nav id="bottom_buttons">
\t  <ul class="pager">
\t    <li class="previous"><a href="#" id="back"><span aria-hidden="true">&larr;</span> {$translator->Back}</a></li>
\t    <li class="top"><a href="#" id="top">{$translator->Top}</a>|
\t\t<a href="/mycourses/finish/{$t_data[id]}" onclick='return confirm("{$translator->AreYouSure}");'>{$translator->Finish}</a></li>
\t    <li class="next"><a href="#" id="next">{$translator->Next} <span aria-hidden="true">&rarr;</span></a></li>
\t  </ul>
\t</nav>
</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 2
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $category = new Category();
        $training = new Training();
        $t_data = $training->get(array('id' => $this->id, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        $category_id = $c_data['category_id'];
        $enum = $category->enumerate();
        if ($enum) {
            foreach ($enum as $key => $val) {
                if ($val['id'] != 0) {
                    $items[$val['id']] = $val;
                }
            }
            $categories = $this->makeCategoryList($items, $category_id);
        }
        if ($t_data['status_id'] == Training::FINISHED) {
            $result = $translator->Congratulations;
            $result_class = "alert-success";
        } else {
            $result = $translator->Sorry;
            $result_class = "alert-danger";
        }
        echo <<<EOF
<div class="container-fluid">
    <div class="col-lg-10 col-lg-offset-1" id="window">
\t<h4>{$categories}</h4>
\t<h2>{$c_data[name]}</h2>
\t<h3 class="alert {$result_class}" role="alert">{$result}</h3>
\t<h4>{$translator->Result}: {$t_data[result]}% ({$t_data['answers']} / {$t_data[questions]})</h4>
\t<table class="table">
\t    <tr>
\t\t<th>#</th>
\t\t<th>{$translator->Question}</th>
\t\t<th>{$translator->Result}</th>
\t    </tr>

EOF;
        $exam = new Exam();
        $enum = $exam->enumerateResult($t_data['id']);
        $i = 1;
        foreach ($enum as $key => $e_data) {
            $answer = $e_data['result'] == 't' ? $translator->Right : $translator->Wrong;
            $class = $e_data['result'] == 't' ? "success" : "danger";
            echo <<<EOF
\t    <tr class="alert alert-{$class}" role="alert">
\t\t<td>{$i}</td>
\t\t<td>{$e_data[question]}</td>
\t\t<td >{$answer}</td>
\t    </tr>
EOF;
            $i++;
        }
        echo <<<EOF
\t</table>
    </div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 3
0
 function init()
 {
     $this->func = array_shift($this->param);
     switch ($this->func) {
         case 'courses':
             $category_id = array_shift($this->param);
             $course = new Course();
             $data = $course->enumerate(array('category_id' => $category_id), null, null, 'name');
             foreach ($data as $key => $val) {
                 $items[] = array($val['id'], $val['name']);
             }
             echo json_encode($items);
             exit;
             break;
         case 'finduser':
             $id = array_shift($this->param);
             $search = $_GET['search'];
             $user = new User();
             try {
                 foreach ($user->find($search, 5) as $data) {
                     $json[] = array('id' => $data['id'], 'name' => $data['name'], 'email' => $data['email'], 'company' => $data['company'], 'city' => $data['city']);
                 }
                 echo json_encode($json);
             } catch (Exception $e) {
             }
             exit;
             break;
         case 'adduser':
             $plan_id = array_shift($this->param);
             $user_id = array_shift($this->param);
             $user = new User();
             try {
                 $data = $user->get(array('id' => $user_id));
                 $plan = new Plan();
                 $plan->adduser($plan_id, $user_id);
                 $json = array('id' => $data['id'], 'name' => $data['name'], 'email' => $data['email'], 'company' => $data['company'], 'city' => $data['city']);
                 echo json_encode($json);
             } catch (Exception $e) {
                 echo $e;
             }
             exit;
             break;
         case 'removeuser':
             $plan_id = array_shift($this->param);
             $user_id = array_shift($this->param);
             $training = new Training();
             $t_data = $training->get(array('plan_id' => $plan_id, 'user_id' => $user_id));
             $training->delete($t_data['id']);
             try {
                 echo json_encode('');
             } catch (Exception $e) {
                 echo $e;
             }
             exit;
             break;
     }
 }
Esempio n. 4
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $training = new Training();
        $t_data = $training->get(array('exam_hash' => $this->exam_hash, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-lg-10 col-lg-offset-1" id="window">
\t<div class="row" >
\t<div class="col-xs-10">
\t    <h4>{$c_data[category_name]}</h4>
\t    <h2>{$c_data[name]}</h2>
\t</div>
\t<div class="col-xs-2 text-right" id="top_buttons">
\t    <a href="#" id="fullscreen"><span class="glyphicon glyphicon-fullscreen"></span></a>
\t    <a href="#" id="inscreen" class="collapse"><span class="glyphicon glyphicon-remove"></span></a>
\t</div>
\t</div>

EOF;
        try {
            $d2 = new DateTime('now');
            $diff = $d2->diff(new DateTime($t_data['finished']));
            $diff = $diff->format('%r%i');
            if ($diff < 0) {
                throw new Exception("Time out", self::TIMEOUT);
            }
            $exam = new Exam();
            $enum = $exam->enumerate(array('training_id' => $t_data['id']), intval($this->page), 1, 'id');
            $cnt = $exam->getCount(array('training_id' => $t_data['id']));
            $current = $this->page + 1;
            $back = $this->page > 0 ? $this->page - 1 : 0;
            $next = $this->page + 1;
            if (!$enum) {
                throw new Exception("Not found", self::NOTFOUND);
            }
            $e_data = $enum->current();
            $question = new Question();
            $q_data = $question->get(array('id' => $e_data['question_id']));
            echo <<<EOF
\t<div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
\t<p>{$translator->Question}: {$current} / {$cnt}</p>
\t<p> {$translator->Time_remain}: {$diff}</p>
\t{$q_data[data]}
\t<hr>
\t{$translator->Answer}: 
\t    <form action="?" method="post">
\t    <input type="hidden" name="id" value="{$e_data[id]}">
EOF;
            switch ($q_data['type_id']) {
                case Question::SINGLE:
                    echo "<ol>";
                    for ($i = 1; $i <= $q_data['count']; $i++) {
                        echo "<li><input type=\"radio\" name=\"answer\" value=\"{$i}\" " . ($i == $e_data['answer'] ? 'checked' : '') . "></li>" . NL;
                    }
                    echo "</ol>";
                    break;
                case Question::MULTI:
                    echo "<ol>";
                    $e_data['answer'] = explode(',', $e_data['answer']);
                    for ($i = 1; $i <= $q_data['count']; $i++) {
                        echo "<li><input type=\"checkbox\" name=\"answer[]\" value=\"{$i}\" " . (in_array($i, $e_data['answer']) ? 'checked' : '') . "></li>" . NL;
                    }
                    echo "</ol>";
                    break;
                case Question::TEXT:
                    echo "<input type=\"text\" name=\"answer\" value=\"{$e_data['answer']}\">" . NL;
                    break;
                default:
            }
            $back = $this->page > 0 ? $this->page - 1 : 0;
            $next = $this->page + 1;
            echo <<<EOF
\t    <input type="submit" class="btn btn-primary">
\t    </form>
\t</div>

EOF;
        } catch (Exception $e) {
            switch ($e->getCode()) {
                case self::TIMEOUT:
                    echo <<<EOF
    <div class="bs-callout bs-callout-danger" id="callout-type-b-i-elems">
    <h4>{$translator->Timeout}</h4>
    <p>{$translator->Timeout_Desc}</p>
    <p class="text-muted">{$translator->BackCourses}</p>
    </div>

EOF;
                    $training->update($t_data['id'], array('status_id' => Training::FAILED));
                    break;
                case self::NOTFOUND:
                    echo <<<EOF
    <div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
    <div class="bs-callout bs-callout-info" id="callout-type-b-i-elems">
    <h4>{$translator->Not_found}</h4>
    <p>{$translator->Not_found_Desc}</p>
    <p class="text-muted">{$translator->BackExam}</p>
    </div>
    </div>

EOF;
                    break;
                default:
                    echo $e;
                    echo <<<EOF
    <div class="bs-callout bs-callout-danger" id="callout-type-b-i-elems">
    <h4>{$translator->Error}</h4>
    <p>{$translator->Error_Desc}</p>
    <p class="text-muted">{$translator->BackExam}</p>
    </div>

EOF;
            }
            // echo "<script>window.history.back();</script>";
        }
        echo <<<EOF
\t<nav id="bottom_buttons">
\t  <ul class="pager">
\t    <li class="previous"><a href="{$back}" id="back"><span aria-hidden="true">&larr;</span> {$translator->Back}</a></li>
\t    <li class="top"><a href="0" id="top">{$translator->Top}</a>|
\t\t<a href="/result/{$t_data[id]}" onclick='return confirm("{$translator->AreYouSure}");'>{$translator->Finish}</a></li>
\t    <li class="next"><a href="{$next}" id="next">{$translator->Next} <span aria-hidden="true">&rarr;</span></a></li>
\t  </ul>
\t</nav>
</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 5
0
 function delete($id)
 {
     $training = new Training();
     try {
         $t_data = $training->get(array('id' => $id, 'user_id' => $_SESSION['user_id']));
         $training->delete($id);
         header('Location: /mycourses');
         exit;
     } catch (Exception $e) {
         echo $e;
         exit;
     }
 }