summaryrefslogtreecommitdiff
path: root/web/include/Tools.inc
diff options
context:
space:
mode:
Diffstat (limited to 'web/include/Tools.inc')
-rw-r--r--web/include/Tools.inc152
1 files changed, 152 insertions, 0 deletions
diff --git a/web/include/Tools.inc b/web/include/Tools.inc
new file mode 100644
index 0000000..430fe54
--- /dev/null
+++ b/web/include/Tools.inc
@@ -0,0 +1,152 @@
+<?
+ # vim:set ts=4:
+ # vim:set shiftwidth=4:
+
+ /*
+ * Backslide - 3node BTS
+ * (c) 2002 Florian Reitmeir/3node
+ * Peter Palfrader/3node
+ *
+ * $Id: Tools.inc,v 1.2 2002/05/28 14:31:24 weasel Exp $
+ */
+#
+# Todo:
+# * Dokumemtation
+#
+function error($msg)
+{
+
+ print "Error: $msg\n";
+ exit;
+}
+
+function redirect($ns, $name='', $vars = array())
+{
+ if (sizeof($vars)>0) {
+ foreach ($vars as $key=>$value) {
+ $param[] = $key.'='.urlencode($value);
+ }
+ $pars = '?' . implode('&', $param);
+ } else {
+ $pars = '';
+ }
+
+ if ($name != '') {
+ Header('Location: '.$ns->config->baseurl.'/'.$name . $pars);
+ } elseif (isset ($GLOBALS['followup_to'])) {
+ Header('Location: '.$GLOBALS['followup_to'] . $pars);
+ } elseif (isset ($GLOBALS['HTTP_REFERER'])) {
+ Header('Location: '.$GLOBALS['HTTP_REFERER'] . $pars);
+ } else {
+ error('Fehler: Weiss nicht mehr wohin jetzt.');
+ };
+}
+
+function param_check(&$parameters, &$new_check_fields, $optionals=array())
+{
+ $check_parameters = array();
+
+ $params_required = isset($optionals['params_required']) ? $optionals['params_required']: true;
+ $form_id = isset($optionals['form_id']) ? $optionals['form_id'] : $parameters['form_id'];
+
+ if ( ! isset($form_id) )
+ if ( $params_required )
+ error('Formular ID: not set');
+ else {
+ $form_id='default';
+ }
+
+ if ( $form_id == 'default' && ! isset($new_check_fields[$form_id]) )
+ return $check_parameters;
+
+ if ( ! isset($new_check_fields[$form_id]) )
+ error("Formular ID: is set ('$form_id') but no ruleset defined");
+
+ assert($form_id !== false );
+ assert($new_check_fields[$form_id] !== false);
+
+ $check_fields = $new_check_fields[$form_id];
+ foreach( $check_fields as $field_name => $field ) {
+
+ if ( !isset($parameters[$field_name]) && $field['type'] != 'boolean' ) {
+ if (!$field['optional'] )
+ error('Parameter '.$field_name.' not found');
+ } else {
+ if ( isset($field['length']) && strlen($parameters[$field_name])>$field['length'] )
+ error('Parameter '.$field_name.' to long');
+
+ unset($result);
+ switch ($field['type']) {
+ case 'integer':
+ if (!(is_numeric($parameters[$field_name]) && is_int($parameters[$field_name] + 0)))
+ error($field_name . ' is not an Integer');
+ $result=$parameters[$field_name] + 0;
+ break;
+ case 'decimal':
+ if (! isset($field['scale']) )
+ $field['scale'] = 0;
+ assert(isset($field['precision']));
+ assert(isset($field['scale']));
+ $vorkomma = '[0-9]{0,'.($field['precision'] - $field['scale']).'}';
+ $nachkomma = '[0-9]{0,'.($field['scale']).'}';
+ $regex = $vorkomma . '(\.'.$nachkomma.')?';
+ $matches = preg_match('/^'.$regex.'$/', $parameters[$field_name]);
+ if (! $matches)
+ error($field_name . " is not Decimal (matching $regex)");
+ $result=$parameters[$field_name];
+ if ($result === '')
+ $result = 0;
+ break;
+ case 'string':
+ if (!is_string($parameters[$field_name]))
+ error($field_name . ' is not a String');
+ $result=trim($parameters[$field_name]);
+ break;
+ case 'boolean':
+ if ($parameters[$field_name])
+ $result=true;
+ else
+ $result=false;
+ break;
+ case 'anything':
+ $result=$parameters[$field_name];
+ break;
+ default:
+ error('unkown Type '.$field['type'].' in Ruleset '.$form_id.' for field '.$field_name);
+ }
+
+ assert(isset($result));
+ if ( isset( $field['modifier'] ) )
+ if ( is_array($field['modifier']) )
+ foreach ($field['modifier'] as $modifier) {
+ assert(is_callable($modifier));
+ $result = $modifier($result);
+ }
+ else {
+ assert(is_callable($field['modifier']));
+ $result = $field['modifier']($result);
+ }
+
+ if (! $field['discard'])
+ $check_parameters[$field_name] = $result;
+ }
+ }
+ $check_parameters['form_id']=$form_id;
+ return $check_parameters;
+}
+
+function print_array(&$fields, $die = 0)
+{
+ echo "<pre>";
+ print_r($fields);
+ echo "XXXXXXXXXXXX</pre>";
+
+ if ($die)
+ exit;
+}
+
+# vim:set ts=4:
+# vim:set syntax=php:
+# vim:set shiftwidth=4:
+
+?>