/** * @param FormFlow $flow The flow involved. * @param integer $stepNumber Number of the step the link will be generated for. * @return boolean If the step can be linked to. */ public function isStepLinkable(FormFlow $flow, $stepNumber) { if (!$flow->isAllowDynamicStepNavigation() || $flow->getCurrentStepNumber() === $stepNumber || $flow->isStepSkipped($stepNumber)) { return false; } $lastStepConsecutivelyDone = 0; for ($i = $flow->getFirstStepNumber(), $lastStepNumber = $flow->getLastStepNumber(); $i < $lastStepNumber; ++$i) { if ($flow->isStepDone($i)) { $lastStepConsecutivelyDone = $i; } else { break; } } $lastStepLinkable = $lastStepConsecutivelyDone + 1; if ($stepNumber <= $lastStepLinkable) { return true; } return false; }