⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 report.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
				case HOTPOT_TEXTOYS_RHUBARB :					$type = "Rhubarb";					break;				case HOTPOT_TEXTOYS_SEQUITUR :					$type = "Sequitur";					break;				default:					$type = $blank;			}		}		return $type;	}	function set_head(&$options, &$table, $zone, $exercisetype='', $details=array(), $questioncount=0) {		if (empty($table->head)) {			$table->head = array();		}		switch ($zone) {			case 'exercise':				array_push($table->head,					get_string('reportcoursename', 'hotpot'),					get_string('reportsectionnumber', 'hotpot'),					get_string('reportexercisenumber', 'hotpot'),					get_string('reportexercisename', 'hotpot'),					get_string('reportexercisetype', 'hotpot'),					get_string('reportnumberofquestions', 'hotpot')				);				break;			case 'user':				array_push($table->head,					get_string('reportstudentid', 'hotpot'),					get_string('reportlogindate', 'hotpot'),					get_string('reportlogintime', 'hotpot'),					get_string('reportlogofftime', 'hotpot')				);				break;			case 'attempt':				array_push($table->head,					get_string('reportattemptnumber', 'hotpot'),					get_string('reportattemptstart', 'hotpot'),					get_string('reportattemptfinish', 'hotpot')				);				break;			case 'click':				array_push($table->head,					get_string('reportclicknumber', 'hotpot'),					get_string('reportclicktime', 'hotpot'),					get_string('reportclicktype', 'hotpot')				);				break;			case 'details':				foreach($details as $detail) {					if ($exercisetype=='JQuiz' && $detail=='clues') {						$detail = 'showanswer';					}					$detail = get_string("report$detail", 'hotpot');					for ($i=0; $i<$questioncount; $i++) {						$str = get_string('questionshort', 'hotpot', $i+1);						if ($i==0 || $options['reportformat']!='htm') {							$str = "$detail $str";						}						$table->head[] = $str;					}				}				break;			case 'totals':				$reportpercentscore =get_string('reportpercentscore', 'hotpot');				if (!function_exists('clean_getstring_data')) { // Moodle 1.4 (and less)					$reportpercentscore = str_replace('%', '%%', $reportpercentscore);				}				array_push($table->head,					get_string('reportthisclick', 'hotpot', get_string('reportquestionstried', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reportquestionstried', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportright', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportwrong', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportnottried', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reportright', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reportwrong', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reportnottried', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportanswers', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reporthints', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string($exercisetype=='JQuiz' ? 'reportshowanswer' : 'reportclues', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportevents', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reporthints', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string($exercisetype=='JQuiz' ? 'reportshowanswer' : 'reportclues', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportrawscore', 'hotpot')),					get_string('reportthisclick', 'hotpot', get_string('reportmaxscore', 'hotpot')),					get_string('reportthisclick', 'hotpot', $reportpercentscore),					get_string('reportsofar', 'hotpot', get_string('reportrawscore', 'hotpot')),					get_string('reportsofar', 'hotpot', get_string('reportmaxscore', 'hotpot')),					get_string('reportsofar', 'hotpot', $reportpercentscore),					get_string('reporthotpotscore', 'hotpot')				);				break;		} // end switch	}	function set_align_and_wrap(&$table) {		$count = count($table->head);		for ($i=0; $i<$count; $i++) {			if ($i==0 || $i==1 || $i==2 || $i==4 || $i==5 || $i>=7) {				// numeric (and short text) columns				$table->align[] = 'center';				$table->wrap[] = '';			} else {				// text columns				$table->align[] = 'left';				$table->wrap[] = 'nowrap';			}		}	}	function set_data_exercise(&$cm, &$course, &$hotpot, &$questions, &$questionids, &$questioncount, &$blank) {		// get exercise details (course name, section number, activity number, quiztype and question count)		$record = get_record("course_sections", "id", $cm->section);		$this->data['exercise'] = array(			'course'  => $course->shortname,			'section' => empty($record) ? $blank : $record->section+1,			'number'  => empty($record) ? $blank : array_search($cm->id, explode(',', $record->sequence))+1,			'name'    => $hotpot->name,			'type'    => $this->get_exercisetype($questions, $questionids, $blank),			'questioncount' => $questioncount		);	}	function set_data_user(&$options, &$course, &$user) {		global $CFG;		// shortcut to first attempt record (which also hold user info)		$attempt = &$user->attempts[0];		$idnumber = $attempt->idnumber;		if (empty($idnumber)) {			$idnumber = fullname($attempt);		}		if ($options['reportformat']=='htm') {			$idnumber = '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$attempt->userid.'&amp;course='.$course->id.'">'.$idnumber.'</a>';		}		$this->data['user'] = array(			'idnumber' => $idnumber,		);	}	function set_data_attempt(&$attempt, &$strftimedate, &$strftimetime, &$blank) {		global $CFG;		$records = get_records_sql_menu("			SELECT userid, MAX(time) AS logintime			FROM {$CFG->prefix}log			WHERE userid=$attempt->userid AND action='login' AND time<$attempt->timestart			GROUP BY userid		");		if (empty($records)) {			$logindate = $blank;			$logintime = $blank;		} else {			$logintime = $records[$attempt->userid];			$logindate = trim(userdate($logintime, $strftimedate));			$logintime = trim(userdate($logintime, $strftimetime));		}		$records = get_records_sql_menu("			SELECT userid, MIN(time) AS logouttime			FROM {$CFG->prefix}log			WHERE userid=$attempt->userid AND action='logout' AND time>$attempt->cr_timefinish			GROUP BY userid		");		if (empty($records)) {			$logouttime = $blank;		} else {			$logouttime = $records[$attempt->userid];			$logouttime = trim(userdate($logouttime, $strftimetime));		}		$this->data['attempt'] = array(			'logindate'  => $logindate,			'logintime'  => $logintime,			'logouttime' => $logouttime,			'number' => $attempt->attempt,			'start'  => trim(userdate($attempt->timestart, $strftimetime)),			'finish' => trim(userdate($attempt->cr_timefinish, $strftimetime)),		);	}	function set_data_click($number, $time, $exercisetype, $click) {		$types = array();		foreach (array_keys($click['types']) as $type) {			if ($exercisetype=='JQuiz' && $type=='clues') {				$type = 'showanswer';			} else {				// remove final 's'				$type = substr($type, 0, strlen($type)-1);			}			// $types[] = get_string($type, 'hotpot');			$types[] = $type;		}		$this->data['click'] = array(			'number' => $number,			'time'   => $time,			'type'   => empty($types) ? '??' : implode(',', $types)		);	}	function set_data_totals(&$click, &$clicks, &$questioncount, &$blank, &$attempt) {		$count= array(			'click' => array(				'correct' => count($click['correct']),				'wrong' => count($click['wrong']),				'answers' => count($click['answers']),				'hints' => array_sum($click['hints']),				'clues' => array_sum($click['clues']),				'events' => array_sum($click['events']),				'score' => array_sum($click['score']),				'maxscore' => array_sum($click['weighting']),			),			'clicks' => array(				'correct' => count($clicks['correct']),				'wrong' => count($clicks['wrong']),				'answers' => count($clicks['answers']),				'hints' => array_sum($clicks['hints']),				'clues' => array_sum($clicks['clues']),				'score' => array_sum($clicks['score']),				'maxscore' => array_sum($clicks['weighting']),			)		);		foreach ($count as $period=>$values) {			$count[$period]['nottried'] = $questioncount - ($values['correct'] + $values['wrong']);			$count[$period]['percent'] = empty($values['maxscore']) ? $blank : round(100 * $values['score'] / $values['maxscore'], 0);			// blank out zero click values			if ($period=='click') {				foreach ($values as $detail=>$value) {					if ($detail=='answers' || $detail=='hints' || $detail=='clues' || $detail=='events') {						if (empty($value)) {							$count[$period][$detail] = $blank;						}					}				}			}		}		$this->data['totals'] = array(			$count['click']['answers'],   // "q's tried"			$count['clicks']['answers'],  // "q's tried so far"			$count['click']['correct'],   // "right"			$count['click']['wrong'],     // "wrong"			$count['click']['nottried'],  // "not tried"			$count['clicks']['correct'],  // "right so far"			$count['clicks']['wrong'],    // "wrong so far"			$count['clicks']['nottried'], // "not tried so far"			$count['click']['answers'],   // "answers",			$count['click']['hints'],     // "hints",			$count['click']['clues'],     // "clues",			$count['click']['events'],    // "answers",			$count['clicks']['hints'],    // "hints so far",			$count['clicks']['clues'],    // "clues so far",			$count['click']['score'],     // 'raw score',			$count['click']['maxscore'],  // 'max score',			$count['click']['percent'],   // '% score'			$count['clicks']['score'],    // 'raw score,			$count['clicks']['maxscore'], // 'max score,			$count['clicks']['percent'],  // '% score			$attempt->score               // 'hotpot score'		);	}	function update_event_count(&$click, $detail, $q) {		if ($detail=='checks' || $detail=='hints' || $detail=='clues') {			$click['types'][$detail] = true;		}		if ($detail=='answers' || $detail=='hints' || $detail=='clues') {			$click['events'][$q] = isset($click['events'][$q]) ? $click['events'][$q]+1 : 1;		}		if ($detail=='answers') {			$click['changes'][$q] = isset($click['changes'][$q]) ? $click['changes'][$q]+1 : 1;		}	}	function set_data(&$cells, $zone) {		foreach ($this->data[$zone] as $name=>$value) {			$cells[] = $value;		}	}} // end class?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -