コード例 #1
0
 /**
  * Adds route parameters for dynamic step navigation.
  * @param array $parameters Current route parameters.
  * @param FormFlow $flow The flow involved.
  * @param integer|null $stepNumber Number of the step the link will be generated for. If <code>null</code>, the <code>$flow</code>'s current step number will be used.
  * @return array Route parameters plus instance and step parameter.
  */
 public function addRouteParameters(array $parameters, FormFlow $flow, $stepNumber = null)
 {
     if ($stepNumber === null) {
         $stepNumber = $flow->getCurrentStepNumber();
     }
     $parameters[$flow->getDynamicStepNavigationInstanceParameter()] = $flow->getInstanceId();
     $parameters[$flow->getDynamicStepNavigationStepParameter()] = $stepNumber;
     return $parameters;
 }
コード例 #2
0
 /**
  * @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;
 }