/** * 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()); }