/** * Get issued badge details for assertion URL * * @deprecated since Moodle 2.6 * @param string $hash Unique hash of a badge * @return array Information about issued badge. */ function badges_get_issued_badge_info($hash) { debugging('Function badges_get_issued_badge_info() is deprecated. Please use core_badges_assertion class and methods to generate badge assertion.', DEBUG_DEVELOPER); $assertion = new core_badges_assertion($hash); return $assertion->get_badge_assertion(); }
/** * Test badges assertion generated when a badge is issued. */ public function test_badges_assertion() { $this->preventResetByRollback(); // Messaging is not compatible with transactions. $badge = new badge($this->coursebadge); $this->assertFalse($badge->is_issued($this->user->id)); $criteria_overall = award_criteria::build(array('criteriatype' => BADGE_CRITERIA_TYPE_OVERALL, 'badgeid' => $badge->id)); $criteria_overall->save(array('agg' => BADGE_CRITERIA_AGGREGATION_ANY)); $criteria_overall1 = award_criteria::build(array('criteriatype' => BADGE_CRITERIA_TYPE_PROFILE, 'badgeid' => $badge->id)); $criteria_overall1->save(array('agg' => BADGE_CRITERIA_AGGREGATION_ALL, 'field_address' => 'address')); $this->user->address = 'Test address'; $sink = $this->redirectEmails(); user_update_user($this->user, false); $this->assertCount(1, $sink->get_messages()); $sink->close(); // Check if badge is awarded. $this->assertDebuggingCalled('Error baking badge image!'); $awards = $badge->get_awards(); $this->assertCount(1, $awards); // Get assertion. $award = reset($awards); $assertion = new core_badges_assertion($award->uniquehash); $testassertion = $this->assertion; // Make sure JSON strings have the same structure. $this->assertStringMatchesFormat($testassertion->badge, json_encode($assertion->get_badge_assertion())); $this->assertStringMatchesFormat($testassertion->class, json_encode($assertion->get_badge_class())); $this->assertStringMatchesFormat($testassertion->issuer, json_encode($assertion->get_issuer())); }
/** * Initializes the badge to display * * @param string $hash Issued badge hash */ public function __construct($hash) { global $DB; $assertion = new core_badges_assertion($hash); $this->issued = $assertion->get_badge_assertion(); $this->badgeclass = $assertion->get_badge_class(); $rec = $DB->get_record_sql('SELECT userid, visible, badgeid FROM {badge_issued} WHERE ' . $DB->sql_compare_text('uniquehash', 40) . ' = ' . $DB->sql_compare_text(':hash', 40), array('hash' => $hash), IGNORE_MISSING); if ($rec) { // Get a recipient from database. $namefields = get_all_user_name_fields(true, 'u'); $user = $DB->get_record_sql("SELECT u.id, {$namefields}, u.deleted, u.email\n FROM {user} u WHERE u.id = :userid", array('userid' => $rec->userid)); $this->recipient = $user; $this->visible = $rec->visible; $this->badgeid = $rec->badgeid; } }
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Serve assertion JSON by unique hash of issued badge * * @package core * @subpackage badges * @copyright 2012 onwards Totara Learning Solutions Ltd {@link http://www.totaralms.com/} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @author Yuliya Bozhko <*****@*****.**> */ define('AJAX_SCRIPT', true); define('NO_MOODLE_COOKIES', true); // No need for a session here. require_once __DIR__ . '/../config.php'; if (empty($CFG->enablebadges)) { print_error('badgesdisabled', 'badges'); } $hash = required_param('b', PARAM_ALPHANUM); // Issued badge unique hash for badge assertion. $action = optional_param('action', null, PARAM_BOOL); // Generates badge class if true. $assertion = new core_badges_assertion($hash); if (!is_null($action)) { // Get badge class or issuer information depending on $action. $json = $action ? $assertion->get_badge_class() : $assertion->get_issuer(); } else { // Otherwise, get badge assertion. $json = $assertion->get_badge_assertion(); } echo $OUTPUT->header(); echo json_encode($json);