diff --git a/static/config/db_array.inc.php b/static/config/db_array.inc.php index d8e409c..85492f3 100644 --- a/static/config/db_array.inc.php +++ b/static/config/db_array.inc.php @@ -22,7 +22,7 @@ $aData[TABLE_USER] = array( 'standard' => 'NOT NULL' ), - 'signal' => array( + 'signalmessenger' => array( 'type' => 'VARCHAR', 'size' => 255, 'standard' => 'NOT NULL' diff --git a/static/form.php b/static/form.php index cd1f05a..d6594e6 100644 --- a/static/form.php +++ b/static/form.php @@ -1,10 +1,13 @@ link_database(); $this->em_check_database(); $this->read_variables(); - date_default_timezone_set($this->settings['timezone']); + date_default_timezone_set('Europe/Berlin'); } function read_variables() { @@ -54,6 +57,83 @@ class Data{ } } +function em_check_database() { + /* + params: + None + returns: + None + This function compares the database structure to a predefined structure which is saved in db_array_config.php + and adds missing structures. Makes installation+updates easy + */ + $aTable=array(); + //Alle Tabellen in Array lesen, inklusive aller Eigenschaften + $result=$this->databaselink->query("show tables from ".DB_DATABASE); + while($row = $result->fetch_array(MYSQLI_BOTH)){ + $aTable[]=$row[0]; + } + $aData=array(); + $database_structure_path = __DIR__."/config/db_array.inc.php"; + include($database_structure_path); + foreach($aData as $table=>$fields){ + if(!in_array($table,$aTable)) { + //Add table to database + $mCounter=0; + $sCommand="CREATE TABLE IF NOT EXISTS `".$table."` ("; + foreach($fields as $fieldname=>$properties){ + $extra = ""; + if($mCounter==0) { + $key="KEY `".$fieldname."` (`".$fieldname."`)"; + } + if($properties["size"]!="") { + $size="(".$properties["size"].")"; + } + else { + $size=""; + } + if((isset($properties["unique"])) and ($properties['unique']==true)) { + $unique="UNIQUE KEY `".$fieldname."_2` (`".$fieldname."`),";} + else { + $unique=""; + } + if((isset($properties["extra"])) and ($properties != "")){ + $extra = $properties['extra']; + } + $sCommand .= "`".$fieldname."` ".$properties["type"].$size." ".$properties["standard"]." ".$extra.","; + $mCounter++; + + } + $sCommand.=$unique.$key.") ENGINE=InnoDB ;"; + $this->last_query[]=$sCommand; + $updateresult=$this->databaselink->query($sCommand); + } + else { + //Felder checken und Tabelle updaten + $resultField=$this->databaselink->query("show fields from ".DB_DATABASE.".".$table); + while($aRowF = $resultField->fetch_array(MYSQLI_BOTH)){ + $aTableFields[]=$aRowF[0]; + } + foreach($fields as $fieldname=>$properties) { + if(!in_array($fieldname,$aTableFields)) { + if((isset($properties["size"]) and ($properties['size']!=""))) { + $size="(".$properties["size"].")"; + } + else { + $size=""; + } + $sCommand="ALTER TABLE `".$table."` ADD `".$fieldname."` ".$properties["type"].$size." ".$properties["standard"]; + $this->last_query[]=$sCommand; + $updateresult=$this->databaselink->query($sCommand); + } + } + } + unset($aTableFields); + unset($aFields); + unset($properties); + } + unset($aData); + } + function store_data($sTable,$aFields,$sKey_ID,$mID) { //updates or inserts data //returns ID or -1 if fails @@ -126,6 +206,7 @@ class Data{ Function will save user Information given in $aUser. If user exists it will overwrite existing data but not delete not-specified data */ + $aFields = $aUser; if ((isset($this->r_user_ID))and ($this->r_user_ID != "")){ $this->ID=$this->store_data(TABLE_USER, $aFields, 'user_ID' , $this->r_user_ID); @@ -134,6 +215,14 @@ class Data{ $this->ID=$this->store_data(TABLE_USER, $aFields, NULL , NULL); } } + + function get_view($Datei) { + ob_start(); //startet Buffer + include($Datei); + $output=ob_get_contents(); //Buffer wird geschrieben + ob_end_clean(); //Buffer wird gelöscht + return $output; + } } //end of class @@ -147,36 +236,36 @@ include ("config/config.inc.php"); $oObject = new Data; $oObject->output = ""; - switch ($oObject->r_ac){ - case 'save' + case 'user_save': $aUser = array(); if(isset($oObject->r_user_ID)){ $aUser['user_ID'] = $oObject->r_user_ID; } if(isset($oObject->r_name)){ - $aUser['name'] = $oObject->r_forename; + $aUser['name'] = $oObject->r_name; } if(isset($oObject->r_email)){ $aUser['email'] = $oObject->r_email; } if(isset($oObject->r_email)){ - $aUser['signal'] = $oObject->r_email; + $aUser['signalmessenger'] = $oObject->r_signalmessenger; } if(isset($oObject->r_email)){ - $aUser['sms'] = $oObject->r_email; + $aUser['sms'] = $oObject->r_sms; } if(isset($oObject->r_email)){ - $aUser['telegram'] = $oObject->r_email; + $aUser['telegram'] = $oObject->r_telegram; } if(isset($oObject->r_email)){ - $aUser['threema'] = $oObject->r_email; + $aUser['threema'] = $oObject->r_threema; } $oObject->save_user($aUser); - $oObject->output += "Erfolgreich gespeichert"; + $oObject->output .= "Erfolgreich gespeichert"; break; default: - $oObject->get_view("views/user_form.php"); + $oObject->output = $oObject->get_view("views/user_form.php"); + break; } function output($oObject){ echo $oObject->get_view("views/head.php"); @@ -184,8 +273,5 @@ function output($oObject){ } output($oObject); -} - - ?> diff --git a/static/views/user_form.php b/static/views/user_form.php index 06c62b0..ed1fde2 100644 --- a/static/views/user_form.php +++ b/static/views/user_form.php @@ -3,15 +3,15 @@ $form = '