/** * Validate that all required assertion steps of a badge were completed and remove the stored assertion steps for all tokens * * @param BadgeClass $badgeClass * @param array $tokens * @return boolean */ public function validateAndClearAssertionSteps(BadgeClass $badgeClass, array $tokens) { $completedAssertionSteps = array(); foreach ($tokens as $token) { $assertionStep = $this->assertionStepStore->get($token); if ($assertionStep instanceof AssertionStep && $assertionStep->getBadgeClass() === $badgeClass) { $completedAssertionSteps[$assertionStep->getIdentifier()] = $assertionStep; } } foreach ($badgeClass->getAssertionSteps() as $stepIdentifier) { if (!isset($completedAssertionSteps[$stepIdentifier])) { return FALSE; } } foreach ($tokens as $token) { $this->assertionStepStore->remove($token); } return TRUE; }