<?php

/* For licensing terms, see /license.txt */

/**
 * Class Annotation
 * Allow instanciate an object of type HotSpot extending the class question.
 *
 * @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
 */
class Annotation extends Question
{
    public $typePicture = 'annotation.png';
    public $explanationLangVar = 'Annotation';

    /**
     * Annotation constructor.
     */
    public function __construct()
    {
        parent::__construct();
        $this->type = ANNOTATION;
        $this->isContent = $this->getIsContent();
    }

    public function display()
    {
    }

    public function createForm(&$form, $exercise)
    {
        parent::createForm($form, $exercise);

        $form->addElement(
            'number',
            'weighting',
            get_lang('Score'),
            ['step' => '0.1']
        );

        if (!empty($this->id)) {
            $form->setDefaults(['weighting' => float_format($this->weighting, 1)]);
        } else {
            if (1 == $this->isContent) {
                $form->setDefaults(['weighting' => '10']);
            }
        }

        global $text;
        if (isset($_GET['editQuestion'])) {
            $form->addButtonUpdate($text, 'submitQuestion');

            return;
        }

        $form->addElement(
            'file',
            'imageUpload',
            [
                Display::img(
                    Display::return_icon(
                        'annotation.png',
                        null,
                        null,
                        ICON_SIZE_BIG,
                        false,
                        true
                    )
                ),
                get_lang('Upload image (jpg, png or gif) to apply hotspots.'),
            ]
        );

        $form->addButtonSave(get_lang('Go to question'), 'submitQuestion');
        $form->addRule(
            'imageUpload',
            get_lang('Only PNG, JPG or GIF images allowed'),
            'filetype',
            ['jpg', 'jpeg', 'png', 'gif']
        );
        $form->addRule('imageUpload', get_lang('Please select an image'), 'uploadedfile');
    }

    public function processCreation($form, $exercise)
    {
        $fileInfo = $form->getSubmitValue('imageUpload');
        parent::processCreation($form, $exercise);

        if (!empty($fileInfo['tmp_name'])) {
            $this->weighting = $form->getSubmitValue('weighting');
            $this->save($exercise);

            return true;
        }

        return false;
    }

    /**
     * @param FormValidator $form
     */
    public function createAnswersForm($form)
    {
    }

    public function processAnswersCreation($form, $exercise)
    {
        $this->weighting = $form->getSubmitValue('weighting');
        $this->save($exercise);
    }

    public function return_header(Exercise $exercise, $counter = null, $score = [])
    {
        $score['revised'] = $this->isQuestionWaitingReview($score);

        return parent::return_header($exercise, $counter, $score); // TODO: Change the autogenerated stub
    }
}
