本文整理汇总了PHP中material::i方法的典型用法代码示例。如果您正苦于以下问题:PHP material::i方法的具体用法?PHP material::i怎么用?PHP material::i使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类material
的用法示例。
在下文中一共展示了material::i方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: events
public function events()
{
if (!env('student')) {
redirect('m=login');
}
$updisciplineId = val($_REQUEST, 'updisciplineId');
$learningMode = val($_REQUEST, 'learningMode');
if (empty($updisciplineId) || empty($learningMode)) {
throw new Exception('Missed required param', 404);
}
$updiscipline = entry_sql('SELECT * FROM updiscipline WHERE updisciplineId=:updisciplineId', array(':updisciplineId' => $updisciplineId));
if (empty($updiscipline)) {
throw new Exception('Updiscipline not found', 404);
}
$groupPeriod = entry_sql('SELECT gp.* FROM group_history gh INNER JOIN group_period gp USING(groupPeriodId) WHERE gh.studentId=:studentId AND gp.sersemester=:sersemester', array('studentId' => studentId(), 'sersemester' => $updiscipline['sersemester']));
if (empty($groupPeriod)) {
throw new Exception('Cannot detect groupPeriod', 404);
}
$events = entries_sql('SELECT * FROM event WHERE updisciplineId=:updisciplineId AND groupPeriodId=:groupPeriodId AND learningMode=:learningMode', array('groupPeriodId' => $groupPeriod['groupPeriodId'], 'updisciplineId' => $updiscipline['updisciplineId'], 'learningMode' => $learningMode));
array_walk($events, function (&$event, $k, $studentId) {
$event['c'] = material::i($event['instanceType'])->c();
$event['grade'] = material::i($event['instanceType'])->get_grade($event['instanceId'], $studentId);
}, studentId());
env('breadcrumbs', array(array(lng('up:disciplines'), '/?c=up'), array($updiscipline['disciplineName'], '/?c=up&m=events&updisciplineId=' . $updisciplineId . '&learningMode=' . $learningMode), lng('up:events')));
tpl('up/events', array('updiscipline' => $updiscipline, 'events' => $events, 'result' => entry_sql('SELECT * FROM result WHERE studentId=:studentId AND updisciplineId=:updisciplineId AND learningMode=:learningMode', array('studentId' => studentId(), 'updisciplineId' => $updiscipline['updisciplineId'], 'learningMode' => $learningMode))));
}
示例2: _up_breadcrumbs
protected function _up_breadcrumbs($event)
{
$updiscipline = entry_sql('SELECT * FROM updiscipline WHERE updisciplineId=:updisciplineId', array(':updisciplineId' => $event['updisciplineId']));
if (empty($updiscipline)) {
throw new Exception('Cannot fetch updiscipline "' . $event['updisciplineId'] . '"', 500);
}
return array(array(lng('up:disciplines'), '/?c=up'), array($updiscipline['disciplineName'], '/?c=up&m=events&updisciplineId=' . $event['updisciplineId'] . '&learningMode=' . $event['learningMode']), lng('up:events'), array($event['name'], '/?c=' . material::i($event['instanceType'])->c() . '&eventId=' . $event['eventId'] . '&id=' . $event['instanceId']));
}
示例3: trigger_reg
<?php
trigger_reg('material.graded', function ($codeOrName, $id, $studentId) {
global $CFG;
$code = is_numeric($codeOrName) ? $codeOrName : array_search($codeOrName, $CFG->material);
if (!is_numeric($code)) {
throw new Exception('Cannot detect meterial type of "' . $codeOrName . '"', 500);
}
$updisciplines = entries_sql('SELECT ud.*,e.groupPeriodId,e.learningMode FROM event e, updiscipline ud, group_period gp, group_history gh
WHERE e.updisciplineId=ud.updisciplineId AND ud.upId=gp.upId AND gp.groupPeriodId=gh.groupPeriodId AND e.instanceType=:type AND e.instanceId=:id AND gh.studentId=:studentId', array('type' => $code, 'id' => $id, 'studentId' => $studentId));
foreach ($updisciplines as $upd) {
$events = entries_sql('SELECT * FROM event WHERE updisciplineId=:updisciplineId AND groupPeriodId=:groupPeriodId AND learningMode=:learningMode', array('groupPeriodId' => $upd['groupPeriodId'], 'updisciplineId' => $upd['updisciplineId'], 'learningMode' => $upd['learningMode']));
$result = array_reduce($events, function ($r, $e) {
$r['sum'] += $e['weight'];
$r['got'] += $e['weight'] * val(material::i($e['instanceType'])->get_grade($e['instanceId'], $r['studentId']), 'coef', 0);
return $r;
}, array('studentId' => $studentId, 'sum' => 0, 'got' => 0));
if (empty($result['sum'])) {
continue;
}
entry_change('result', array('grade' => $result['got'] / $result['sum'] * 100), array('studentId' => $studentId, 'updisciplineId' => $upd['updisciplineId'], 'learningMode' => $upd['learningMode']));
}
});
示例4: attempt
public function attempt()
{
if (!env('student')) {
redirect('m=login');
}
$quizId = val($_REQUEST, 'id', -1);
$attemptId = val($_REQUEST, 'attemptId', -1);
$page = val($_REQUEST, 'page', 1);
$complete = val($_REQUEST, 'complete');
$pro = val($_REQUEST, 'pro');
if (!empty($pro)) {
env('modepro', true);
}
$now = date('Y-m-d H:i:s');
if (val(env('event'), 'instanceId') != $quizId) {
throw new Exception('Cannot fetch event', 404);
}
$quiz = entry_sql('SELECT * FROM quiz WHERE quizId=:quizId', array('quizId' => $quizId));
if (empty($quiz)) {
throw new Exception('Cannot find quiz "' . $id . '"', 404);
}
if ($attemptId == 0) {
// create new attempt
$attemptId = material::i('quiz')->startAttempt($quiz);
redirect('c=quiz&m=attempt&id=' . $quizId . '&attemptId=' . $attemptId);
}
$attempt = entry_sql('SELECT * FROM quiz_attempt WHERE quizAttemptId=:quizAttemptId AND quizId=:quizId AND studentId=:studentId', array('quizAttemptId' => $attemptId, 'quizId' => $quizId, 'studentId' => studentId()));
if (empty($attempt)) {
throw new Exception('Attempt "' . $attemptId . '" not found', 404);
}
if ($attempt['status'] != STATUS_INPROC) {
throw new Exception('Attempt is not available anymore', 403);
}
if (!empty($quiz['timeLimit']) && date('Y-m-d H:i:s', strtotime($attempt['timeStart']) + $quiz['timeLimit']) < $now) {
// if time expired
material::i('quiz')->finishAttempt($attemptId);
redirect('c=quiz&id=' . $quiz['quizId'] . '&eventId=' . val(env('event'), 'eventId'));
}
$questions = entries_sql('SELECT * FROM question_session WHERE quizAttemptId=:quizAttemptId ORDER BY num', array('quizAttemptId' => $attemptId));
$perpage = 1;
$numl = $page * $perpage;
$numf = $numl - $perpage;
$qresponses = val($_REQUEST, 'question', array());
foreach ($questions as &$qsess) {
$qobj = question::i($qsess['questionId']);
$qresponse = val($qresponses, $qsess['questionId']);
if (!empty($qresponse)) {
$qgrade = $qobj->get_grade($qresponse);
$qsess['grade'] = $qobj->get_grade($qresponse);
$qsess['response'] = json_encode($qresponse);
$qsess['status'] = STATUS_ANSWER;
entry_change('question_session', $qsess, array('questionSessionId' => $qsess['questionSessionId']));
entry_change('quiz_attempt', array('timeChange' => date('Y-m-d H:i:s')), array('quizAttemptId' => $attemptId));
}
if ($qsess['num'] > $numf && $qsess['num'] <= $numl) {
// render only questions of the page
$qsess['qhtml'] = $qobj->render(json_decode($qsess['response']));
}
$qsess['page'] = ceil($qsess['num'] / $perpage);
}
env('breadcrumbs', array_merge($this->_up_breadcrumbs(env('event')), array(lng('quiz:attempt'))));
if (!empty($complete)) {
material::i('quiz')->finishAttempt($attemptId);
trigger_exe('material.graded', array('quiz', $quizId, studentId()));
redirect('c=quiz&id=' . $quiz['quizId'] . '&eventId=' . val(env('event'), 'eventId'));
}
tpl('quiz/attempt', array('page' => $page, 'quiz' => $quiz, 'attempt' => $attempt, 'questions' => $questions));
}