| Server IP : 195.130.67.5 / Your IP : 216.73.217.154 Web Server : Microsoft-IIS/10.0 System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586 User : IUSR ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Old Sites/enoikio/modules/webform/src/Utility/ |
Upload File : |
<?php
namespace Drupal\webform\Utility;
/**
* Provides helper to handle logic related issues.
*/
class WebformLogicHelper {
/**
* Track recursions.
*
* @var array
*/
static private $recursionTracker = [];
/**
* Track recursions by counting how many times a value is called.
*
* @param string $value
* A string value typically a token.
* @param bool $increment
* TRUE to increment tracking and FALSE to deincrement tracking.
*
* @return bool
* FALSE when recursion is detected.
*/
protected static function trackRecursion($value, $increment = TRUE) {
self::$recursionTracker += [$value => 0];
if (self::$recursionTracker[$value] === FALSE) {
return FALSE;
}
if ($increment) {
self::$recursionTracker[$value]++;
if (self::$recursionTracker[$value] > 100) {
// Cancel processing by setting the recursion tracker value to FALSE.
self::$recursionTracker[$value] = FALSE;
throw new \LogicException(sprintf('The "%s" is being called recursively.', $value));
}
}
else {
self::$recursionTracker[$value]--;
}
}
/**
* Start recursion tracking.
*
* @param string $value
* A string value typically a token.
*
* @return bool
* FALSE when recursion is detected.
*/
public static function startRecursionTracking($value) {
return self::trackRecursion($value, TRUE);
}
/**
* Stop recursion tracking.
*
* @param string $value
* A string value typically a token.
*
* @return bool
* FALSE when recursion is detected.
*/
public static function stopRecursionTracking($value) {
return self::trackRecursion($value, FALSE);
}
}