コード例 #1
0
ファイル: config.inc.php プロジェクト: TobiasKrais/d2u_kurse
// add lang file
if ($REX['REDAXO']) {
    $I18N->appendFile($REX['INCLUDE_PATH'] . '/addons/d2u_kurse/plugins/kufer_import/lang/');
}
// consts
define('KUFER_IMPORT_DEBUG_MODE', false);
define('KUFER_IMPORT_LOG_FILE_PATH', $REX['INCLUDE_PATH'] . '/data/addons/d2u_kurse/kufer_import/');
define('KUFER_IMPORT_LOG_FILE', 'log_' . date('Y') . '.txt');
define('KUFER_IMPORT_STRING', 'KuferSQL');
// includes
require $REX['INCLUDE_PATH'] . '/addons/d2u_kurse/plugins/kufer_import/classes/class.kufer_sync.inc.php';
require $REX['INCLUDE_PATH'] . '/addons/d2u_kurse/plugins/kufer_import/classes/class.kufer_sync_utils.inc.php';
// default settings (user settings are saved in data dir!)
$REX['ADDON']['kufer_import']['settings'] = array('default_kurs_kategorie_id' => 0, 'default_ort_id' => 0, 'default_zielgruppe_id' => 0, 'xml_anmeldung_verzeichnis' => '/kurse/anmeldungen/', 'xml_url' => '');
// overwrite default settings with user settings
kufer_sync_utils::includeSettingsFile();
if (!$REX['REDAXO']) {
    if (!class_exists('KLogger')) {
        require $REX['INCLUDE_PATH'] . '/addons/d2u_kurse/plugins/kufer_import/classes/class.klogger.inc.php';
    }
    rex_register_extension('SEO42_INCLUDED', function () {
        if (rex_request('func') == 'kufer_import') {
            kufer_sync::syncData();
            // Pathliste neu generieren
            if (OOAddon::isActivated('seo42')) {
                seo42_generate_pathlist(array());
            }
            exit;
        }
    });
}
コード例 #2
0
 /**
  * Importiert die Daten aus der aus Kufer SQL exportierten XML Datei.
  * @global mixed[] $REX Redaxo Variable
  */
 public static function syncData()
 {
     global $REX;
     // error reporting
     if (KUFER_IMPORT_DEBUG_MODE) {
         ini_set('display_startup_errors', 1);
         ini_set('display_errors', 1);
         error_reporting(-1);
     } else {
         ini_set('display_startup_errors', 0);
         ini_set('display_errors', 0);
         error_reporting(0);
     }
     include_once $REX['INCLUDE_PATH'] . '/functions/function_rex_generate.inc.php';
     // init logger
     $logFile = KUFER_IMPORT_LOG_FILE_PATH;
     $log = KLogger::instance($logFile, KLogger::INFO);
     // PHP Log Einstellungen werden ausgelesen, damit sie später zurückgesetzt werden können
     $phpLogErrors = ini_get('log_errors');
     $phperrorLog = ini_get('error_log');
     ini_set('log_errors', 1);
     ini_set('error_log', $log->getLogFilePath());
     $log->logInfo('======================================== START Kufer Import ========================================');
     $context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
     $xmlUrl = $REX['ADDON']['kufer_import']['settings']['xml_url'];
     // XML Datei auslesen
     $xmlString = file_get_contents($xmlUrl, false, $context);
     $kufer_kurse = simplexml_load_string($xmlString, null, LIBXML_NOCDATA);
     // Bestehende Kurse auslesen, falls sie aktualisiert werden
     require_once $REX['INCLUDE_PATH'] . '/addons/d2u_kurse/classes/class.kurs.inc.php';
     $kurse = Kurs::getAll($REX['TABLE_PREFIX'], FALSE);
     // Nur die Kurse sind von Interesse, die durch kufer_import hinzugefügt wurden
     $importierte_kurse = array();
     foreach ($kurse as $kurs) {
         if ($kurs->import == KUFER_IMPORT_STRING) {
             $importierte_kurse[$kurs->kursnummer] = $kurs;
         }
     }
     // Kufer Kurse hinzufügen oder aktualisieren
     $counter_new = 0;
     $counter_update = 0;
     $kurskategorien = Kurskategorie::getAll($kurs->table_prefix, 0, FALSE);
     $terminkategorien = Terminkategorie::getAll($kurs->table_prefix, FALSE);
     $zielgruppen = Zielgruppe::getAll($kurs->table_prefix, FALSE);
     foreach ($kufer_kurse->kurs as $kufer_kurs) {
         // Kurse, die ausfallen werden nicht importiert
         if (isset($kufer_kurs->ausfall)) {
             continue;
         }
         // Kurse, die schon begonnen haben werden nicht importiert
         if (isset($kufer_kurs->beginndat) && $kufer_kurs->beginndat != "") {
             $d = explode(".", $kufer_kurs->beginndat);
             $beginndat_time = mktime(0, 0, 0, $d[1], $d[0], $d[2]);
             if (strtotime("-1 day") > $beginndat_time) {
                 continue;
             }
         }
         $kurs = Kurs::factory($REX['TABLE_PREFIX']);
         // Wurde Kurs schon einmal importiert?
         if (isset($kufer_kurs->knr)) {
             $kufer_kursnummer = (string) $kufer_kurs->knr;
             if (array_key_exists($kufer_kursnummer, $importierte_kurse)) {
                 // Kurs aus Array holen ...
                 $kurs = $importierte_kurse[$kufer_kursnummer];
                 // ... und entfernen, denn übrige Kurse werden später gelöscht
                 unset($importierte_kurse[$kufer_kursnummer]);
             }
         }
         // Werte aus Import holen und in Kursobjekt schreiben
         // Kursnummer
         if (isset($kufer_kurs->knr)) {
             $kurs->kursnummer = (string) $kufer_kurs->knr;
         }
         // Titel
         if (isset($kufer_kurs->titelkurz) && $kufer_kurs->titelkurz != "") {
             $kurs->titel = (string) $kufer_kurs->titelkurz;
         } else {
             if (isset($kufer_kurs->titellang) && $kufer_kurs->titellang != "") {
                 $kurs->titel = (string) $kufer_kurs->titellang;
             }
         }
         // Beschreibung
         $kurs->beschreibung = "";
         // Zuerst Zurücksetzen
         if (isset($kufer_kurs->titellang) && $kufer_kurs->titellang != "") {
             $kurs->beschreibung = "<p><b>" . (string) $kufer_kurs->titellang . "</b></p>";
         }
         if (isset($kufer_kurs->web_info) && $kufer_kurs->web_info != "") {
             $kurs->beschreibung .= "<p>" . nl2br($kufer_kurs->web_info) . "</p>";
         } else {
             if (isset($kufer_kurs->inhalt) && $kufer_kurs->inhalt != "") {
                 $kurs->beschreibung .= "<p>" . nl2br($kufer_kurs->inhalt) . "</p>";
             }
         }
         if (isset($kufer_kurs->material) && $kufer_kurs->material != "") {
             $kurs->beschreibung .= "<p><b>Material</b></p>";
             $kurs->beschreibung .= "<p>" . nl2br($kufer_kurs->material) . "</p>";
         }
         // Anmeldung mit Warenkorb möglich
         if (isset($kufer_kurs->keinewebanmeldung) && $kufer_kurs->keinewebanmeldung == "F") {
             $kurs->anmeldung_moeglich = "ja";
         } else {
             if (isset($kufer_kurs->keinewebanmeldung) && $kufer_kurs->keinewebanmeldung == "W") {
                 $kurs->anmeldung_moeglich = "nein";
             }
         }
         if (isset($kufer_kurs->tnmax) && isset($kufer_kurs->tnanmeldungen) && (int) $kufer_kurs->tnmax > 0 && $kufer_kurs->tnanmeldungen >= (int) $kufer_kurs->tnmax) {
             $kurs->anmeldung_moeglich = "ausgebucht";
         }
         // Datum Kurs
         if (isset($kufer_kurs->beginndat) && $kufer_kurs->beginndat != "") {
             // Beginn
             $kurs->datum_von = kufer_sync::formatDate($kufer_kurs->beginndat);
             // Ende
             if (isset($kufer_kurs->endedat) && $kufer_kurs->endedat != "" && trim($kufer_kurs->beginndat) != trim($kufer_kurs->endedat)) {
                 $kurs->datum_bis = kufer_sync::formatDate($kufer_kurs->endedat);
                 $kurs->uhrzeit = "";
             } else {
                 $kurs->datum_bis = "";
                 // Uhrzeit bei eintägigen Veranstaltungen ...
                 if (isset($kufer_kurs->beginnuhr) && $kufer_kurs->beginnuhr != "") {
                     $kurs->uhrzeit = $kufer_kurs->beginnuhr;
                     if (isset($kufer_kurs->endeuhr) && $kufer_kurs->endeuhr != "") {
                         $kurs->uhrzeit .= " - " . $kufer_kurs->endeuhr;
                     }
                     $kurs->uhrzeit .= " Uhr";
                 }
             }
         }
         if (isset($kufer_kurs->termine) && $kufer_kurs->termine->termin->count() > 1) {
             // ... bei mehrtätigen Veranstaltungen Termine in Beschreibung schreiben
             $kurs->beschreibung .= "<p><b>Termine</b></p>";
             $kurs->beschreibung .= "<ul>";
             for ($i = 0; $i < $kufer_kurs->termine->termin->count(); $i++) {
                 $kurs->beschreibung .= "<li>" . $kufer_kurs->termine->termin[$i]->tag;
                 if (isset($kufer_kurs->termine->termin[$i]->zeitvon) && $kufer_kurs->termine->termin[$i]->zeitvon != "") {
                     $kurs->beschreibung .= ": " . $kufer_kurs->termine->termin[$i]->zeitvon;
                     if (isset($kufer_kurs->termine->termin[$i]->zeitbis) && $kufer_kurs->termine->termin[$i]->zeitbis != "") {
                         $kurs->beschreibung .= " - " . $kufer_kurs->termine->termin[$i]->zeitbis;
                     }
                     $kurs->beschreibung .= " Uhr";
                 }
                 $kurs->beschreibung .= "</li>";
             }
             $kurs->beschreibung .= "</ul>";
         }
         if (isset($kufer_kurs->dauerdetails) && $kufer_kurs->dauerdetails != "") {
             $kurs->beschreibung .= "<p><b>Zusätzliche Bemerkungen zum Termin:</b></p><p>" . $kufer_kurs->dauerdetails . "</p>";
         }
         // Kursort: siehe Einstellungen
         $kurs->ort = new Kursort($REX['ADDON']['kufer_import']['settings']['default_ort_id'], $kurs->table_prefix);
         // Kursgebühren
         if (isset($kufer_kurs->gebnorm) && floatval($kufer_kurs->gebnorm) > 0) {
             $kurs->kosten = floatval($kufer_kurs->gebnorm);
         }
         if (isset($kufer_kurs->geberm) && floatval($kufer_kurs->geberm) > 0 && $kufer_kurs->gebnorm != $kufer_kurs->geberm) {
             $kurs->kosten_erm = floatval($kufer_kurs->geberm);
         }
         // Maximale Teilnehmer
         if (isset($kufer_kurs->tnmax) && $kufer_kurs->tnmax > 0) {
             $kurs->teilnehmer_max = (int) $kufer_kurs->tnmax;
             // Konvertierung zu int nötig
         }
         // Minimale Teilnehmer
         if (isset($kufer_kurs->tnmin) && $kufer_kurs->tnmin > 0) {
             $kurs->teilnehmer_min = (int) $kufer_kurs->tnmin;
             // Konvertierung zu int nötig
         }
         // Anzahl Anmeldunngen
         if (isset($kufer_kurs->tnanmeldungen) && $kufer_kurs->tnanmeldungen > 0) {
             $kurs->teilnehmer_angemeldet = (int) $kufer_kurs->tnanmeldungen;
             // Konvertierung zu int nötig
         }
         // Anzahl auf Warteliste
         if (isset($kufer_kurs->tnwarteliste) && $kufer_kurs->tnwarteliste > 0) {
             $kurs->teilnehmer_warteliste = (int) $kufer_kurs->tnwarteliste;
             // Konvertierung zu int nötig
         }
         // Dozenten
         if (isset($kufer_kurs->dozenten) && count($kufer_kurs->dozenten) > 0) {
             $kurs->kursleiter = "";
             // Erst Reset der Variable
             for ($i = 0; $i < $kufer_kurs->dozenten->dozent->count(); $i++) {
                 $dozent = $kufer_kurs->dozenten->dozent[$i];
                 if (strlen($kurs->kursleiter) > 3) {
                     $kurs->kursleiter .= ", ";
                 }
                 if (isset($dozent->titel)) {
                     $kurs->kursleiter .= $dozent->titel . " ";
                 }
                 if (isset($dozent->vorname) && isset($dozent->name)) {
                     $kurs->kursleiter .= $dozent->vorname . " " . $dozent->name;
                 }
             }
         }
         // Ort: Raumname
         if (isset($kufer_kurs->ortraumname) && $kufer_kurs->ortraumname != "") {
             $kurs->raum = $kufer_kurs->ortraumname;
         }
         // Für die Zuordnung der Kategorien und Zielgruppen zuerst ein Reset
         $kurs->kurskategorie = FALSE;
         $kurs->sekundaere_kurskategorie_ids = array();
         $kurs->zielgruppen_ids = array();
         // Kategorien
         if (isset($kufer_kurs->kategorien) && count($kufer_kurs->kategorien) > 0) {
             // Erst mal nur die Kufer Kursbezeichnungen holen
             $kufer_kurs_bezeichnungstrukturen = array();
             for ($i = 0; $i < $kufer_kurs->kategorien->kategorie->count(); $i++) {
                 $kufer_kurs_bezeichnungstrukturen[] = (string) $kufer_kurs->kategorien->kategorie[$i]->bezeichnungstruktur;
             }
             // Kurskategorie zuordnen
             $kurskategorie_counter = 0;
             foreach ($kurskategorien as $kurskategorie) {
                 foreach ($kurskategorie->kufer_kategorien_bezeichnungsstrukturen as $kurskategorie_bezeichnungsstruktur) {
                     if (in_array($kurskategorie_bezeichnungsstruktur, $kufer_kurs_bezeichnungstrukturen) && !in_array($kurskategorie->kurskategorie_id, $kurs->sekundaere_kurskategorie_ids)) {
                         if ($kurskategorie_counter == 0) {
                             $kurs->kurskategorie = $kurskategorie;
                         }
                         $kurs->sekundaere_kurskategorie_ids[] = $kurskategorie->kurskategorie_id;
                     }
                 }
             }
             // Terminkategorie zuordnen
             foreach ($terminkategorien as $terminkategorie) {
                 foreach ($terminkategorie->kufer_kategorien_bezeichnungsstrukturen as $terminkategorie_bezeichnungsstruktur) {
                     if (in_array($terminkategorie_bezeichnungsstruktur, $kufer_kurs_bezeichnungstrukturen) && !in_array($terminkategorie->terminkategorie_id, $kurs->terminkategorie_ids)) {
                         $kurs->terminkategorie_ids[] = $terminkategorie->terminkategorie_id;
                     }
                 }
             }
             // Zielgruppe aus Katgeorien zuordnen
             foreach ($zielgruppen as $zielgruppe) {
                 foreach ($zielgruppe->kufer_kategorien_bezeichnungsstrukturen as $zielgruppe_bezeichnungsstruktur) {
                     if (in_array($zielgruppe_bezeichnungsstruktur, $kufer_kurs_bezeichnungstrukturen) && !in_array($zielgruppe->zielgruppe_id, $kurs->zielgruppen_ids)) {
                         $kurs->zielgruppen_ids[] = $zielgruppe->zielgruppe_id;
                     }
                 }
             }
         }
         // Falls immernoch keine Kurskategorie gesetzt wurde
         if ($kurs->kurskategorie === FALSE) {
             $kurs->kurskategorie = new Kurskategorie($REX['ADDON']['kufer_import']['settings']['default_kurs_kategorie_id'], $kurs->table_prefix);
             $kurs->sekundaere_kurskategorie_ids = array($REX['ADDON']['kufer_import']['settings']['default_kurs_kategorie_id']);
         }
         // Zielgruppe aus Zielgruppe
         if (isset($kufer_kurs->zielgruppe) && $kufer_kurs->zielgruppe != "") {
             foreach ($zielgruppen as $zielgruppe) {
                 if ($zielgruppe->kufer_zielgruppe_name == $kufer_kurs->zielgruppe && !in_array($zielgruppe->zielgruppe_id, $kurs->zielgruppen_ids)) {
                     $kurs->zielgruppen_ids[] = $zielgruppe->zielgruppe_id;
                 }
             }
         } else {
             if (count($kurs->zielgruppen_ids) == 0) {
                 $kurs->zielgruppen_ids[] = $REX['ADDON']['kufer_import']['settings']['default_zielgruppe_id'];
             }
         }
         // Status
         $kurs->status = "online";
         // Importiert durch Kufer SQL
         $kurs->import = KUFER_IMPORT_STRING;
         // Kurs speichern und Ergebnis loggen
         if ($kurs->kurs_id == 0) {
             $counter_new++;
         } else {
             $counter_update++;
         }
         $log->logInfo($kurs->save());
     }
     print "<h1>Kufer Import Ergebnis</h1>";
     print "<p>" . $counter_new . " Kurse hinzugefügt.</p>";
     print "<p>" . $counter_update . " Kurse aktualisiert.</p>";
     // Übrige importierte Kurse löschen
     $counter_delete = 0;
     foreach ($importierte_kurse as $importierter_kurs) {
         $log->logInfo($importierter_kurs->delete());
         $counter_delete++;
     }
     print "<p>" . $counter_delete . " Kurse gelöscht.</p>";
     // Einstellungen zum Loggen zurücksetzen
     ini_set('log_errors', $phpLogErrors);
     ini_set('error_log', $phperrorLog);
     $log->logInfo('======================================== ENDE Kufer Import ========================================');
 }