protected function render_issued_badge(issued_badge $ibadge) { global $USER, $CFG, $DB; $issued = $ibadge->issued; $badge = new badge($ibadge->badgeid); $today_date = date('Y-m-d'); $today = strtotime($today_date); $table = new html_table(); $imagetable = new html_table(); $imagetable->attributes = array('class' => 'clearfix badgeissuedimage'); $imagetable->data[] = array(html_writer::empty_tag('img', array('src' => $issued['badge']['image']))); if ($USER->id == $ibadge->recipient && !empty($CFG->enablebadges)) { $imagetable->data[] = array($this->output->single_button(new moodle_url('/badges/badge.php', array('hash' => $ibadge->hash, 'bake' => true)), get_string('download'), 'POST')); $expiration = isset($issued['expires']) ? strtotime($issued['expires']) : $today + 1; if (!empty($CFG->badges_allowexternalbackpack) && $expiration > $today && badges_user_has_backpack($USER->id)) { $assertion = new moodle_url('/badges/assertion.php', array('b' => $ibadge->hash)); $attributes = array('type' => 'button', 'value' => get_string('addtobackpack', 'badges'), 'onclick' => 'OpenBadges.issue(["' . $assertion->out(false) . '"], function(errors, successes) { })'); $tobackpack = html_writer::tag('input', '', $attributes); $imagetable->data[] = array($tobackpack); } } $datatable = new html_table(); $datatable->attributes = array('class' => 'badgeissuedinfo'); $datatable->colclasses = array('bfield', 'bvalue'); $datatable->data[] = array($this->output->heading(get_string('issuerdetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('issuername', 'badges'), $badge->issuername); if (isset($badge->issuercontact) && !empty($badge->issuercontact)) { $datatable->data[] = array(get_string('contact', 'badges'), html_writer::tag('a', $badge->issuercontact, array('href' => 'mailto:' . $badge->issuercontact))); } $datatable->data[] = array($this->output->heading(get_string('badgedetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('name'), $badge->name); $datatable->data[] = array(get_string('description', 'badges'), $badge->description); if ($badge->type == BADGE_TYPE_COURSE && isset($badge->courseid)) { $coursename = $DB->get_field('course', 'fullname', array('id' => $badge->courseid)); $datatable->data[] = array(get_string('course'), $coursename); } $datatable->data[] = array(get_string('bcriteria', 'badges'), self::print_badge_criteria($badge)); $datatable->data[] = array($this->output->heading(get_string('issuancedetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('dateawarded', 'badges'), $issued['issued_on']); if (isset($issued['expires'])) { $expiration = strtotime($issued['expires']); if ($expiration < $today) { $cell = new html_table_cell($issued['expires'] . get_string('warnexpired', 'badges')); $cell->attributes = array('class' => 'notifyproblem warning'); $datatable->data[] = array(get_string('expirydate', 'badges'), $cell); $image = html_writer::start_tag('div', array('class' => 'badge')); $image .= html_writer::empty_tag('img', array('src' => $issued['badge']['image'])); $image .= $this->output->pix_icon('i/expired', get_string('expireddate', 'badges', $issued['expires']), 'moodle', array('class' => 'expireimage')); $image .= html_writer::end_tag('div'); $imagetable->data[0] = array($image); } else { $datatable->data[] = array(get_string('expirydate', 'badges'), $issued['expires']); } } // Print evidence. $agg = $badge->get_aggregation_methods(); $evidence = $badge->get_criteria_completions($ibadge->recipient); $eids = array_map(create_function('$o', 'return $o->critid;'), $evidence); unset($badge->criteria[BADGE_CRITERIA_TYPE_OVERALL]); $items = array(); foreach ($badge->criteria as $type => $c) { if (in_array($c->id, $eids)) { if (count($c->params) == 1) { $items[] = get_string('criteria_descr_single_' . $type, 'badges') . $c->get_details(); } else { $items[] = get_string('criteria_descr_' . $type, 'badges', strtoupper($agg[$badge->get_aggregation_method($type)])) . $c->get_details(); } } } $datatable->data[] = array(get_string('evidence', 'badges'), get_string('completioninfo', 'badges') . html_writer::alist($items, array(), 'ul')); $table->attributes = array('class' => 'generalbox boxaligncenter issuedbadgebox'); $table->data[] = array(html_writer::table($imagetable), html_writer::table($datatable)); $htmlbadge = html_writer::table($table); return $htmlbadge; }
protected function render_issued_badge(issued_badge $ibadge) { global $USER, $CFG, $DB, $SITE; $issued = $ibadge->issued; $userinfo = $ibadge->recipient; $badgeclass = $ibadge->badgeclass; $badge = new badge($ibadge->badgeid); $now = time(); $table = new html_table(); $table->id = 'issued-badge-table'; $imagetable = new html_table(); $imagetable->attributes = array('class' => 'clearfix badgeissuedimage'); $imagetable->data[] = array(html_writer::empty_tag('img', array('src' => $badgeclass['image']))); if ($USER->id == $userinfo->id && !empty($CFG->enablebadges)) { $imagetable->data[] = array($this->output->single_button(new moodle_url('/badges/badge.php', array('hash' => $issued['uid'], 'bake' => true)), get_string('download'), 'POST')); $expiration = isset($issued['expires']) ? $issued['expires'] : $now + 86400; if (!empty($CFG->badges_allowexternalbackpack) && $expiration > $now && badges_user_has_backpack($USER->id)) { $assertion = new moodle_url('/badges/assertion.php', array('b' => $issued['uid'])); $action = new component_action('click', 'addtobackpack', array('assertion' => $assertion->out(false))); $attributes = array('type' => 'button', 'id' => 'addbutton', 'value' => get_string('addtobackpack', 'badges')); $tobackpack = html_writer::tag('input', '', $attributes); $this->output->add_action_handler($action, 'addbutton'); $imagetable->data[] = array($tobackpack); } } $datatable = new html_table(); $datatable->attributes = array('class' => 'badgeissuedinfo'); $datatable->colclasses = array('bfield', 'bvalue'); // Recipient information. $datatable->data[] = array($this->output->heading(get_string('recipientdetails', 'badges'), 3), ''); if ($userinfo->deleted) { $strdata = new stdClass(); $strdata->user = fullname($userinfo); $strdata->site = format_string($SITE->fullname, true, array('context' => context_system::instance())); $datatable->data[] = array(get_string('name'), get_string('error:userdeleted', 'badges', $strdata)); } else { $datatable->data[] = array(get_string('name'), fullname($userinfo)); } $datatable->data[] = array($this->output->heading(get_string('issuerdetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('issuername', 'badges'), $badge->issuername); if (isset($badge->issuercontact) && !empty($badge->issuercontact)) { $datatable->data[] = array(get_string('contact', 'badges'), obfuscate_mailto($badge->issuercontact)); } $datatable->data[] = array($this->output->heading(get_string('badgedetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('name'), $badge->name); $datatable->data[] = array(get_string('description', 'badges'), $badge->description); if ($badge->type == BADGE_TYPE_COURSE && isset($badge->courseid)) { $coursename = $DB->get_field('course', 'fullname', array('id' => $badge->courseid)); $datatable->data[] = array(get_string('course'), $coursename); } $datatable->data[] = array(get_string('bcriteria', 'badges'), self::print_badge_criteria($badge)); $datatable->data[] = array($this->output->heading(get_string('issuancedetails', 'badges'), 3), ''); $datatable->data[] = array(get_string('dateawarded', 'badges'), userdate($issued['issuedOn'])); if (isset($issued['expires'])) { if ($issued['expires'] < $now) { $cell = new html_table_cell(userdate($issued['expires']) . get_string('warnexpired', 'badges')); $cell->attributes = array('class' => 'notifyproblem warning'); $datatable->data[] = array(get_string('expirydate', 'badges'), $cell); $image = html_writer::start_tag('div', array('class' => 'badge')); $image .= html_writer::empty_tag('img', array('src' => $badgeclass['image'])); $image .= $this->output->pix_icon('i/expired', get_string('expireddate', 'badges', userdate($issued['expires'])), 'moodle', array('class' => 'expireimage')); $image .= html_writer::end_tag('div'); $imagetable->data[0] = array($image); } else { $datatable->data[] = array(get_string('expirydate', 'badges'), userdate($issued['expires'])); } } // Print evidence. $agg = $badge->get_aggregation_methods(); $evidence = $badge->get_criteria_completions($userinfo->id); $eids = array_map(create_function('$o', 'return $o->critid;'), $evidence); unset($badge->criteria[BADGE_CRITERIA_TYPE_OVERALL]); $items = array(); foreach ($badge->criteria as $type => $c) { if (in_array($c->id, $eids)) { if (count($c->params) == 1) { $items[] = get_string('criteria_descr_single_' . $type, 'badges') . $c->get_details(); } else { $items[] = get_string('criteria_descr_' . $type, 'badges', core_text::strtoupper($agg[$badge->get_aggregation_method($type)])) . $c->get_details(); } } } $datatable->data[] = array(get_string('evidence', 'badges'), get_string('completioninfo', 'badges') . html_writer::alist($items, array(), 'ul')); $table->attributes = array('class' => 'generalbox boxaligncenter issuedbadgebox'); $table->data[] = array(html_writer::table($imagetable), html_writer::table($datatable)); $htmlbadge = html_writer::table($table); return $htmlbadge; }