Esempio n. 1
0
/**
 * 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();
}
Esempio n. 2
0
 /**
  * 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()));
 }
Esempio n. 3
0
 /**
  * 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;
     }
 }
Esempio n. 4
0
// 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);