Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php
session_start();
require_once "connect2.php";

// $charset laden um die jeweiligen ISO-Zeichensätzte zu laden.
require_once "charset.php";
$path = "includes/artikel_zusatzinfo/";

require_once $path."system.php";
        
if (!$ini = parse_ini_file($path.$webs[ID].".ini",true)){
}


$html = "";

$expName = $_REQUEST['expName']?$_REQUEST['expName']:array_keys($_SESSION['ini']['generateXML']);

//die Auswahl der verschiedenen immodienste anzeigen
if(!$_REQUEST['mode']){
        if(($_REQUEST['action'] != "edit")and($_REQUEST['action']!="update")){
                $html .= buildImmoSelect();     
        }
} else {
        $html .= createXML();
}

$_SESSION['ini'] = $ini;



//echo $html;

function buildImmoSelect() {
        global $webs;
        global $ini;
        $html = "";
        $html .= "<div style=\"padding:20px;\">\n";
        $html .= "Bitte klicken Sie auf den Immobilien-Anbieter, für den die XML-Dateien generiert werden sollen:";
        $html .= "\n\n<form name=\"\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
                
        foreach($_SESSION['ini']['generateXML'] as $key => $val) {
                if($val==1){
                        $html .= "<a href=\"".$_SERVER['PHP_SELF']."?mode=all&expName=".$key."\">".$ini[$key]['rs_link_text']."</a>&nbsp;&nbsp;&nbsp;\n";       
                        // erstmal hier den ftp_upload anbieten. später dann über webrechte gesteuert.
                        if($ini[$key]){
                                if($ini[$key]['xml_upload']){
                                
                                        //$html .= "<a href=\"/content-management/cronjobs/xml_ftpupload.php?expName=".$key."&img_upload=".$ini[$key]['img_upload']."&xml_upload=".$ini[$key]['xml_upload']."&webId=".$webs['ID']."\">zum XML Upload</a>";              
                                }
                        }       
                        
                }
        }
        
        $html .= "</form>\n";
        $html .= "</div>\n";
        
        return $html;
}

//create_XML();

function createXML() {
        global $data; // artikel_zusatzinfo für einen bestimmten Artikel
        global $expName;        
        
        if(($_REQUEST['artikelId']) and ($_REQUEST['mode']=="single")){
                if(is_array($expName)){
                        foreach($expName as $key => $val){
                                if($val == "is24"){
                                        
                                        // einzel-XML-erstellung erstmal auskommentiert
                                        is24_single_XML($data,$val);            
                                }else{
                                        // TODO: die funktion für die anderen anbieter..
                                        //...
                                }                       
                        }
                }else{
                        if($expName=="is24"){
                                
                                is24_single_XML($data,$expName);
                        }else{
                                // TODO: die funktion für die anderen anbieter..
                                //...
                        }
                }
        }       
        if($_REQUEST['mode']=="all"){
                if(is_array($expName)){
                        foreach($expName as $key => $val){
                                if($val == "is24"){
                                        is24_all_XML($val);             
                                }else{
                                        // TODO: die funktion für die anderen anbieter..
                                        //...
                                }                       
                        }
                }else{
                        if($expName=="is24"){
                                is24_all_XML($expName);
                        }else{
                                // TODO: die funktion für die anderen anbieter..
                                //...
                        }
                }
        }       
}

function is24_single_XML($data,$expName) {
        global $ini;
        
        unset($data['Formular']);
        unset($data['Rubrik']);
        
        $add_data['StatusHP'] = "aktiv"; 
        $add_data['StatusIS24'] = "aktiv";
        $add_data['StatusVBM'] = "aktiv";
        $add_data['Importmodus'] = "importieren";
        $add_data['Waehrung'] = "EUR";
        
        $imgData = $_SESSION['imgData'];
        
        $xw = New xmlWriter(); // Neues xmlWriter Objekt 
        $xw->openMemory(); // Oeffnen eines XML-Dokuments im Speicher 
        $xw->setIndent(TRUE);   
        $xw->startDocument(); // start document 

                // start Rootelement
                $xw->startElement("IS24ImmobilienTransfer"); // start <IS24ImmobilienTransfer>
                        $xw->writeAttribute("xmlns", "http://www.immobilienscout24.de/immobilientransfer"); 
                        $xw->writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
                        $xw->writeAttribute("xsi:schemaLocation", "http://www.immobilienscout24.de/immobilientransfer is24immotransfer.xsd");
                        $xw->writeAttribute("ErstellerSoftware", "is24_xml_gen");
                        $xw->writeAttribute("ErstellerSoftwareVersion","Webagentur Niewerth, Gladbeck");
                        $xw->writeAttribute("EmailBeiFehler", $ini[$expName]['email_on_error']);
                
                        // start Anbieter
                        $xw->startElement("Anbieter"); // start <Anbieter>
                                $xw->writeAttribute("ScoutKundenID", $ini[$expName]['kundenID']);
                                
                                // start Artikel Properties
                                // Elemente zur Objektbeschreibung Anfang
                                $orig_data = $data;
                                

                                if(is_array($data)){
                                         
                                        
                                        $arrKeys = array_keys($data);
                                        
                                        $data[$arrKeys[0]][$arrKeys[0]]['AnbieterObjektID'] = $_REQUEST['artikelId']."_".$data[$arrKeys[0]][$arrKeys[0]]['AnbieterObjektID'];
                                        //folgende Punkte werden erstmal gelöscht, weil sie am ende nach den multimediaanhängen
                                        //angefügt werden müssen.
                                        unset($data[$arrKeys[0]]['Kaufpreise']);
                                        unset($data[$arrKeys[0]]['Mietpreise']);
                                        unset($data[$arrKeys[0]]['BefeuerungsArt']);
                                        unset($data[$arrKeys[0]]['Energieausweis']);
                                        
                                        $xw->startElement($arrKeys[0]);
                                }
                                
                                foreach($data as $key => $val) {
                                        
                                        if(is_array($val)) {
                                                foreach($val as $k => $v){
                                                        if($k==$arrKeys[0]){
                                                                foreach($v as $key_ => $val_){
                                                                        if(($key_!="Rubrik")and($key_!="Region")){
                                                                                
                                                                                // arrays werden komma-getrennt übergeben
                                                                                /// wie z.B. bei Multiselect-Boxen
                                                                                if(is_array($val_)){
                                                                                        if(strlen($val_)){
                                                                                                $val_ = implode(",",$val_);     
                                                                                        }
                                                                                }
                                                                                if($val_=="on")$val_ = "true";
                                                                                
                                                                                if(strlen($val_)>0){
                                                                                        $xw->writeAttribute($key_,trim(utf8_encode(strip_tags($val_))));        
                                                                                }
                                                                        }
                                                                }
                                                                
                                                                if(is_array($add_data)){
                                                                        foreach($add_data as $addk => $addv){
                                                                                $xw->writeAttribute($addk,utf8_encode(strip_tags($addv)));
                                                                        }       
                                                                }
                                                        }else{
                                                                $xw->startElement($k); // start Objekttyp
                                                                
                                                                
                                                                foreach($v as $key_ => $val_){
                                                                        if(($key_!="Rubrik")and($key_!="Region")){

                                                                                // arrays werden komma-getrennt übergeben
                                                                                /// wie z.B. bei Multiselect-Boxen
                                                                                if(is_array($val_)){
                                                                                        if(strlen($val_)){
                                                                                                $val_ = implode(",",$val_);     
                                                                                        }
                                                                                }
                                                                                if($val_=="on")$val_ = "true";
                                                                                if(strlen($val_)>0){
                                                                                        if(($key_=="Objektbeschreibung")or
                                                                                                ($key_=="Lage")or
                                                                                                ($key_=="Ausstattung")or
                                                                                                ($key_=="SonstigeAngaben")) {
                                                                                                $xw->text(trim(utf8_encode(strip_tags($val_))));
                                                                                        }else{
                                                                                                $xw->writeAttribute($key_,trim(utf8_encode(strip_tags($val_))));        
                                                                                        }
                                                                                                
                                                                                }
                                                                        }
                                                                }
                                                                $xw->endElement(); // end Objekttyp              
                                                        }

                                                }
                                                // die bilder müssen noch angefügt werden
                                                if(is_array($imgData)){
                                                        foreach($imgData as $key1 => $val1){
                                                                
                                                                $xw->startElement('MultimediaAnhang');  
                                                                foreach($imgData[$key1] as $k1 => $v1){
                                                                        $xw->writeAttribute($k1,utf8_encode(strip_tags($v1)));  
                                                                }
                                                                $xw->endElement(); // close node
                                                        }
                                                        
                                                }
                                                
                                        }
                                }
                                
                                if(is_array($orig_data)){
                                        $arrKeys = array_keys($orig_data);
                                }
                                foreach($orig_data[$arrKeys[0]] as $key => $val) {
                                        
                                        if(is_array($val)){
                                                $build = 0;
                                                if(($key == "Kaufpreise")or($key == "Mietpreise")){
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($v){
                                                                                if($v == "on")$v = "true";
                                                                                $xw->writeAttribute($k,trim(utf8_encode(strip_tags($v))));      
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }
                                                
                                                if($key == "BefeuerungsArt"){
                                                        $build = 0;
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($k){
                                                                                if($v){
                                                                                        foreach($v as $k_ => $v_){
                                                                                                $xw->startElement($v_);
                                                                                                $xw->endElement();      
                                                                                                
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }
                                                if($key == "Energieausweis"){
                                                        $build = 0;
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($k){
                                                                                if($v){
                                                                                        if($v == "on")$v = "true";
                                                                                        $xw->writeAttribute($k,trim(utf8_encode(strip_tags($v))));      
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }
                                        }
                                }
                                

                                $xw->endElement(); // close node $arrKeys[0]
                                 
                        $xw->endElement(); // close node <Anbieter>  
        
                // close Rootelement
                $xw->endElement();  // close node <IS24ImmobilienTransfer>

        // end document
        $xw->endDocument();  
        
        //speichern in XML datei
        // IhrDateiname_st_ZJH_imt.xml
        $filepath = "/web/apache/content-management/xml/".$expName."/".$ini['web']['xmlFolder']."/";
        $filename = $_POST['artikelId']."_".$ini['web']['xmlPrefix'].$expName."_st_ZJH_imt.xml";
        if($fp = fopen($filepath.$filename,"w")) {
                
                fputs($fp,$xw->outputMemory());
                fclose($fp);
                build_log($_POST['artikelId'],"xml_export","/xml/".$expName."/".$ini['web']['xmlFolder']."/".$filename);
        }
        echo $xw->outputMemory();  // Ausgabe des erzeugten XML

} 


function is24_all_XML($expName) {
        global $ini;
        echo buildImmoSelect();
        
        $sql = "select a.artikel_zusatzinfo as data,a.ID as artikelId 
                                from artikel a,directory d 
                                
                                where a.Father in 
                                
                                (select directory.ID as dirId from directory where d.sichtbar=1 and a.Father = d.Id) 
                                
                                and immo_export_".$ini[$expName]['immoExportId']."=1 
                                
                                order by a.ID";
        
        $add_data['StatusHP'] = "aktiv"; 
        $add_data['StatusIS24'] = "aktiv";
        $add_data['StatusVBM'] = "aktiv";
        $add_data['Importmodus'] = "importieren";
        $add_data['Waehrung'] = "EUR";

        if($q=mysql_query($sql)) {
                while($r=mysql_fetch_assoc($q)){
                        if($r['data']){
                                $data = unserialize($r['data']);
                                        
                        }
                        
                        $imgData = is24_getImgData($ini,$expName,$r['artikelId']);
                        unset($data['Formular']);
                        unset($data['Rubrik']);
                        $xw = New xmlWriter(); // Neues xmlWriter Objekt 
                        $xw->openMemory(); // Oeffnen eines XML-Dokuments im Speicher 
                        $xw->setIndent(TRUE);   
                        $xw->startDocument(); // start document 

                        // start Rootelement
                        $xw->startElement("IS24ImmobilienTransfer"); // start <IS24ImmobilienTransfer>
                        $xw->writeAttribute("xmlns", "http://www.immobilienscout24.de/immobilientransfer"); 
                        $xw->writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
                        $xw->writeAttribute("xsi:schemaLocation", "http://www.immobilienscout24.de/immobilientransfer is24immotransfer.xsd");
                        $xw->writeAttribute("ErstellerSoftware", "is24_xml_gen");
                        $xw->writeAttribute("ErstellerSoftwareVersion","Webagentur Niewerth, Gladbeck");
                        $xw->writeAttribute("EmailBeiFehler", $ini[$expName]['email_on_error']);
                
                        // start Anbieter
                        $xw->startElement("Anbieter"); // start <Anbieter>
                                $xw->writeAttribute("ScoutKundenID", $ini[$expName]['kundenID']);
                                
                                // start Artikel Properties
                                // Elemente zur Objektbeschreibung Anfang
                                $orig_data = $data;


                                if(is_array($data)){
                                        $arrKeys = array_keys($data);
                                        $data[$arrKeys[0]][$arrKeys[0]]['AnbieterObjektID'] = $r['artikelId']."_".$data[$arrKeys[0]][$arrKeys[0]]['AnbieterObjektID'];
                                        //folgende Punkte werden erstmal gelöscht, weil sie am ende nach den multimediaanhängen
                                        //angefügt werden müssen.

                                        unset($data[$arrKeys[0]]['Kaufpreise']);
                                        unset($data[$arrKeys[0]]['Provision']);
                                        unset($data[$arrKeys[0]]['Mietpreise']);
                                        unset($data[$arrKeys[0]]['BefeuerungsArt']);
                                        unset($data[$arrKeys[0]]['Energieausweis']);
                                        
                                        $xw->startElement($arrKeys[0]);
                                }
                                
                                foreach($data as $key => $val) {
                                        
                                        if(is_array($val)) {
                                                foreach($val as $k => $v){
                                                        if($k==$arrKeys[0]){
                                                                foreach($v as $key_ => $val_){
                                                                        if(($key_!="Rubrik")and($key_!="Region")){
                                                                                
                                                                                // arrays werden komma-getrennt übergeben
                                                                                /// wie z.B. bei Multiselect-Boxen
                                                                                if(is_array($val_)){
                                                                                        if(strlen($val_)){
                                                                                                $val_ = implode(",",$val_);     
                                                                                        }
                                                                                }
                                                                                if($val_=="on")$val_ = "true";
                                                                                
                                                                                if(strlen($val_)>0){
                                                                                        $xw->writeAttribute($key_,trim(utf8_encode(strip_tags($val_))));        
                                                                                }
                                                                        }
                                                                }
                                                                
                                                                if(is_array($add_data)){
                                                                        foreach($add_data as $addk => $addv){
                                                                                $xw->writeAttribute($addk,utf8_encode(strip_tags($addv)));
                                                                        }       
                                                                }
                                                        }else{
                                                                $xw->startElement($k); // start Objekttyp
                                                                
                                                                
                                                                foreach($v as $key_ => $val_){
                                                                        if(($key_!="Rubrik")and($key_!="Region")){

                                                                                // arrays werden komma-getrennt übergeben
                                                                                /// wie z.B. bei Multiselect-Boxen
                                                                                if(is_array($val_)){
                                                                                        if(strlen($val_)){
                                                                                                $val_ = implode(",",$val_);     
                                                                                        }
                                                                                }
                                                                                if($val_=="on")$val_ = "true";
                                                                                if(strlen($val_)>0){
                                                                                        if(($key_=="Objektbeschreibung")or
                                                                                                ($key_=="Lage")or
                                                                                                ($key_=="Ausstattung")or
                                                                                                ($key_=="SonstigeAngaben")){
                                                                                                $xw->text(trim(utf8_encode(strip_tags($val_))));
                                                                                        }else{
                                                                                                $xw->writeAttribute($key_,trim(utf8_encode(strip_tags($val_))));        
                                                                                        }
                                                                                                
                                                                                }
                                                                        }
                                                                }
                                                                $xw->endElement(); // end Objekttyp              
                                                        }

                                                }
                                                // die bilder müssen noch angefügt werden
                                                if(is_array($imgData)){
                                                        foreach($imgData as $key1 => $val1){
                                                                
                                                                $xw->startElement('MultimediaAnhang');  
                                                                foreach($imgData[$key1] as $k1 => $v1){
                                                                        $xw->writeAttribute($k1,utf8_encode(strip_tags($v1)));  
                                                                }
                                                                $xw->endElement(); // close node
                                                        }
                                                        
                                                }
                                                
                                        }
                                }
                                
                                if(is_array($orig_data)){
                                        $arrKeys = array_keys($orig_data);
                                }
                                foreach($orig_data[$arrKeys[0]] as $key => $val) {
                                        
                                        if(is_array($val)){
                                                $build = 0;
                                                if(($key == "Kaufpreise")or($key == "Mietpreise")or($key=="Provision")){
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($v){
                                                                                if($v == "on")$v = "true";
                                                                                $xw->writeAttribute($k,trim(utf8_encode(strip_tags($v))));      
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }

                                                if($key == "BefeuerungsArt"){
                                                        $build = 0;
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($k){
                                                                                if($v){
                                                                                        foreach($v as $k_ => $v_){
                                                                                                $xw->startElement($v_);
                                                                                                $xw->endElement();      
                                                                                                
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }
                                                if($key == "Energieausweis"){
                                                        $build = 0;
                                                        foreach($val as $k => $v){
                                                                if($k){
                                                                        if($v){
                                                                                $build=1;
                                                                        }
                                                                }
                                                        }
                                                        if($build==1){
                                                                $xw->startElement($key);
                                                                foreach($val as $k => $v){
                                                                        if($k){
                                                                                if($v){
                                                                                        if($v == "on")$v = "true";
                                                                                        $xw->writeAttribute($k,trim(utf8_encode(strip_tags($v))));      
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                        $xw->endElement(); // close node $arrKeys[0]
                                                }
                                        }
                                }
                                

                        $xw->endElement(); // close node $arrKeys[0]
                                 
                $xw->endElement(); // close node <Anbieter>  
        
        // close Rootelement
        $xw->endElement();  // close node <IS24ImmobilienTransfer>

        // end document
        $xw->endDocument();  

                        //speichern in XML datei
                        // IhrDateiname_st_ZJH_imt.xml
                        $filepath = "/web/apache/content-management/xml/".$expName."/".$ini['web']['xmlFolder']."/";
                        $filename = $r['artikelId']."_".$ini['web']['xmlPrefix'].$expName."_st_ZJH_imt.xml";
                        
                        if($fp = fopen($filepath.$filename,"w")) {
                                fputs($fp,$xw->outputMemory());
                                fclose($fp);
                                echo "<div style=\"padding-left:20px;\">Datei '<a href=\"/xml/".$expName."/".$ini['web']['xmlFolder']."/".$filename."\">".$filename."</a>' wurde erstellt.</div>\n";
                                build_log($r['artikelId'],"xml_export","/xml/".$expName."/".$ini['web']['xmlFolder']."/".$filename);
                        }
                        
                        //echo $xw->outputMemory(); // Ausgabe des erzeugten XML        
                }//end while
        } //end if
}



?>