added exceptions, some more verification, checkboxes
[fsinf/pub/w2c.git] / db_funcs.php
index 49f4069ab0e13d41126582d846b0983781fc7848..f358087065ec0d91c1562aade2b551dcb26f52f6 100644 (file)
@@ -20,11 +20,12 @@ function db_get_uinfo($user, $pass){
 }
 
 function db_list_anmeldungen(){
-  $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE lower(uname)=lower(?)');
-  $prep->execute(array($GLOBALS['uname'],));
   if($GLOBALS['lvl'] >= 2){
     $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen');
     $prep->execute();
+  }else{
+    $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE lower(uname)=lower(?)');
+    $prep->execute(array($GLOBALS['uname'],));
   }
   return $prep->fetchAll();
 }
@@ -32,7 +33,9 @@ function db_list_anmeldungen(){
 function db_get_person($id){
   $prep = $GLOBALS['dbc']->prepare('SELECT * FROM anmeldungen WHERE id = ?');
   $prep->execute(array($id,));
-  return $prep->fetch();
+  $ret = $prep->fetch();
+  if($ret !== FALSE && $ret['uname'] != $GLOBALS['uname'] && $GLOBALS['lvl'] < 2) throw new Exception('PERMISSION_ERROR');
+  return $ret;
 }
 
 function db_delete_person($id){
@@ -43,26 +46,25 @@ function db_delete_person($id){
     $prep = $GLOBALS['dbc']->prepare('DELETE FROM anmeldungen WHERE id = ? and lower(uname) = ?');
     $prep->execute(array($id,$GLOBALS['uname']));
   }
-  return $prep->rowCount();
+  if($prep->rowCount() != 1)throw new Exception('NOTHING_DELETED');
 }
 
 function db_store_person($id, $pdata){
   $p = db_get_person($id);
 
   if($p !== FALSE && $p['id'] == $id){
-    // found, we do updating, if uname == uname.
-    if($p['uname'] == $GLOBALS['uname'] || $GLOBALS['lvl'] >= 2){
-      if($pdata['analphabet'] == '')$pdata['analphabet'] = 0;
-      if($pdata['fotoerlaubnis'] == '')$pdata['fotoerlaubnis'] = 0;
-      if($pdata['videoerlaubnis'] == '')$pdata['videoerlaubnis'] = 0;
-      if($pdata['vorwissen'] == '')$pdata['vorwissen'] = 0;
-      if($pdata['gebdatum'] == '')$pdata['gebdatum'] = '1900-01-01';
-      $prep = $GLOBALS['dbc']->prepare('UPDATE anmeldungen SET nname=?, vname=?, gebdatum=?, nationaliaet=?, sprachen=?, analphabet=?, '.
-           'bemerkungen=?, vorwissen=?, fotoerlaubnis=?, videoerlaubnis=?, status=?,termin=? WHERE id=?');
-      $prep->execute(array($pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], $pdata['analphabet'],
-           $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin'], $p['id']));
-      return $prep->rowCount();
-       }
+    // found, we do updating. We are permitted, as there was no exception rtrieving the personinfo.
+    if($pdata['analphabet'] == '')$pdata['analphabet'] = 0;
+    if($pdata['fotoerlaubnis'] == '')$pdata['fotoerlaubnis'] = 0;
+    if($pdata['videoerlaubnis'] == '')$pdata['videoerlaubnis'] = 0;
+    if($pdata['vorwissen'] == '')$pdata['vorwissen'] = 0;
+    if($pdata['gebdatum'] == '')$pdata['gebdatum'] = '1900-01-01';
+    $prep = $GLOBALS['dbc']->prepare('UPDATE anmeldungen SET nname=?, vname=?, gebdatum=?, nationaliaet=?, sprachen=?, analphabet=?, '.
+         'bemerkungen=?, vorwissen=?, fotoerlaubnis=?, videoerlaubnis=?, status=?,termin=? WHERE id=?');
+    $prep->execute(array($pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], $pdata['analphabet'],
+         $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin'], $p['id']));
+    if($prep->rowCount() != 1)throw new Exception('UPDATE_FAILED');
+    return $id;
   }else{
     // inserting a new person.
     if($pdata['analphabet'] == '')$pdata['analphabet'] = 0;
@@ -74,8 +76,7 @@ function db_store_person($id, $pdata){
          vorwissen, fotoerlaubnis, videoerlaubnis, status, termin) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) returning id;');
     $prep->execute(array($GLOBALS['uname'], $pdata['nname'], $pdata['vname'], $pdata['gebdatum'], $pdata['nationaliaet'], $pdata['sprachen'], 
          $pdata['analphabet'], $pdata['bemerkungen'], $pdata['vorwissen'], $pdata['fotoerlaubnis'], $pdata['videoerlaubnis'], $pdata['status'], $pdata['termin']));
-    $r = $prep->fetchColumn(); 
-       return -$r;
+       return $prep->fetchColumn();
   }
 }