/**
  * Sets answer for current question.
  * @param $answer
  */
 public function setAnswer($answer)
 {
     $matches = array();
     $answer = Utils::cleanStyles($answer);
     preg_match_all('/{\\d+\\:SHORTANSWER\\:\\%\\d+\\%(.*?)\\#\\}+?/', $answer, $matches);
     if (empty($matches)) {
         throw new \UnexpectedValueException("No se ha obtenido ningun valor esperado de respuesta");
     }
     array_shift($matches);
     $this->answer = reset($matches[0]);
 }
 /**
  * @inheritdoc
  */
 public function setQuestionText($text)
 {
     $this->question_text = Utils::cleanStyles($text);
 }
Example #3
0
 public function scrapeId($course, $id)
 {
     $this->validateConfig($course, $id);
     $url = $this->getUri($course, $id);
     $crawler = $this->scrapper->request('GET', $url);
     $crawler = $crawler->filter('#region-main-wrap');
     list($curso, $seccion) = $this->getInfoFromUri($url);
     if (!$seccion || !$curso) {
         throw new \Exception('Curso o sección inválida');
     }
     $fullname = "{$curso}section{$seccion}";
     $dir = $this->download_dir . "{$curso}/{$fullname}";
     if (!is_dir($dir)) {
         mkdir($dir, 0775, true);
     }
     $this->getContent('img', $crawler, $curso, $fullname, $dir);
     $this->getContent('source', $crawler, $curso, $fullname, $dir);
     $parent = $crawler->filter('div.btn-audio');
     if ($parent->count()) {
         /** @var DOMElement $node */
         foreach ($parent as $node_div) {
             $sources = $node_div->getElementsByTagName('a');
             if (!empty($sources)) {
                 /** @var DOMElement $node */
                 foreach ($sources as $node) {
                     // Obtenemos el source de la imagen.
                     $url = $node->getAttribute('href');
                     $text = $node->textContent;
                     // La guardamos
                     $filename = basename($url);
                     $filename = urldecode($filename);
                     $node->setAttribute('onclick', "playAudio('/android_asset/www/src/{$curso}/{$fullname}/{$text}')");
                     $node->removeAttribute('href');
                     $node->appendChild($node_div->cloneNode(false));
                     $node_div->parentNode->insertBefore($node, $node_div->parentNode->childNodes->item(2));
                     $node_div->parentNode->removeChild($node_div);
                 }
             }
         }
     }
     $iframe = $crawler->filter('iframe.iframeform');
     if ($iframe->count()) {
         /** @var DOMElement $node */
         foreach ($iframe as $node) {
             // Obtenemos el source de la imagen.
             $url = $node->getAttribute('src');
             $index = strpos($url, '/iframe-ingles/');
             $url = substr($url, $index, strlen($url) - 1);
             // La guardamos
             $node->setAttribute('src', '..' . $url);
         }
     }
     $quiz = $crawler->filter('li.activity.quiz.modtype_quiz div.activityinstance a');
     if ($quiz->count()) {
         /** @var DOMElement $node */
         foreach ($quiz as $node) {
             // Obtenemos el source de la imagen.
             $id = $node->getAttribute('href');
             $matches = array();
             preg_match('/id\\=(\\d+)/', $id, $matches);
             $id = Utils::getExamIndex($matches[1]);
             $node->setAttribute('href', "quiz{$id}.html");
         }
     }
     $backto = $crawler->filter('div.backto a');
     if ($backto->count()) {
         /** @var DOMElement $node */
         foreach ($backto as $node) {
             // Obtenemos el source de la imagen.
             $node->setAttribute('href', 'mainA1.html');
         }
     }
     $backto = $crawler->filter('img.smallicon');
     if ($backto->count()) {
         /** @var DOMElement $node */
         foreach ($backto as $node) {
             if (strpos($node->getAttribute('src'), '/up') !== FALSE) {
                 // Obtenemos el source de la imagen.
                 $node->setAttribute('src', '../dist/images/up.svg');
             }
         }
     }
     $body = $crawler->html();
     $html = strtr($this->template, array(':content' => $body));
     file_put_contents("{$this->download_dir}/{$fullname}.html", $html);
 }
Example #4
0
 /**
  * Sets text for answer.
  *
  * @param string $texto
  */
 public function setRespuesta($texto)
 {
     $this->respuesta = Utils::cleanStyles($texto);
 }