Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?PHP
if (!isset($argv[0])) {
if (strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false ) {
print '<div><center><h1>Es liegt keine Berechtigung vor!</h1></center></div>'; exit; }
}
/*
* Outlook CSV-Export für Event-Kalender - csv_outlook_export.php (utf-8)
* © RaHa
* Teile des Scripts ggf. übernommen aus - https://werner-zenk.de
* !!!!!!!!!!
* Speichern im Ordner ../tools!
* !!!!!!!!!!
Dieses Script wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne irgendeine Garantie;
ohne auch nur die implizierte Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck.
Weitere Informationen finden Sie in der GNU General Public License.
Siehe Datei: license.txt - http://www.gnu.org/licenses/gpl.html
Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*
* Die erste Zeile der CSV-Datei enthält die Feldnamen, die Reihenfolge entspricht dem normalen Standardexport
* von Outlook!
*
* URL-Aufrufe:
* https://event-kalender.checkip.net/tools/csv_outlook_export.php
* https://event-kalender.checkip.net/tools/csv_outlook_export.php?ErinnerungEIN
* https://event-kalender.checkip.net/tools/csv_outlook_export.php?ErinnerungEIN=1T (X Tage)
* https://event-kalender.checkip.net/tools/csv_outlook_export.php?ErinnerungEIN=1S (X Stunden)
* https://event-kalender.checkip.net/tools/csv_outlook_export.php?ErinnerungEIN=1M (X Minuten)
* zusätzliche Parameter:
* &Suche=Feldname:Wert exportiert nur die Daten, die der Suche entsprechen
* &AlleIN hängt alle nicht übernommenen Felder mit Bezeichnung und Wert an die Beschreibung an
* &Print gibt die Daten zusätzlich auf dem Bildschirm aus
* z.B.: https://event-kalender.checkip.net/tools/csv_outlook_export.php?ErinnerungEIN=15M$AlleIN&Print
* Script-Aufrufe:
* zusätzliche Parameter:
* AlleIN hängt alle nicht übernommenen Felder mit Bezeichnung und Wert an die Beschreibung an
* Feldname:Wert exportiert nur die Daten, die der Suche entsprechen
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1T
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1S
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1M
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1T JA
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1T NEIN
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1T JA Feldname:Wert
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_export.php 1T NEIN Feldname:Wert
* Reihenfolge Argumente beachten: Erinnerung Leerzeichen AlleIN
*/
function returnto() {
global $eol;
if (!isset($argv[0])) {
print $eol.$eol.'<center><h2><a href="'.$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'" target="_self">Zurück zum Event-Kalender</a></h2></center>'.$eol.$eol;
}
exit;
}
// Pruefung ob Aufruf von zulaessiger IP/DYNDNS erfolgt
// ggf. Zeilen auskommentieren!
/*
if (!isset($argv[0])) {
$dynsallow['1']="remote-xxx.dyndns.checkip.net";
$dynsallow['2']="mobile-xxx.dyndns.checkip.net";
$i = 0;
$doaction=false;
foreach ($dynsallow as $dynallow) {
$i++;
$ipremote=$_SERVER["REMOTE_ADDR"];
$hostip=gethostbyname($dynallow);
if ($ipremote==$hostip) { $doaction=true; }
}
if ($doaction === false) { returnto(); }
}
*/
// Sicherung der Kalender-Datenbank nach Outlook
session_start();
$eol = "<br>";
// Erinnerung ein?
$erinnerungEIN="NEIN";
$erinnerungTime=86400;
// Parameter via URL-Aufruf
if (isset($_REQUEST['ErinnerungEIN'])) { $erinnerungEIN="JA"; $erinnerungTime=$_REQUEST['ErinnerungEIN']; }
// Parameter via Scriptaufruf
// Achtung: bei Scriptaufruf via cron befindet man sich im Hauptroot. Der Ort muss in chdir ergänzt/geändert werden!
if (isset($argv[0])) {
if (isset($_SERVER['SCRIPT_FILENAME'])) { $chdir = str_replace("/csv_outlook_export.php", "", $_SERVER['SCRIPT_FILENAME']); } else { $chdir = "";}
if (isset($argv[1])) { $erinnerungEIN="JA"; $erinnerungTime=$argv[1]; } if ($chdir !== "") { chdir($chdir); }
$eol = chr(10);
}
$erinnerungValue=str_replace("T", "", $erinnerungTime, $count);
if ($count>0) {$erinnerungTime = 86400*intval($erinnerungValue);}
$erinnerungValue=str_replace("S", "", $erinnerungTime, $count);
if ($count>0) {$erinnerungTime = 3600*intval($erinnerungValue);}
$erinnerungValue=str_replace("M", "", $erinnerungTime, $count);
if ($count>0) {$erinnerungTime = 60*intval($erinnerungValue);}
// Suche
unset($Suche);
// Parameter via URL-Aufruf
if (isset($_REQUEST['Suche'])) { $Suche = explode(":", $_REQUEST['Suche']); }
// Parameter via Scriptaufruf
if (isset($argv[3])) { $Suche = explode(":", $_REQUEST['Suche']); }
// Felder, die nicht übernommen werden können an Beschreibung anhängen
$AlleIN="NEIN";
// Parameter via URL-Aufruf
if (isset($_REQUEST['AlleIN'])) { $AlleIN="JA"; }
// Parameter via Scriptaufruf
if (isset($argv[2])) { $AlleIN=$argv[2]; }
// Ausgabe auf Bildschirm
$Print="NEIN";
// Parameter via URL-Aufruf
if (isset($_REQUEST['Print'])) { $Print="JA"; }
$DB_WORK_DIR = str_replace('tools', 'export/', getcwd());
$DB_HOME_DIR = str_replace('tools', '', getcwd());
if (is_file($DB_HOME_DIR."/verbindung.php")) {
if (is_file($DB_HOME_DIR."/dbinfo.inc.php")) {
require_once $DB_HOME_DIR."/dbinfo.inc.php";
} else {
require_once $DB_HOME_DIR."/verbindung.php";
}
} else { print "Fehler include verbindung.php".$eol; returnto(); }
$DB_WORK_FILE = 'outlook_zu.csv';
$DB_WORK_CSV_FILE = $DB_WORK_DIR.$DB_WORK_FILE;
if (!is_dir($DB_WORK_DIR)) { mkdir($DB_WORK_DIR, 0700); }
if (isset($Suche)) {
$sql="SELECT * FROM `" . $TABLE_PREFIX . "_kalender` WHERE `".$Suche[0]."` = '".$Suche[1]."' ORDER BY `start`";
} else {
$sql="SELECT * FROM `" . $TABLE_PREFIX . "_kalender` ORDER BY `start`";
}
$statement = $db->prepare($sql);
if(!$statement->execute()) {
print $eol.$eol;
print "SQL Error".$eol;
print $statement->queryString.$eol;
print $statement->errorInfo()[2];
returnto();
}
$events= $statement->fetchall();
$csv = "";
if (count($events)>0) {
$csv = '"Betreff","Beginnt am","Beginnt um","Endet am","Endet um","Ganztägiges Ereignis","Erinnerung Ein/Aus","Erinnerung am","Erinnerung um","Beschreibung","Kategorien","Adresse","Priorität","Privat"'.chr(10);
foreach ($events AS $event) {
sscanf($event["start"], "%4s-%2s-%2s %2s:%2s:%2s", $dbJahr, $dbMonat, $dbTag, $dbStunde, $dbMinute, $dbSekunde);
sscanf($event["ende"], "%4s-%2s-%2s %2s:%2s:%2s", $dbJahr2, $dbMonat2, $dbTag2, $dbStunde2, $dbMinute2, $dbSekunde2);
$erinnerung_datecreate = date_create($dbJahr.'-'.$dbMonat.'-'.$dbTag.' '.$dbStunde.':'.$dbMinute.':'.$dbSekunde);
$erinnerung_timestamp = date_timestamp_get($erinnerung_datecreate)-$erinnerungTime;
$erinnerung = date("Y-m-d H:i:s", $erinnerung_timestamp);
sscanf($erinnerung, "%4s-%2s-%2s %2s:%2s:%2s", $dbJahrE, $dbMonatE, $dbTagE, $dbStundeE, $dbMinuteE, $dbSekundeE);
if ($event["volltag"] == 1) {
$volltag_datecreate = date_create($dbJahr2.'-'.$dbMonat2.'-'.$dbTag2.' '.$dbStunde2.':'.$dbMinute2.':'.$dbSekunde2);
$volltag_timestamp = date_timestamp_get($volltag_datecreate)+86400;
$volltag = date("Y-m-d H:i:s", $volltag_timestamp);
sscanf($volltag, "%4s-%2s-%2s %2s:%2s:%2s", $dbJahr2, $dbMonat2, $dbTag2, $dbStunde2, $dbMinute2, $dbSekunde2);
}
$csv .= '"'.$event["event"].'","'.$dbTag.".".$dbMonat.".".$dbJahr.'","'.$dbStunde.":".$dbMinute.":".$dbSekunde.'","'.$dbTag2.".".$dbMonat2.".".$dbJahr2.'","'.$dbStunde2.":".$dbMinute2.":".$dbSekunde2.'"';
if ($event["volltag"] == 1 ) { $csv .= ',"EIN"'; } else { $csv .= ',"AUS"'; }
if ($erinnerungEIN =="JA") { $csv .= ',"EIN"'; } else { $csv .= ',"AUS"'; }
$csv .= ',"'.$dbTagE.".".$dbMonatE.".".$dbJahrE.'","'.$dbStundeE.":".$dbMinuteE.":".$dbSekundeE.'"';
if ($AlleIN == "JA") {
$beschreibung = "";
foreach ($event AS $nichtIN => $nichtIN_key) {
if ($nichtIN == "start" OR $nichtIN == "ende" OR $nichtIN == "event" OR $nichtIN == "volltag" OR $nichtIN == "beschreibung" OR $nichtIN == "kategorie" OR $nichtIN == "adresse" OR $nichtIN == "privat") { continue; }
if (intval($nichtIN == 0)) {
$beschreibung .= chr(10).$nichtIN.' = '.$nichtIN_key;
}
}
$csv .= ',"'.str_replace('"', '""', $event["beschreibung"].chr(10).chr(10).'---'.chr(10).$beschreibung).'"';
} else {
$csv .= ',"'.str_replace('"', '""', $event["beschreibung"]).'"';
}
$csv .= ',"'.$event["kategorie"].'","'.$event["adresse"].'","Normal"';
if ($event["privat"] == 1 ) { $csv .= ',"Privat"'; } else { $csv .= ',"AUS"'; }
$csv .= chr(10);
}
if ($Print == "JA") { print str_replace(chr(10), "<br>", $csv).$eol.$eol."---END---"; }
if (!file_put_contents($DB_WORK_CSV_FILE, $csv)) {
print 'Fehler beim Schreiben in die Datei: '.$DB_WORK_CSV_FILE.$eol;
}
print $eol.'Datei '.$DB_WORK_CSV_FILE.' wurde gespeichert.'.$eol;
}
if ($csv == "") { print $eol.'Nichts gespeichert.'.$eol; }
returnto();
?>
Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?PHP
if (!isset($argv[0])) {
if (strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false ) {
print '<div><center><h1>Es liegt keine Berechtigung vor!</h1></center></div>'; exit; }
}
/*
* Outlook CSV-Import in den Event-Kalender - csv_outlook_import.php (utf-8)
* © RaHa
* Teile des Scripts ggf. übernommen aus - https://werner-zenk.de
* !!!!!!!!!!
* Speichern im Ordner ../tools!
* !!!!!!!!!!
Dieses Script wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne irgendeine Garantie;
ohne auch nur die implizierte Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck.
Weitere Informationen finden Sie in der GNU General Public License.
Siehe Datei: license.txt - http://www.gnu.org/licenses/gpl.html
Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
*
* Sie können Änderungen vornehmen oder individuell anpassen.
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*
*
* Die erste Zeile der CSV-Datei muss die Feldnamen enthalten. Die Reihenfolge der Feldnamen muss dem normalen
* Standardexport von Outlook entsprechen (keine Verschiebung oder Umbenennung)!
*
* URL-Aufrufe:
* https://event-kalender.checkip.net/tools/csv_outlook_import.php
* zusätzliche Parameter:
* &AlleIN hängt alle nicht übernommenen Felder mit Bezeichnung und Wert an die Beschreibung an
* &Dateiname der zu importiereten Datei
* &Print gibt die Daten zusätzlich auf dem Bildschirm aus
* z.B.: https://event-kalender.checkip.net/tools/csv_outlook_import.php?AlleIN&Dateiname=xxxx&Print
* Script-Aufrufe:
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_import.php JA
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_import.php NEIN
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_utlook_import.php JA Dateiname
* /var/www/vhosts/event-kalender.checkip.net/tools/csv_outlook_import.php NEIN Dateiname
* Reihenfolge Argumente beachten: JA/NEIN für AlleIN Leerzeichen Dateiname
*/
function returnto() {
global $eol;
if (!isset($argv[0])) {
print $eol.$eol.'<center><h2><a href="'.$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'" target="_self">Zurück zum Event-Kalender</a></h2></center>'.$eol.$eol;
}
exit;
}
// Pruefung ob Aufruf von zulaessiger IP/DYNDNS erfolgt
// ggf. Zeilen auskommentieren!
/*
if (!isset($argv[0])) {
$dynsallow['1']="remote-xxx.dyndns.checkip.net";
$dynsallow['2']="mobile-xxx.dyndns.checkip.net";
$i = 0;
$doaction=false;
foreach ($dynsallow as $dynallow) {
$i++;
$ipremote=$_SERVER["REMOTE_ADDR"];
$hostip=gethostbyname($dynallow);
if ($ipremote==$hostip) { $doaction=true; }
}
if ($doaction === false) { returnto(); }
}
*/
// Einfügen der Outlook-Kalenderdaten in den Event-Kalender
session_start();
$eol = "<br>";
// Felder, die nicht übernommen werden können an Beschreibung anhängen
$AlleIN="NEIN";
// Parameter via URL-Aufruf
if (isset($_REQUEST['AlleIN'])) { $AlleIN="JA"; }
// Parameter via Scriptaufruf
// Achtung: bei Scriptaufruf via cron befindet man sich im Hauptroot. Der Ort muss in chdir ergänzt/geändert werden!
if (isset($argv[0])) {
if (isset($_SERVER['SCRIPT_FILENAME'])) { $chdir = str_replace("/csv_outlook_import.php", "", $_SERVER['SCRIPT_FILENAME']); } else { $chdir = "";}
if (isset($argv[1])) { $AlleIN=$argv[1]; } if ($chdir !== "") { chdir($chdir); }
$eol = chr(10);
}
// Dateiname
$Dateiname="";
// Parameter via URL-Aufruf
if (isset($_REQUEST['Dateiname'])) { $Dateiname = $_REQUEST['Dateiname']; }
// Parameter via Scriptaufruf
if (isset($argv[2])) { $Dateiname = $argv[2]; }
// Ausgabe auf Bildschirm
$Print="NEIN";
// Parameter via URL-Aufruf
if (isset($_REQUEST['Print'])) { $Print="JA"; }
$DB_WORK_DIR = str_replace('tools', 'export/', getcwd());
$DB_HOME_DIR = str_replace('tools', '', getcwd());
if (is_file($DB_HOME_DIR."/verbindung.php")) {
require_once $DB_HOME_DIR."/verbindung.php";
} else { print "Fehler include verbindung.php".$eol; returnto(); }
if ($Dateiname !== "") { $DB_WORK_FILE = $Dateiname; if ($Print == "JA") { print "Dateiname: ".$Dateiname.$eol.$eol; }
} else { $DB_WORK_FILE = 'outlook_von.csv'; }
$DB_WORK_CSV_FILE = $DB_WORK_DIR.$DB_WORK_FILE;
$ok = 0;
$setFeldbezeichner="NEIN";
$gruppe = date("YmdHis") . mt_rand(100, 999);
if (($handle = fopen($DB_WORK_CSV_FILE, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// holen wir die Feldbezeichner
if ($setFeldbezeichner == "NEIN") { $Feldbezeichner = $data; $setFeldbezeichner = "JA"; if ($Print == "JA") { print_r($Feldbezeichner); print $eol.$eol; } continue; }
// jetzt die Daten
$csvStart = explode(".",$data[1]);
$csvEnde = explode(".",$data[3]);
$start = $csvStart[2].'-'.substr("00".$csvStart[1], -2).'-'.substr("00".$csvStart[0], -2).' '.$data[2];
$ende = $csvEnde[2].'-'.substr("00".$csvEnde[1], -2).'-'.substr("00".$csvEnde[0], -2).' '.$data[4];
if ($data[5] == "Ein") { $volltag=1; } else { $volltag = 0; }
if ($data[17] !== "Normal") { $prioritaet = intval($data[17]); } else { $prioritaet=0; }
if ($data[18] !== "Aus") { $privat=1; } else { $privat = 0; }
$data_kategorien_beschreibung = "";
$insertinto_kategorie = "";
if ($data[15] !== "") {
$data[15] = str_replace(";", ",", $data[15]);
$data_kategorien = explode(",", $data[15]);
$kategorietest_break = "";
foreach ($KATEGORIEN AS $kategorietest => $kategorie_value ) {
foreach($data_kategorien AS $data_kategorie => $data_value) {
if (strtolower($kategorie_value) == strtolower($data_value)) {
$insertinto_kategorie = $kategorie_value; $kategorietest_break ="JA"; break;
}
if ($kategorietest_break == "JA") { break; }
}
}
$data_kategorien_beschreibung = "#".str_replace($insertinto_kategorie, "", $data[15]);
$data_kategorien_beschreibung = str_replace(["#,", ",,", "#"], ["", ",",""], $data_kategorien_beschreibung);
} else {$insertinto_kategorie = "";}
if ($AlleIN == "JA") {
$beschreibung = "";
if ($data_kategorien_beschreibung !== "") { $beschreibung .= "weitere Kategorien: ".$data_kategorien_beschreibung.chr(10); }
if ($data[6] !== "") { $beschreibung .= $Feldbezeichner[6]." = ".$data[6].chr(10); }
if ($data[7] !== "") { $beschreibung .= $Feldbezeichner[7]." = ".$data[7].chr(10); }
if ($data[8] !== "") { $beschreibung .= $Feldbezeichner[8]." = ".$data[8].chr(10); }
if ($data[9] !== "") { $beschreibung .= $Feldbezeichner[9]." = ".$data[9].chr(10); }
if ($data[10] !== "") { $beschreibung .= $Feldbezeichner[10]." = ".$data[10].chr(10); }
if ($data[11] !== "") { $beschreibung .= $Feldbezeichner[11]." = ".$data[11].chr(10); }
if ($data[12] !== "") { $beschreibung .= $Feldbezeichner[12]." = ".$data[12].chr(10); }
if ($data[13] !== "") { $beschreibung .= $Feldbezeichner[13]." = ".$data[13].chr(10); }
if ($data[19] !== "") { $beschreibung .= $Feldbezeichner[19]." = ".$data[19].chr(10); }
if ($data[20] !== "") { $beschreibung .= $Feldbezeichner[20]." = ".$data[20].chr(10); }
if ($data[21] !== "") { $beschreibung .= $Feldbezeichner[21]." = ".$data[21].chr(10); }
$beschreibung = str_replace('""', '"', $data[14].chr(10).chr(10).'---'.chr(10).$beschreibung);
} else { $beschreibung = str_replace('""', '"', $data[14]); }
$sqlerror = false;
if ($Print == "JA") {
print "Start: ".$start.$eol;
print "Ende: ".$ende.$eol;
print "Volltag: ".$volltag.$eol;
print "Name: ".$NAME.$eol;
print "Event: ".$data[0].$eol;
print "Beschreibung: ".$beschreibung.$eol;
print "Adresse: ".$data[16].$eol;
print "Priorität: ".$prioritaet.$eol;
print "Privat: ".$privat.$eol;
print "Kategorie: ".$insertinto_kategorie.$eol;
print "Gruppe: ".$gruppe.$eol;
print $eol.$eol."###---####".$eol.$eol;
//print_r($data);
}
$insertinto = "INSERT INTO `" . $TABLE_PREFIX . "_kalender` (start, ende, volltag, name, event, beschreibung, adresse, prioritaet, privat, kategorie, gruppe) ";
$insertinto .= "VALUES ('". $start . "', '" . $ende . "', '" . $volltag . "', '" . $NAME . "', '" . $data[0] . "', '" . $beschreibung . "', '" . $data[16] . "', '" . $prioritaet . "', '" . $privat . "', '" . $insertinto_kategorie . "', '" . $gruppe . "')";
if ($db->exec($insertinto)) { $ok++; } else { $sqlerror = true; $ok = 0; break; }
}
if ($ok > 0) { print $eol.'Die Daten aus '.$DB_WORK_FILE.' wurden in den Event-Kalender importiert.'; }
if ($sqlerror) { print $eol.'SQL-Fehler bei Datenimport!'.$eol; }
} else {
print $eol.'Fehler beim Öffnen der Datei '.$DB_WORK_FILE.$eol;
}
returnto();
?>