Skip to content
Browse files

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

…il if it is set
  • Loading branch information...
1 parent cf5a329 commit 265b866fe5a701d825bf6f146237ca1b95025be1 @ybozhko ybozhko committed Apr 29, 2013
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
View
6 badges/mybackpack.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);
View
6 lang/en/badges.php
@@ -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.';
View
23 lib/badgeslib.php
@@ -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.
Something went wrong with that request. Please try again.