# /*
# * v11_update.sql
# *
# * ZHW Zuercher Hochschule Winterthur
# * PhPepperShop Diplomarbeit DA Fei01/1
# * Autoren: Jose Fontanil & Reto Glanzmann
# *
# * Version 1.1, basierend auf ER-Diagramm v.1.1
# *
# * CVS-Version / Datum: $Id$
# *
# * Updated die Shopdatenbank eines PhPepperShops v.1.07 auf die des Shops v.1.1
# *
# * einlesen z.B. mit mysql -u {grantor} -p dbname < ./v11_update.sql
# * (wobei mysql im Pfad sein muss.)
# *
# * Sicherheitsstatus:       *** ADMIN ***
# *
# * ------------------------------------------------------------------------------
# * Lizenz
# * ======
# * PhPepperShop Shopsystem
# * Copyright (C) 2001  Reto Glanzmann, José Fontanil
#
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
#
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# * GNU General Public License for more details.
#
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# * ------------------------------------------------------------------------------
# *
# * Es werden der Reihe nach alle Tabellen, in welchen es Aenderungen gab upgedated.
# * Es werden folgende Tabellen veraendert: artikel, kunde, shop_settings und versandkostenpreise, hilfe
# * Weiter wird noch eine neue Tabelle namens zahlung_weitere angelegt.
# * ------------------------------------------------------------------------------
# *
# * Tabellenveraenderungen ausfuehren
# */
Update `artikel` SET Bild_gross = NULL;
Update `artikel` SET Bild_klein = NULL;
Update `artikel` SET Bildtyp = NULL;
ALTER TABLE `artikel` CHANGE `Bild_gross` `Bild_gross` VARCHAR(255);
ALTER TABLE `artikel` CHANGE `Bild_klein` `Bild_klein` VARCHAR(255);
ALTER TABLE `shop_settings` CHANGE `ShopVersion` `ShopVersion` VARCHAR(48) DEFAULT 'Januar 2002, Version v.1.1 (via update)' NOT NULL;
UPDATE shop_settings SET ShopVersion = "Januar 2002, Version v.1.1 (via update)";


# /*
# * ------------------------------------------------------------------------------
# *
# * Hilfetexte updaten
# */

UPDATE hilfe SET Hilfetext = "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td>
<H3>Backup der Shop Datenbank</H3>
<P>Das automatisierte Datenbank-Backup erlaubt es ein Backup-Set
anzulegen, welches optional automatisch aktualisiert wird. Wir
m&ouml;chten hier ausdr&uuml;cklich darauf hinweisen, dass es sich
hierbei um ein Datenbank-Backup handelt. <K>Seit der Shopversion v.1.1
werden die Artikelbilder im Dateisystem gespeichert, dies hat viele
Performance-Vorteile (v.a. bei Verwendung von MySQL). Deshalb sind
ab sofort die <B>Artikelbilder</B> nicht mehr im Datenbank-Backup
enthalten!</K> Die <B>User-Buttons</B> und <B>Hintergrundbilder</B> werden
mit diesem Backup auch NICHT gespeichert (liegen im Dateisystem)!
Die Bilder m&uuml;ssen also immer noch von Hand gespeichert werden (siehe
Manuals: \'Backup von Hand\').</P>
<P>Ein Hinweis noch: Sie m&uuml;ssen die gemachten Einstellungen immer zuerst
speichern, erst danach ein Backup erstellen. Es reicht nicht nur die Werte in den
Eingabefelder zu &auml;ndern.</P>
<H4>Einstellungen</H4>
<P>In den Einstellungen kann man den Umfang des Backup-Sets und das
Backup-Intervall festlegen. Optional l&auml;sst sich noch die
ZIP-Komprimierung aktivieren. <I>Die ZIP-Komprimierung funktioniert
allerdings nur wenn die ZLib-Library eingebunden ist</I>.</P>
<P>Da ein Shop 24h offen ist und 7 Tage in der Woche erreichbar ist,
empfehlen wir ein Backup-Set von sieben Dateien anzulegen und das
Backup-Intervall auf 24 Stunden einzustellen. Wenn es m&ouml;glich
ist die ZIP-Komprimierung zu aktivieren, sollte dies auch gemacht
werden.</P>
<H4>Automatisierung</H4>
<P>Wenn man von PHP und Automatisierung redet, gibt es grunds&auml;tzlich
ein Problem: Man hat das Problem, dass man ein programmiertes
Ereignis nicht einfach nach Ablauf einer gewissen Frist aufrufen
kann. Wir bieten deshalb unter dem Men&uuml;punkt \'Automatisierung\'
drei verschiedene Einstellungsm&ouml;glichkeiten:</P>
<P STYLE=\"margin-left: 0.5cm; text-indent: -0.5cm\"><SPAN STYLE=\"font-style: normal\">1.    </SPAN><B><I>Automatisiertes
Backup aktivieren:</I></B> Hierbei wird der Datei <FONT FACE=\"Courier New, monospace\">index.php</FONT>
ein Backup Aufruf eingef&uuml;gt (include von
<FONT FACE=\"Courier New, monospace\">&lt;shopdir&gt;/shop/Admin/ADMIN_backup.php</FONT>).
Diese Datei &uuml;berpr&uuml;ft ob es Zeit ist ein weiteres Backup
anzulegen und tut dies falls notwendig auch gleich.</P>
<P STYLE=\"margin-left: 0.5cm\">Bei diesem Ansatz gibt es eine
Sicherheitsl&uuml;cke. Es ist der einzige Ort im Shop bei welchem wir
mit unserer Sicherheits-Policy brechen mussten. Ein USER-Script ruft
ein ADMIN-Script auf. Schliesslich ist das Anlegen eines
Datenbank-Backups Administrator-Sache. Dies ist also ein Kompromiss
zwischen Usability und Security. Wir empfehlen hier dringend, dass
man wenn immer m&ouml;glich einen CRON-Job einrichten sollte, welcher
dieses Backup periodisch aufruft (Aufruf: <FONT FACE=\"Courier New, monospace\">php
ADMIN_backup.php</FONT>).</P>
<P STYLE=\"margin-left: 0.5cm\">Der Aufruf des Backups in der index.php
Datei ist \'atomar\'. Es handelt sich um einen einzigen Aufruf welcher
entweder komplett ausgef&uuml;hrt wird oder nicht aufgerufen wird.</P>
<P STYLE=\"margin-left: 0.5cm; text-indent: -0.5cm\"><SPAN STYLE=\"font-weight: medium\"><SPAN STYLE=\"font-style: normal\">2.
</SPAN></SPAN><B><I>Backup wurde als CRON-Job eingerichtet:</I></B>
Dies ist wohl die eleganteste Methode des automatisierten Backups und
zugleich auch die sicherste. Man muss jetzt per Telnet oder besser
SSH einen CRON-Job einrichten. Dieser muss lediglich im
Backup-Intervall die Datei <FONT FACE=\"Courier New, monospace\">ADMIN_backup.php</FONT>
aufrufen (im Admin Unterverzeichnis). Das Backup-Set wird automatisch
gepflegt.</P>
<P STYLE=\"margin-left: 0.5cm; text-indent: -0.5cm\"><SPAN STYLE=\"font-style: normal\">3.
</SPAN><B><I>Kein automatisches Backup:</I></B> Es wird kein
automatisiertes Backup vorgenommen. Jedes Backup muss von Hand
angelegt werden. Wer keine Kompromisse betreffend der Security
eingehen will aber auch keine CRON-Jobs einrichten darf (manche
Provider verbieten dies), dem raten wir zu dieser Einstellung.</P>
<H4>Dateinamen</H4>
<P>Der Datenbank-Backup legt das aktuelle Backup in der Datei
<FONT FACE=\"Courier New, monospace\">0.sql[.gz]</FONT> ab. Gibt es ein
Backup-Set gr&ouml;sser als eins, so wird der Dateiname der schon
existierenden Backups um eins dekrementiert. Das neueste Backup ist
also immer 0. Das &auml;lteste Backup bei einem Backup-Set von 5 w&auml;re
also <FONT FACE=\"Courier New, monospace\">4.sql[.gz]</FONT>.</P>
<P>Es wird immer zuerst umbenannt und danach das neue Backup
<FONT FACE=\"Courier New, monospace\">0.sql[.gz]</FONT> erzeugt.</P>
<H4>phpMyBackup</H4>
<P>Die Grundlage unserer automatisierten Backupl&ouml;sung stammt aus
dem Programm phpMyBackup von Holger Mauermann
(<A HREF=\"mailto:mauermann@nm-service.de\">mauermann@nm-service.de</A>).
Er hat dieses vielversprechende PHP-Script f&uuml;r den Backup und
Restore einer MySQL Datenbank geschrieben. Wir haben als Grundlage
phpMyBackup in der Version 0.4 Beta benutzt. Das Script kann unter
<A HREF=\"http://www.nm-service.de/phpmybackup\">http://www.nm-service.de/phpmybackup</A>
gefunden werden. Wir m&ouml;chten Holger an dieser Stelle nochmals
recht herzlich f&uuml;r die Erlaubnis, sein Programm benutzen zu
d&uuml;rfen, danken.</P>
<H3>Restore eines Datenbank-Backups</H3>
<P><FONT SIZE=3>Wenn man im Backup-Men&uuml; auf \'Restore\' klickt
kann ein Datenbank-Backup angesehen oder zur&uuml;ck gelesen werden.
Mit \'view/download\' kann man die SQL-Datei ansehen. Achtung: Wenn
viele Bilder in der Datenbank sind, so werden diese mit &uuml;bertragen!</FONT></P>
<H4>Ernstfall &#150; Ablauf</H4>
<P><FONT SIZE=3>Wenn Sie Ihren Shop aus irgendwelchen Gr&uuml;nden
verloren haben und ein Restore ihrer Shop-Datenbank machen wollen
m&uuml;ssen Sie wie folgt vorgehen:</FONT></P>
<OL>
    <LI><P><FONT SIZE=3>Speichern Sie ihr Datenbank Backup an einem
    sicheren Ort (haben Sie wahrscheinlich schon gemacht).</FONT></P>
    <LI><P><FONT SIZE=3>Erstellen Sie ein Backup ihrer selbst erstellten
    Hintergrundbilder und Shopbuttons (siehe Manuals: \'Backup von
    Hand\').</FONT></P>
    <LI><P STYLE=\"margin-bottom: 0cm\"><FONT SIZE=3>Schreiben Sie sich
    folgende Angaben auf. Vielleicht haben Sie das schon nach der
    Installation des Shops gemacht:</FONT>
<UL>
    <LI><FONT SIZE=3>Name der
    Shop-Datenbank</FONT>
    <LI><FONT SIZE=3>DB-Username und Passwort des Shopadministrators
    und Shopbenutzers</FONT>
</UL>
    </P><LI><P><FONT SIZE=3>Deinstallieren Sie jetzt den Shop (siehe
    Manuals: \'Installation / Deinstallation\'), wenn das
    Deinstallationsprogramm nicht mehr vorhanden sein sollte, oder nicht
    mehr funktioniert, l&ouml;schen Sie das defekte Shop-Verzeichnis
    einfach von Hand (ACHTUNG: Folgender Befehl l&ouml;scht das
    Shopverzeichnis inkl. allen Unterverzeichnissen OHNE R&Uuml;CKFRAGE:
    rm -rf Shopverzeichnis).</FONT></P>
    <LI><P><FONT SIZE=3>Installieren Sie den Shop neu (Sie m&uuml;ssen
    hier die Angaben aus Punkt 3 bereit halten).</FONT></P>
    <LI><P><FONT SIZE=3>Kopieren Sie ihr erstelltes Backup
    (</FONT><FONT FACE=\"Courier New, monospace\"><FONT SIZE=3>0.sql[.gz]<FONT FACE=\"Century Schoolbook, serif\">,...</FONT></FONT></FONT><FONT SIZE=3>)
    in das folgende Verzeichnis, wobei &lt;shopdir&gt; das
    Shopverzeichnis darstellt:</FONT></P>
    <P><FONT SIZE=3><FONT FACE=\"Courier New, monospace\">&lt;shopdir&gt;/shop/Admin/Backups</FONT></FONT></P>
    <LI><P><FONT SIZE=3>Gehen Sie ins Untermen&uuml; Datenbank-Backup
    <FONT FACE=\"Courier New, monospace\">--&gt;</FONT> Restore und
    klicken Sie auf Restore ihres angezeigten Backups, best&auml;tigen
    Sie das &uuml;berschreiben der Datenbank.</FONT></P>
    <LI><P><FONT SIZE=3>Jetzt k&ouml;nnen Sie ihre selbst erstellten
    Hintergrundbilder und Shop-Buttons wieder zur&uuml;cklesen (siehe
    Manuals: \'Restore von Hand\').</FONT></P>
    <LI><P><FONT SIZE=3>&Uuml;berpr&uuml;fen Sie zur Sicherheit noch
    einmal alle Administrationseinstellungen (v.a. die allgemeinen
    Shop-Einstellungen, die Versandkosten und Kundenattribute).</FONT></P>
</OL>
<H3>Backup und Restore von Hand</H3>
<P>Im Dokument PhPepperShop &#150; Manuals (Anleitungen) kann man
nachlesen, wie man ein Shop-Backup von Hand erstellt und wieder
zur&uuml;ckliest. Hier wird auch beschrieben wie man ein <B>Backup
der Artikelbilder, Hintergrundbilder und Shopbuttons</B> erstellt.</P>
</td></tr></table>" 
WHERE Hilfe_ID ="Shop_Backup";

# /*
# * ------------------------------------------------------------ End of File Marke
# */

