<?php

    include_once(DATEIPFAD . 'includes/functions.shopeinstellung.inc.php');

    define('VENDOR_PROTECTED_SHOPS', 1);
    define('VENDOR_JANOLAW', 2);
    
    define('CRLF', chr(13) . chr(10));
    
    function AbgleichAGBHostingTexte() {

        $Einstellungen = GetEinstellungen('', 'agb_hosting');

        // Protected Shops
        if ($Einstellungen->agb_hosting->protected_shops_aktiv) {
            AbgleichTexteProtectedShops();
        }
        
        // Janolaw
        if ($Einstellungen->agb_hosting->janolaw_aktiv) {
            AbgleichTexteJanolaw();
        }
    
    }

    function TestProtectedShops($PSBenutzername, $PWPasswort, $PWShopID) {
    
        global $a_se_protected_shop_test_msg_success;
        
        // Parameter
        $API_URL = 'https://www.protectedshops.de/api/';
        $API_User = $PSBenutzername;
        $API_Password = $PWPasswort;
        
        $PostArray['Request'] = 'GetDocumentInfo';
//        $PostArray['Platform'] = "Randshop";
        $PostArray['ShopId'] = $PWShopID;
        $PostArray['Version'] = 1.3;
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_POST, 1);
        curl_setopt($CurlHandler, CURLOPT_POSTFIELDS, $PostArray);
        curl_setopt($CurlHandler, CURLOPT_USERPWD, $API_User . ':' . $API_Password);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        
        $ReturnString = curl_exec($CurlHandler);

//        echo '<pre>';
//        var_dump($ReturnString);
//        echo '</pre>';
        
        curl_close($CurlHandler);
        
        // Auswerten
        try {
        
            $ReturnXML = simplexml_load_string($ReturnString, null, LIBXML_NOCDATA);
            
            if ($ReturnXML === false) {
                throw new Exception('Es konnte keine gültige XML Datei empfangen werden..');
            }
            
            if ($ReturnXML->Error) {
                throw new Exception('Folgender Fehler ist aufgetreten: ' . $ReturnXML->ErrorMessage . ' (' . $ReturnXML->Error . ')');
            }    
            
//            echo '<pre>';
//            var_dump($ReturnXML);
//            echo '</pre>';

            $ResultTestProtectedShops['error'] = false;
            $ResultTestProtectedShops['message'] = $a_se_protected_shop_test_msg_success;
            
            return $ResultTestProtectedShops;
            
        } catch (Exception $e) {
            
            $ResultTestProtectedShops['error'] = false;
            $ResultTestProtectedShops['message'] =  $e->getMessage();
            
            return $ResultTestProtectedShops;
        
        }

    
    }
    
    function TestJanolaw($UserID, $ShopID) {
    
        global $a_se_protected_shop_test_msg_success;
        global $a_se_janolaw_test_msg_success, $a_se_janolaw_test_msg_error;
        
        // Parameter
        $API_UserID = $UserID;
        $API_ShopID = $ShopID;
        $API_URL = 'http://www.janolaw.de/agb-service/shops/' . $API_UserID . '/' . $API_ShopID . '/agb_include.html';
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($CurlHandler, CURLOPT_VERBOSE, false);
        
        
        $ReturnString = curl_exec($CurlHandler);
        $ReturnHTTPCode = curl_getinfo($CurlHandler, CURLINFO_HTTP_CODE);
        
        curl_close($CurlHandler);
        
        // Auswerten
        try {

            if (($ReturnHTTPCode >= 200) && ($ReturnHTTPCode < 300)) { 
            
                $ResultTestJanolaw['error'] = false;
                $ResultTestJanolaw['message'] = $a_se_janolaw_test_msg_success;

            } else {
                
                $ResultTestJanolaw['error'] = true;
                $ResultTestJanolaw['message'] = $a_se_janolaw_test_msg_error;
            
            }                
            
            return $ResultTestJanolaw;
            
        } catch (Exception $e) {
            
            $ResultTestJanolaw['error'] = false;
            $ResultTestJanolaw['message'] =  $e->getMessage();
            
            return $ResultTestJanolaw;
        
        }

    
    }
    
    function GetTextJanolaw($Document) {
        
        $Einstellungen = GetEinstellungen('', 'agb_hosting');

        // Parameter
        $API_UserID = $Einstellungen->agb_hosting->janolaw_user_id;
        $API_ShopID = $Einstellungen->agb_hosting->janolaw_shop_id;
        $API_URL = 'http://www.janolaw.de/agb-service/shops/' . $API_UserID . '/' . $API_ShopID . '/' . $Document . '_include.html';
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        
        $ReturnString = curl_exec($CurlHandler);
        $ReturnHTTPCode = curl_getinfo($CurlHandler, CURLINFO_HTTP_CODE);
        
//        echo '<pre>';
//        var_dump($ReturnString);
//        echo '</pre>';
        
        curl_close($CurlHandler);
        
        // Auswerten
        try {

            if (($ReturnHTTPCode >= 200) && ($ReturnHTTPCode < 300)) { 

                $DocumentText = $ReturnString;

            } else {
                
                throw new Exception('Folgender Fehler ist aufgetreten: ' . $ReturnXML->ErrorMessage . ' (' . $ReturnXML->Error . ')');
                
            }                
            
        } catch (Exception $e) {
            
            $error_msg = 'Fehler in der Datei ' . $e->getFile() . ' in der Zeile ' . $e->getLine() . ':' . CRLF;
            $error_msg .= $e->getMessage();
            
            $errorlog_filename = date('d_m_y.\l\o\g');

            if (!file_exists(DATEIPFAD . 'admin/data/logs/errors/')) {
                mkdir(DATEIPFAD . 'admin/data/logs/errors/', 0777, true);
            }
            
            $FileHandler = fopen(DATEIPFAD . 'admin/data/logs/errors/' . $errorlog_filename, 'a');
            fwrite($FileHandler, CRLF . date('d.m.Y H:i:s') . CRLF);
            fwrite($FileHandler, $error_msg);
            fclose($FileHandler);
            
            return false;
                    
        }

        return $DocumentText;
        
    }
    
    function GetTextProtectedShops($Document) {
        
        $Einstellungen = GetEinstellungen('', 'agb_hosting');

        // Parameter
        $API_URL = 'https://www.protectedshops.de/api/';
        $API_User = $Einstellungen->agb_hosting->protected_shops_benutzername;
        $API_Password = $Einstellungen->agb_hosting->protected_shops_passwort;
        
        $PostArray['Request'] = 'GetDocument';
        $PostArray['ShopId'] = $Einstellungen->agb_hosting->protected_shops_shop_id;
        $PostArray['Document'] = $Document;
        $PostArray['Format'] = 'HtmlLite';
//        $PostArray['Platform'] = "Randshop";
        $PostArray['Version'] = 1.3;
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_POST, 1);
        curl_setopt($CurlHandler, CURLOPT_POSTFIELDS, $PostArray);
        curl_setopt($CurlHandler, CURLOPT_USERPWD, $API_User . ':' . $API_Password);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        
        $ReturnString = curl_exec($CurlHandler);
        
//        echo '<pre>';
//        var_dump($ReturnString);
//        echo '</pre>';
        
        curl_close($CurlHandler);
        
        // Auswerten
        $ReturnXML = simplexml_load_string($ReturnString, null, LIBXML_NOCDATA);

        $DocumentText = (string)$ReturnXML->Document;
        
        return $DocumentText;
        
    }
    
    function AbgleichTexteProtectedShops() {

        $Einstellungen = GetEinstellungen('', 'agb_hosting');

        // Parameter
        $API_URL = 'https://www.protectedshops.de/api/';
        $API_User = $Einstellungen->agb_hosting->protected_shops_benutzername;
        $API_Password = $Einstellungen->agb_hosting->protected_shops_passwort;
        
        $PostArray['Request'] = 'GetDocumentInfo';
//        $PostArray['Platform'] = "Randshop";
        $PostArray['ShopId'] = $Einstellungen->agb_hosting->protected_shops_shop_id;
        $PostArray['Version'] = 1.3;
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_POST, 1);
        curl_setopt($CurlHandler, CURLOPT_POSTFIELDS, $PostArray);
        curl_setopt($CurlHandler, CURLOPT_USERPWD, $API_User . ':' . $API_Password);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        
        $ReturnString = curl_exec($CurlHandler);

//        echo '<pre>';
//        var_dump($ReturnString);
//        echo '</pre>';
        
        curl_close($CurlHandler);
        
        // Auswerten
        try {
        
            $ReturnXML = simplexml_load_string($ReturnString, null, LIBXML_NOCDATA);
        
            if ($ReturnXML === false) {
                throw new Exception('Der Befehl GetDocumentInfo() gab keine gültige XML Datei zurück.');
            }
            
            if ($ReturnXML->Error) {
                throw new Exception('Der Befehl GetDocumentInfo() gab einen Fehler zurück: ' . $ReturnXML->ErrorMessage . ' (' . $ReturnXML->Error . ')');
            }    
            
//            echo '<pre>';
//            var_dump($ReturnXML);
//            echo '</pre>';
            
            $SQLString = 'SELECT ';
            $SQLString .= TABLE_AGBHOSTING . '.document, ';
            $SQLString .= TABLE_AGBHOSTING . '.last_change ';
            $SQLString .= 'FROM ';
            $SQLString .= TABLE_AGBHOSTING . ' ';
            $SQLString .= 'WHERE ';
            $SQLString .= TABLE_AGBHOSTING . '.vendor_id = \'' . VENDOR_PROTECTED_SHOPS . '\' ';
            
    //        echo '$SQLString: ' . $SQLString . '<br>'; 
            
            $MySQLQueryReference = errorlogged_mysql_query($SQLString);
            
            while ($AGBHostingRow = mysql_fetch_array($MySQLQueryReference, MYSQL_ASSOC)) {
                
                $LastChangeVendor = strtotime((string)$ReturnXML->DocumentDate->{$AGBHostingRow['document']});
                $LastChangeShop = strtotime($AGBHostingRow['last_change']);
                
                if ($LastChangeVendor > $LastChangeShop) {
                    
                    $DocumentText = GetTextProtectedShops($AGBHostingRow['document']);
                    
                    $SQLString = 'UPDATE ' .TABLE_AGBHOSTING . ' SET ';
                    $SQLString .= TABLE_AGBHOSTING . '.text = \'' . $DocumentText . '\', ';
                    $SQLString .= TABLE_AGBHOSTING . '.last_change = \'' . (string)$ReturnXML->DocumentDate->{$AGBHostingRow['document']} . '\' ';
                    $SQLString .= 'WHERE ';
                    $SQLString .= TABLE_AGBHOSTING . '.vendor_id = \'' . VENDOR_PROTECTED_SHOPS . '\' AND ';
                    $SQLString .= TABLE_AGBHOSTING . '.document = \'' . $AGBHostingRow['document'] . '\' ';
                    
                    $MySQLUpdateQueryReference = errorlogged_mysql_query($SQLString);
                    
    //                echo '$SQLString: ' . $SQLString . '<br>'; 
                    
                }
                
            }
            
        } catch (Exception $e) {
            
            $error_msg = 'Fehler in der Datei ' . $e->getFile() . ' in der Zeile ' . $e->getLine() . ':' . CRLF;
            $error_msg .= $e->getMessage();
            
            $errorlog_filename = date('d_m_y.\l\o\g');

            if (!file_exists(DATEIPFAD . 'admin/data/logs/errors/')) {
                mkdir(DATEIPFAD . 'admin/data/logs/errors/', 0777, true);
            }
            
            $FileHandler = fopen(DATEIPFAD . 'admin/data/logs/errors/' . $errorlog_filename, 'a');
            fwrite($FileHandler, CRLF . date('d.m.Y H:i:s') . CRLF);
            fwrite($FileHandler, $error_msg);
            fclose($FileHandler);
            
        }
        
    }
    
    function AbgleichTexteJanolaw() {

        global $a_se_janolaw_test_msg_erro;
        
        $Einstellungen = GetEinstellungen('', 'agb_hosting');

        // Parameter
        $API_UserID = $Einstellungen->agb_hosting->janolaw_user_id;
        $API_ShopID = $Einstellungen->agb_hosting->janolaw_shop_id;
        $API_URL = 'http://www.janolaw.de/agb-service/shops/' . $API_UserID . '/' . $API_ShopID . '/agb_include.html';
        
        // per Curl die DocumentInfo einlesen
        $CurlHandler = curl_init();
        
        curl_setopt($CurlHandler, CURLOPT_URL, $API_URL);
        curl_setopt($CurlHandler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($CurlHandler, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($CurlHandler, CURLOPT_SSL_VERIFYPEER, FALSE);
        
        $ReturnString = curl_exec($CurlHandler);
        $ReturnHTTPCode = curl_getinfo($CurlHandler, CURLINFO_HTTP_CODE);
        
//        echo '<pre>';
//        var_dump($ReturnString);
//        echo '</pre>';
        
        curl_close($CurlHandler);
        
        // Auswerten
        try {
        
            if (($ReturnHTTPCode >= 200) && ($ReturnHTTPCode < 300)) { 
            
                $SQLString = 'SELECT ';
                $SQLString .= TABLE_AGBHOSTING . '.document ';
                $SQLString .= 'FROM ';
                $SQLString .= TABLE_AGBHOSTING . ' ';
                $SQLString .= 'WHERE ';
                $SQLString .= TABLE_AGBHOSTING . '.vendor_id = \'' . VENDOR_JANOLAW . '\' ';
                
//                echo '$SQLString: ' . $SQLString . '<br>'; 
                
                $MySQLQueryReference = errorlogged_mysql_query($SQLString);
                
                while ($AGBHostingRow = mysql_fetch_array($MySQLQueryReference, MYSQL_ASSOC)) {
                    
                    $DocumentText = GetTextJanolaw($AGBHostingRow['document']);
                    
                    $SQLString = 'UPDATE ' .TABLE_AGBHOSTING . ' SET ';
                    $SQLString .= TABLE_AGBHOSTING . '.text = \'' . $DocumentText . '\', ';
                    $SQLString .= TABLE_AGBHOSTING . '.last_change = NOW() ';
                    $SQLString .= 'WHERE ';
                    $SQLString .= TABLE_AGBHOSTING . '.vendor_id = \'' . VENDOR_JANOLAW . '\' AND ';
                    $SQLString .= TABLE_AGBHOSTING . '.document = \'' . $AGBHostingRow['document'] . '\' ';
                    
                    $MySQLUpdateQueryReference = errorlogged_mysql_query($SQLString);
                        
        //                echo '$SQLString: ' . $SQLString . '<br>'; 
                    
                }
                
            } else {
                
                throw new Exception($a_se_janolaw_test_msg_erro);
            
            }
            
        } catch (Exception $e) {
            
            $error_msg = 'Fehler in der Datei ' . $e->getFile() . ' in der Zeile ' . $e->getLine() . ':' . CRLF;
            $error_msg .= $e->getMessage();
            
            $errorlog_filename = date('d_m_y.\l\o\g');

            if (!file_exists(DATEIPFAD . 'admin/data/logs/errors/')) {
                mkdir(DATEIPFAD . 'admin/data/logs/errors/', 0777, true);
            }
            
            $FileHandler = fopen(DATEIPFAD . 'admin/data/logs/errors/' . $errorlog_filename, 'a');
            fwrite($FileHandler, CRLF . date('d.m.Y H:i:s') . CRLF);
            fwrite($FileHandler, $error_msg);
            fclose($FileHandler);
            
        }
        
    }
        