Пример #1
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()));
 }
Пример #2
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);