public static function getLegal(&$group, $fields)
{
$c = array();
$legalities = array('checkbox' => array('true', 'false'), 'multiple' => array('is', 'not'), 'text' => array('is', 'not'), 'date' => array('is', 'not', 'greater', 'less'), 'number' => array('is', 'not', 'greater', 'less'), 'comment' => array());
foreach ($fields as $field) {
$c[$field['id']] = $legalities[$field['type']];
}
if (empty($group['rules'])) {
return $c;
}
// subtract illogical selections from $c
foreach ($group['rules'] as $rule) {
if (!isset($c[$rule['field_id']])) {
continue;
}
// create reference to this field's legalities
$l =& $c[$rule['field_id']];
switch ($rule['logic']) {
case 'true':
case 'false':
// if rule is true or false, field cannot be ANYTHING else
unset($l[array_search('true', $l)]);
unset($l[array_search('false', $l)]);
break;
case 'is':
case 'not':
unset($l[array_search('not', $l)]);
unset($l[array_search('is', $l)]);
break;
case 'greater':
unset($l[array_search('greater', $l)]);
break;
case 'less':
unset($l[array_search('less', $l)]);
break;
}
}
foreach ($c as $key => $val) {
if (empty($val)) {
unset($c[$key]);
}
}
return $c;
}