public static function flags($get = null, $int = false) { static $_flags = null; if (is_null($_flags)) { $_flags = xbData::entityFlags(array(3 => 'hidden', 2 => 'repeat', 1 => 'required')); } return xbData::flagsValue($_flags, $get, $int); }
public static function request($fields, $prefix = '', $operation = 'create', $source = null) { // Статика static $freq = null; static $fhid = null; if (is_null($freq)) { $freq = xbDataFields::flagName('required'); } if (is_null($fhid)) { $fhid = xbDataFields::flagName('hidden'); } // Инициализация $ret = array('values' => array(), 'notset' => array(), 'incorrect' => array(), 'ignored' => array()); $op = xbData::operation($operation); if (!in_array($op, array('create', 'read', 'update'))) { return false; } // Поля foreach ($fields as $alias => $field) { $got = null; if (!is_array($source)) { $pa = $prefix . $alias; if (array_key_exists($pa, $_POST)) { $got = $_POST[$pa]; } elseif (array_key_exists($pa, $_GET)) { $got = urldecode($_GET[$pa]); } } else { if (!array_key_exists($alias, $source)) { continue; } $got = $source[$alias]; } if (!$field['access'][$op] || ($field['flags'] & $fhid) != 0) { continue; } // Проверка обязательности $req = ($field['flags'] & $freq) != 0; if ($req) { if (is_null($got) || empty($got)) { $ret['notset'][] = $alias; continue; } } // Регулярки $cor = true; if (!is_null($field['regexp'])) { if (preg_match($field['regexp'], $got)) { if (!is_null($field['replace'])) { if (!empty($field['replace'])) { $got = preg_replace($field['regexp'], $field['replace'], $got); } } } else { $cor = false; } } // Элементы if ($cor && is_array($field['elements'])) { if (!is_null($got)) { if (!array_key_exists($got, $field['elements'])) { $cor = false; } } else { $cor = false; } } // Итог проверок на корректность if (!$cor) { if ($req) { $ret['incorrect'][] = $alias; } else { $ret['ignored'][] = $alias; } continue; } // Обработка if (!is_null($field['strip'])) { $got = preg_replace($field['strip'], '', $got); } $got = xbData::pack($field['type'], $got); $ret['values'][$alias] = $got; } return $ret; }