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);
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.
$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.';
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) {
}
$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);