1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Modules/Test/classes/class.ilTestSequence.php';
5
6/**
7 * @author		Björn Heyser <bheyser@databay.de>
8 * @version		$Id$
9 *
10 * @package     Modules/Test
11 */
12class ilTestSequenceFixedQuestionSet extends ilTestSequence
13{
14    /**
15     * @param int $questionId
16     * @param ilTestReindexedSequencePositionMap $reindexedSequencePositionMap
17     */
18    public function removeQuestion($questionId, ilTestReindexedSequencePositionMap $reindexedSequencePositionMap)
19    {
20        foreach ($this->sequencedata['sequence'] as $key => $oldSequenceElement) {
21            $newSequenceElement = $reindexedSequencePositionMap->getNewSequencePosition($oldSequenceElement);
22
23            if ($newSequenceElement) {
24                $this->sequencedata['sequence'][$key] = $newSequenceElement;
25            } else {
26                unset($this->sequencedata['sequence'][$key]);
27            }
28        }
29
30        $this->sequencedata['sequence'] = array_values($this->sequencedata['sequence']);
31
32        $this->sequencedata['postponed'] = $this->removeArrayValue($this->sequencedata['postponed'], $questionId);
33        $this->sequencedata['hidden'] = $this->removeArrayValue($this->sequencedata['hidden'], $questionId);
34
35        $this->optionalQuestions = $this->removeArrayValue($this->optionalQuestions, $questionId);
36
37        $this->alreadyPresentedQuestions = $this->removeArrayValue($this->alreadyPresentedQuestions, $questionId);
38
39        $this->alreadyCheckedQuestions = $this->removeArrayValue($this->alreadyCheckedQuestions, $questionId);
40    }
41
42    private function removeArrayValue($array, $value)
43    {
44        foreach ($array as $key => $val) {
45            if ($val == $value) {
46                unset($array[$key]);
47            }
48        }
49
50        return $array;
51    }
52}
53