/**
  * 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;
 }
 /**
  * @param BadgeClass $badgeClass
  * @return array
  */
 public function badgeClassToArray(BadgeClass $badgeClass)
 {
     if ($badgeClass->getImage() !== NULL) {
         $helper = new \TYPO3\Media\ViewHelpers\Uri\ImageViewHelper();
         $imageUri = $helper->render($badgeClass->getImage(), self::BADGE_IMAGE_SIZE, self::BADGE_IMAGE_SIZE, FALSE, FALSE);
     } else {
         $imageUri = NULL;
     }
     if (strpos($badgeClass->getCriteria(), 'http') === 0) {
         $criteriaUri = $badgeClass->getCriteria();
     } else {
         $criteriaNode = $this->propertyMapper->convert($badgeClass->getCriteria(), 'TYPO3\\TYPO3CR\\Domain\\Model\\NodeInterface');
         if ($criteriaNode === NULL) {
             $criteriaUri = NULL;
         } else {
             $criteriaUri = $this->controllerContext->getUriBuilder()->reset()->setCreateAbsoluteUri(TRUE)->setFormat('html')->uriFor('show', array('node' => $criteriaNode), 'Frontend\\Node', 'TYPO3.Neos');
         }
     }
     $issuerUri = $this->controllerContext->getUriBuilder()->reset()->setCreateAbsoluteUri(TRUE)->setFormat('json')->uriFor('show', array('issuerOrganization' => $badgeClass->getIssuerIdentifier()), 'IssuerOrganization');
     return array('name' => $badgeClass->getName(), 'description' => $badgeClass->getDescription(), 'image' => $imageUri, 'criteria' => $criteriaUri, 'issuer' => $issuerUri, 'tags' => $badgeClass->getTags());
 }