protected static function validateIntegerMulti($test, array $ranges, $source, $argument = "Argument")
{
if (!is_integer($test)) {
throw new InvalidArgumentException("{$argument} given to {$source} must be a number, but '{$test}' was given.");
}
$match = false;
foreach ($ranges as $range) {
$match |= $test >= $range[0] && $test <= $range[1];
}
if (!$match) {
// Put together a good error "range 1-2 or 4-6"
$rangeStr = "range ";
for ($i = 0; $i < count($ranges); $i++) {
$rangeStr .= $ranges[$i][0] . "-" . $ranges[$i][1];
if ($i == count($ranges) - 1) {
continue;
} elseif ($i == count($ranges) - 2) {
$rangeStr .= " or ";
} else {
$rangeStr .= ", ";
}
}
throw new InvalidArgumentException("{$argument} given to {$source} must be in {$rangeStr}, but {$test} was given.");
}
}