1: <?php
2:
3: require_once (dirname(__FILE__)."/../DbQuestion.class.php");
4: require_once (dirname(__FILE__)."/../DbField/DbFieldJeopardyItem.class.php");
5: require_once (dirname(__FILE__)."/../DbField/DbFieldAnswer.class.php");
6:
7: class DbQuestionJeopardy extends DbQuestion {
8:
9: public $theme;
10: public $questions;
11:
12: public function getHtml() {
13: $this->packSources();
14: return theme('chgk_db_jeopardy_question', $this);
15: }
16:
17:
18: protected function setFields() {
19: parent::setFields();
20: $this->split();
21: $this->packSources();
22: }
23:
24: private function packSources() {
25: if (!isset ($this->fields['Sources'])) {
26: return;
27: }
28: $this->fields['Sources']->pack();
29: }
30:
31: private function split() {
32: $this->splitQuestions();
33: $this->splitAnswers();
34: }
35:
36: private function splitAnswers(){
37: $a = "dummy\n". $this->getField('Answer')->getValue();
38: $parts = preg_split('/\n\s+(\d+)\.\s*/', $a, -1, PREG_SPLIT_DELIM_CAPTURE);
39: array_shift($parts);
40: while ($parts) {
41: $number = array_shift($parts);
42: $text = array_shift($parts);
43: $this->questions[$number]->Answer=
44: new DbFieldAnswer('', $text, $number);
45: }
46: }
47:
48: private function splitQuestions() {
49: $q = $this->getField('Question')->getValue();
50: $parts = preg_split('/\n\s+(\d+)\.\s*/', $q, -1, PREG_SPLIT_DELIM_CAPTURE);
51: $this->theme = array_shift($parts);
52: while ($parts) {
53: $number = array_shift($parts);
54: $text = array_shift($parts);
55: $row = new stdClass();
56: $row->Question = new DbFieldQuestion('', $text, $number);
57: $row->number = $number;
58: $this->questions[$number]=$row;
59: }
60: }
61: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>