Location: PHPKode > projects > WebETB > install/install_11.php4
<?
/******************************************************************************/
/*	MODUL:	install/install_11.php4															*/
/*																										*/
/* DATUM:	27.03.2006, Version 0.1															*/
/* BESCHR.:	Installiert die webETB Tabellen in einer bestehenden Datenbank		*/
/*																										*/
/*	AUTOR:   Marcus Groh																			*/
/*	LIZENZ:  GPL v2 vom Juni 1991 															*/
/*																										*/
/*	AENDERUNGEN:	22.03.2006        -initiale Version								   */
/*                27.03.2006 v 0.1, -Versionskennzeichnung eingefuehrt        */
/*                                  -Code unter GPL v2 gestellt               */
/*																										*/
/******************************************************************************/
include ('./header.php4');
$set_step_error="&nbsp;";

if (!isset($set_step1_ok))
{
   $set_step1_ok=""; }
   
if (!isset($set_step2_ok))
{
   $set_step2_ok=""; }
   
// Check STEP-1
if (isset($set_step1))
{
   // Default-Values
   $set_step1_message="&nbsp;";
   
   // Get Form-Field from form: setup_db
   $database["password"]=$db_passwd;
   $database["user"]=$db_uname;
   $database["host"]=$db_server;
   $database["database"]=$db_dbname;
     
   // Try a simple test connection
   $db = mysql_connect($database["host"], $database["user"], $database["password"]);
   if ( mysql_select_db($database["database"], $db) )
   {
     
      $set_step1_message="";
      $set_step1_ok=1;      
      // Create .db_conf
      $db_conf_file="../config/.db_conf.php4";
         $fp = fopen ($db_conf_file, "w");
         fputs ($fp,"<?\n");
         fputs ($fp,"   \$database[\"name\"] = \"$db_dbname\";			// The name of the requested database\n");
         fputs ($fp,"   \$database[\"host\"] = \"$db_server\";		// Server, where the db is running\n");
         fputs ($fp,"   \$database[\"database\"] = \"$db_dbname\";	// Same like database[\"name\"]\n");
         fputs ($fp,"   \$database[\"user\"] = \"$db_uname\";			// The user account\n");
         fputs ($fp,"   \$database[\"password\"] = \"$db_passwd\";	// The user password (blank if not given)\n");
         fputs ($fp,"?>\n");
         fclose ($fp);   
   }
   else
   {
      $set_step1_message="Der Zugriff auf die Datenbank wurde verweigert";
      $set_step1="";    }

   // Set error-msg
   $set_step_error=$set_step1_message;
}
else
{
   $set_step1_ok=0;
}

// Check STEP-2
if (isset($set_step2))
{
   // Default-Values   
   $set_step1_ok=1;
   $db_webetb_access=0;
   $db_webetb_exists=0;
   $set_step2_message="&nbsp;";

        
   // Connect to db with new config
   include "../config/conf_glbl.php4";
   #$db = mysql_connect($database["host"], $database["user"], $database["password"]);
   if ( mysql_select_db($database["database"], $db) )
   {
      $db_webetb_access=1;  }

   // Check if tables allready exists
   $db_webetb_check = mysql_list_tables($database["database"], $db);
   if ( mysql_num_rows($db_webetb_check) == $database_tables )
   {
      $db_webetb_exists=1;   }

   // Now try to install the neccessary tables
   if ( ($db_webetb_access) && (!$db_webetb_exists) )
   {
      mysql_query("create table $T_info (idx int not null auto_increment, primary key(idx), t_name char(40),descr char(255))");
      mysql_query("create table $T_user (uid int not null auto_increment, primary key(uid), u_name CHAR(15), u_pwd CHAR(30), r_rights enum('N','Y') DEFAULT 'N', w_rights enum('N','Y') DEFAULT 'N', einheit CHAR(30))");
      mysql_query("create table $T_einsaetze (eid int not null auto_increment, primary key(eid), date_beg DATE, time_beg TIME, ort CHAR(50),date_end DATE, time_end TIME, opened enum('N','Y'), closed enum('N','Y'))");
      mysql_query("create table $T_fahrzeuge (fid int not null auto_increment, primary key(fid), rufname char(20),art char(20))");
      mysql_query("create table $T_kraefte (kid int not null auto_increment, primary key(kid),rufname char(20), typ char(20), fme int(5), mobil char(15), bemerkung char(255), status int(1) DEFAULT '2', sosi enum('N','Y') DEFAULT 'N',eid int(9))");
      mysql_query("create table $T_todo (geber char(20), aufgabe char(255), ein_datum DATE, ein_zeit TIME,prio char(1), erledigt enum('N','Y') DEFAULT 'N', soll_erledigt TIME, nummer int not null, eid int(9))");
      mysql_query("create table $T_etb (lfdnr int not null, von_kid int(9), an_kid int(9), von_txt char(20), an_txt char(20), datum DATE, zeit TIME, text char(255), bemerkung char(255),bezug int(5), uid int(9), eid int(9))");      
      mysql_query("create table $T_auftrag (aid int not null auto_increment, primary key(aid), meldung char(255), ort char(255), bemerkung char(255), erledigt enum('N','Y') DEFAULT 'N', datum DATE, zeit TIME, von char(255), kid int(9), parent_id int(9), eid int(9))");            
      mysql_query("create table $T_dokumnt (file_id int not null auto_increment, primary key(file_id), typ int(1),titel char(30),descr char(255),keywrds char(255),f_name char(255), file_pid int(9) )");
      mysql_query("create table $T_patient (pid int not null auto_increment, primary key(pid), eid int(9), used enum('N','Y') DEFAULT 'N', rlsnr int(9),
      pat_nr char(9), pat_nname char(50), pat_vname char(50), pat_geb DATE, pat_alt int(3), pat_min enum('N','Y') DEFAULT 'N', pat_ort char (50),
      pat_str char(50), pat_gnd char (1),
      fzg_name char(20), fzg_typ int(3), fzg_zeit TIME, fzg_date DATE, fzg_ziel char(30), fzg_modi int(3),
      reg_ort char (127), reg_date DATE, reg_time TIME, reg_diag char(50), reg_num char(6),
      reg_kat1 int(1), reg_nam1 char(30), reg_tme1 TIME, reg_ort1 char(50),
      reg_kat2 int(1), reg_nam2 char(30), reg_tme2 TIME, reg_ort2 char(50),
      reg_kat3 int(1), reg_nam3 char(30), reg_tme3 TIME, reg_ort3 char(50),
      reg_kat4 int(1), reg_nam4 char(30), reg_tme4 TIME, reg_ort4 char(50),
      san_num char(6), san_diag char(50), san_comm char(255), san_date DATE, san_time TIME)");
      
      mysql_query("insert into $T_info values ('%','$T_info', 'Beinhaltet eine kurze Beschreibung aller Tabellen')");
      mysql_query("insert into $T_info values ('%','$T_user', 'Beinhaltet alle Benutzer und deren Rechte die das WEBETB System nutzen.')");
      mysql_query("insert into $T_info values ('%','$T_einsaetze', 'Beinhaltet alle Einsaetze die abgewickelt werden/wurden.')");
      mysql_query("insert into $T_info values ('%','$T_fahrzeuge', 'Kann genutzt werden um Fahrzeuge als Einsatz-Stammdaten anzulegen.')");
      mysql_query("insert into $T_info values ('%','$T_kraefte', 'Beinhaltet die zu einem Einsatz zugehoerigen Einsatzkraefte.')");
      mysql_query("insert into $T_info values ('%','$T_todo', 'Beinhaltet die waehrend eines Einsatzes entstandenen Aufgaben.')");
      mysql_query("insert into $T_info values ('%','$T_etb', 'Beinhaltet das eigentliche Einsatztagebuch.')");
      mysql_query("insert into $T_info values ('%','$T_auftrag', 'Beinhaltet die waehrend eines Einsatzes entstandenen Auftraege.')");
      mysql_query("insert into $T_info values ('%','$T_dokumnt', 'Dokumenteverwaltung der verfuegbaren Unterlagen')");
      mysql_query("insert into $T_info values ('%','$T_patient', 'Patientenverwaltungstabelle')");
      
      $set_step2_message="Die notwendigen Tabellen wurden angelegt.";
      $set_step2_ok=1;        }
   elseif ( ($db_webetb_access) && ($db_webetb_exists) )
   {   
      $set_step2_message="Die Tabellen existieren bereits.";    
      $set_step2_ok=1;        }
   else
   {
      $set_step2_message="Der Zugriff als Benutzer " . $database["user"] . "auf die Datenbank wurde verweigert.";
      $set_step2="";    }
   
   // Set error-msg
   $set_step_error=$set_step2_message;         
}
else
{
   $set_step2_ok=0;
}

// Check STEP-3
if (isset($set_step3))
{
   // Default-Values   
   $set_step1_ok=1;
   $set_step2_ok=1;
   $adm_acc_state=1;
   $set_step3_message="&nbsp;";

   // Check lenght of user and pwd from form-fields
   if ( ( strlen($adm_uname) <= 8 ) || ( strlen($adm_passwd) <= 8 )  )
   {
      $set_step3_message="Name/Passwort m&uuml;ssen l&auml;nger als 8 Zeichen sein.";
      $adm_acc_state=0;    }

   // Check if user and pwd are identical
   if ( ($adm_uname == $adm_passwd) || ($adm_uname == $adm_passwd2) )
   {
      $set_step3_message="Name und Passwort d&uuml;rfen nicht identisch sein.";
      $adm_acc_state=0;    }

   // Check if pwd1 and pwd2 are identical
   if ( $adm_passwd != $adm_passwd2 )
   {
      $set_step3_message="Passw&ouml;rter waren nicht identisch.";
      $adm_acc_state=0;    }
               
   if ($adm_acc_state)
   { 
      // Set vars for .htaccess and .passwd
      $mypath=dirname($_SERVER[SCRIPT_FILENAME]);
      $htfile=".htaccess";
      $pwfile=".passwd";
      $pwloc="$mypath/$pwfile";
      $admin_passwd=crypt($adm_passwd);
      
      // Create new .passwd
      $fp = fopen ($pwfile, "w");
      fputs ($fp,"$adm_uname:$admin_passwd\n");
      fclose ($fp);
      
      // Create .htaccess if not exist
      $fn=file_exists ($htfile);
      if (!$fn)
      {
         $fp = fopen ($htfile, "w");
         fputs ($fp,"AuthType basic\n");
         fputs ($fp,"AuthName WEB-ETB\n");
         fputs ($fp,"AuthUserFile $pwloc\n");
         fputs ($fp,"Require valid-user\n");
         fputs ($fp,"\n");
         fclose ($fp);
      }                       
      $set_step3_message="Account erstellt";
      $set_step3_ok=1;  }
   else
   {
      $set_step3="";    }
      
   // Set error-msg
   $set_step_error=$set_step3_message;            
}   
else
{
   $set_step3_ok=0;
}

// Headline
?>
   <br>
   <center>
   <p id="ERR"><? echo $set_step_error; ?></p>
   <table border="0" cellspacing="0" cellpadding="0" width="500">
   <tr>
      <th colspan="7">web-ETB Installationsassistent</th>
   </tr>
<?
   
   
   // Form 1: Install db-user and db
   if (!$set_step1_ok)
   {
      ?>      
      <form action="" name="setup_db" method=post>
      <tr>
         <td colspan="7"><p id="sw10_s">SCHRITT 1: Zugangsdaten erfassen<br><br>
         Bitte tragen Sie in die folgenden Felder die Zugangsdaten Ihrer Datenbank ein, damit die Tabellen des 
         webETB-Systems erzeugt werden k&ouml;nnen.</p></td>
      </tr>
      <tr>
         <td width="120">Benutzername :</td>
         <td width="5">&nbsp;</td>
         <td><input type=text name="db_uname"  style="border: 1px solid silver; width: 100px" value=""></td>
         <td width="50">&nbsp;</td>
         <td width="120">Passwort :</td>
         <td width="5">&nbsp;</td>
         <td><input type=password name="db_passwd" style="border: 1px solid silver; width: 100px"></td>
      </tr>
      <tr>
         <td colspan="7" height="3" width="500"></td>
      </tr>
      <tr>
         <td>Servername :</td>
         <td width="5">&nbsp;</td>
         <td><input type=text name="db_server" style="border: 1px solid silver; width: 100px" value="localhost"></td>
         <td width="20">&nbsp;</td>
         <td>Datenbank :</td>
         <td width="5">&nbsp;</td>
         <td><input type=text name="db_dbname" style="border: 1px solid silver; width: 100px" value=""></td>
      </tr>
      <tr>
         <td colspan="7" height="3" width="500"></td>
      </tr>      
      </table>
      <input type="submit" Value="Weiter" style="border: 1px solid silver;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="reset" Value="R&uuml;cksetzen" style="border: 1px solid silver;">
      <input type="hidden" name="set_step1" value="true">
      </form>
      <?
   }
   
   // Form 2: Create neccessary tables
   if ( ($set_step1_ok) && (!$set_step2_ok) )
   {
      ?>
      <form action="" name="activate_db" method=post>
      <tr>
         <td colspan="7"><p id="sw10_s">SCHRITT 2: Anlegen der Tabellen<br><br>
         Die von Ihnen angegebenen Zugansdaten waren korrekt. Wenn Sie nun die notwendigen Tabellen
         anlegen m&ouml;chten, klicken sie auf Weiter.<br>Andernfalls k&ouml;nnen Sie diesen Dialog
         immernoch abbrechen, es wurden bisher keine Ă„nderungen am System vorgenommen.</p></td>
      </tr>
      </table>
      <input type="submit" Value="Weiter" style="border: 1px solid silver;">
      <input type="hidden" name="set_step2" value="true">
      </form>
      <?
   }
   
   // Form 3: Create Admin-Account and DONE-File
   if ( ($set_step1_ok) && ($set_step2_ok) && (!$set_step3_ok) )
   {
      ?>
      <form action="" name="create_adm" method=post>
      <tr>
         <td colspan="7"><p id="sw10_s">SCHRITT 3: Administrationsaccount erstellen<br>
         Bitte legen Sie die Zugangsdaten f&uuml;r den Administrator des Web-ETB Systems fest. Bewahren Sie die Daten an einem sicheren
         Ort auf. Sollten Sie die Zugansgdaten vergessen, dann l&ouml;schen Sie bitte die Datei &quot;.passwd&quot; in diesem Verzeichnis 
         und f&uuml;hren anschlie&szlig;end das Setup erneut aus.<br>
         Bitte beachten Sie, dass zwischen Gross-/Kleinschreibung unterschieden wird.</p></td>
      </tr>
      <tr>
         <td width="120">Loginname :</td>
         <td width="5">&nbsp;</td>
         <td><input type=text name="adm_uname"  style="border: 1px solid silver; width: 100px"></td>
         <td width="50">&nbsp;</td>
         <td width="120">Passwort :</td>
         <td width="5">&nbsp;</td>
         <td><input type=password name="adm_passwd" style="border: 1px solid silver; width: 100px"></td>
      </tr>            
      <tr>
         <td colspan="7" height="5" width="500"></td>
      </tr>
         <td colspan="3">&nbsp;</td>         
         <td width="50">&nbsp;</td>
         <td width="120">Pwd. wiederholen:</td>
         <td width="5">&nbsp;</td>
         <td><input type=password name="adm_passwd2" style="border: 1px solid silver; width: 100px"></td>
      </tr>            
      <tr>
         <td colspan="7" height="5" width="500"></td>
      </tr>      
      
      </table>
      <input type="submit" Value="Installation abschlie&szlig;en" style="border: 1px solid silver;">
      <input type="hidden" name="set_step3" value="true">
      </form>
      <?
   }   

   // Form 4: Setup-Completed
   if ( ($set_step1_ok) && ($set_step2_ok) && ($set_step3_ok) )
   {
         
      // Create DONE-File
      $checkfile="./DONE";
      $fn=file_exists ($checkfile);
      if (!$fn)
      {
         $fp = fopen ($checkfile, "w");
         fclose ($fp);
      }

      ?>
      <tr>
         <td colspan="7"><p id="sw10_s">INSTALLATION ABGESCHLOSSEN<br>
         Gl&uuml;ckwunsch. Die Installation des web-ETB Systems wurde erfolgreich abgeschlossen. Beginnen Sie nun 
         im Abschnitt &quot;Administration -> Verwaltung&quot; mit dem anlegen von Benutzeraccounts, damit das System 
         genutzt werden kann.</p></td>
      </tr>
      </table>
      </form>
      <?
   }


echo "</center>\n";
include ('./footer.php4');
?>
Return current item: WebETB