Skip to content
Permalink
Browse files

MDL-39207 badges: Generate badge assertions using user's backpack ema…

…il if it is set
  • Loading branch information...
Yuliya Bozhko
Yuliya Bozhko committed Apr 28, 2013
1 parent cf5a329 commit 265b866fe5a701d825bf6f146237ca1b95025be1
Showing with 22 additions and 13 deletions.
  1. +5 −1 badges/mybackpack.php
  2. +4 −2 lang/en/badges.php
  3. +13 −10 lib/badgeslib.php
@@ -78,7 +78,11 @@
if ($form->is_cancelled()) {
redirect(new moodle_url('/badges/mybadges.php'));
} else if ($data = $form->get_data()) {
$groups = array_filter($data->group);
if (empty($data->group)) {
redirect(new moodle_url('/badges/mybadges.php'));
} else {
$groups = array_filter($data->group);
}
// Remove all unselected collections if there are any.
$sqlparams = array('backpack' => $backpack->id);
@@ -86,7 +86,9 @@
Currently, only <a href="http://backpack.openbadges.org">Mozilla OpenBadges Backpack</a> is supported. You need to sign up for a backpack service before trying to set up backpack connection on this page.';
$string['backpackdetails'] = 'Backpack settings';
$string['backpackemail'] = 'Email address';
$string['backpackemail_help'] = 'Email address associated with your backpack';
$string['backpackemail_help'] = 'Email address associated with your backpack.
If backpack connection is established, this email address is used instead of your internal email address to push badges to your backpack.';
$string['backpackimport'] = 'Badge import settings';
$string['backpackimport_help'] = 'After backpack connection is successfully established, badges from your backpack can be displayed on your "My Badges" page and your profile page.
@@ -100,7 +102,7 @@
$string['badgeprivacysetting'] = 'Badge privacy settings';
$string['badgeprivacysetting_help'] = 'Badges you earn can be displayed on your account profile page. This setting allows you to automatically set visibility of the newly earned badges.
You can still control individual badge privacy settings on your <a href="mybadges.php">My badges</a> page.';
You can still control individual badge privacy settings on your "My badges" page.';
$string['badgeprivacysetting_str'] = 'Automatically show badges I earn on my profile page';
$string['badgesalt'] = 'Salt for hashing the recepient\'s email address';
$string['badgesalt_desc'] = 'Using a hash allows backpack services to confirm the badge earner without having to expose their email address. This setting should only use numbers and letters.';
@@ -836,14 +836,17 @@ function badges_get_issued_badge_info($hash) {
bi.dateissued,
bi.dateexpire,
u.email,
b.*
b.*,
bb.email as backpackemail
FROM
{badge} b,
{badge_issued} bi,
{user} u
WHERE b.id = bi.badgeid
AND u.id = bi.userid
AND ' . $DB->sql_compare_text('bi.uniquehash', 40) . ' = ' . $DB->sql_compare_text(':hash', 40),
{badge} b
JOIN {badge_issued} bi
ON b.id = bi.badgeid
JOIN {user} u
ON u.id = bi.userid
LEFT JOIN {badge_backpack} bb
ON bb.userid = bi.userid
WHERE ' . $DB->sql_compare_text('bi.uniquehash', 40) . ' = ' . $DB->sql_compare_text(':hash', 40),
array('hash' => $hash), IGNORE_MISSING);
if ($record) {
@@ -854,11 +857,11 @@ function badges_get_issued_badge_info($hash) {
}
$url = new moodle_url('/badges/badge.php', array('hash' => $hash));
$email = empty($record->backpackemail) ? $record->email : $record->backpackemail;
// Recipient's email is hashed: <algorithm>$<hash(email + salt)>.
$badgesalt = isset($CFG->badgesalt) ? $CFG->badgesalt : '';
$a['recipient'] = 'sha256$' . hash('sha256', $record->email . $badgesalt);
$a['salt'] = $badgesalt;
$a['recipient'] = 'sha256$' . hash('sha256', $email . $CFG->badges_badgesalt);
$a['salt'] = $CFG->badges_badgesalt;
if ($record->dateexpire) {
$a['expires'] = date('Y-m-d', $record->dateexpire);

0 comments on commit 265b866

Please sign in to comment.
You can’t perform that action at this time.