All pastes #449555 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-04-20 08:25 UTC
rendered paste body
public function set_rules ($name, $rules) {
if ($rules == false) return false;
if (is_array ($rules)) $rules = implode('|', $rules);

// Change pipe
if (! isset($this->rules[$name])) { $pipe = ''; $this->rules[$name] = ''; } 
else { $pipe = '|'; }

foreach(explode('|', $rules) as $rule) {
	switch(substr($rule, 0, strpos($rule, '['))) {
		case 'required':
			$this->rules[$name] .= "{$pipe}required";
			// Check if we are using meta-arrays
			if ($size = strtoarray ($rule)) {
				// Make min an integer
				$min = (int) $size[0];
				// Max is an integer if the format was [2,3], otherwise false
				$max = (isset ($size[1])) ? (int) $size[1] : false;
				// No max and a min means exact length
				if ($max === false && $min > 0)
					$this->set_rules ($name, "exact_length[$min]");
				// If min and max are the same, exact length
				elseif (($min == $max) && $min > 0)
					$this->set_rules ($name, "exact_length[$min]");
				// Min and max are not both zero
				else {
					if ($min > 0)    $this->set_rules ($name, "min_length[$min]");
					if ($max > $min) $this->set_rules ($name, "max_length[$max]"); 
				}
			}
		break;
		case 'allow':
			$types = strtoarray ($rule); 
			$this->upload_rules[$name] = implode ('|', $types);
		break;
		default:
			$this->rules[$name] .= $pipe.$rule;
		break;
	}
	$pipe = "|";
}

return true;
}