Subversion-Projekte lars-tiefland.content-management

Revision

Revision 1 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

    //$Id: mail_func.php 4221 2012-02-21 11:19:57Z tiefland $

    /**
     * @author Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @package content-management
     * @version $Rev: 4221 $
     * @license propietary
     * @filesource
     * 
     */

    /**
     * 
     * @author Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @package content-management
     */

    require_once "fpdf/fpdf.php";
    class PDF extends FPDF
    {
        //Page header
        function Header()
        {
        }

        //Page footer
        function Footer()
        {
        }
    }

    function create_html_pdf( $bestell_id, $adminMail, $mailto, $body, $art,
        $ln = 1 )
    {
        global $webs, $site;

        $date = date( "Y-m-d_H-i" );
        $f_name = $art . "_" . $bestell_id . "_" . $date . "_" . $ln .
            ".html";
        $f_name = str_replace( "ä", "ae", $f_name );
        $f_name = str_replace( "Ä", "Ae", $f_name );
        $f_name = str_replace( "ö", "oe", $f_name );
        $f_name = str_replace( "Ö", "Oe", $f_name );
        $f_name = str_replace( "ü", "ue", $f_name );
        $f_name = str_replace( "Ü", "Ue", $f_name );
        $f_name = str_replace( "ß", "ss", $f_name );

        $f = fopen( $webs['verzeichnis'] . "/images/dokumente/" . $f_name,
            "w" );
        fwrite( $f, $body );
        fclose( $f );
        $sql = "
            REPLACE INTO 
                dokumente 
            (
                table_foreign, 
                row_foreign, 
                data_foreign, 
                document, 
                letzte_Aenderung_am, 
                letzte_Aenderung_von
            )
            VALUES
            (
                'Bestellung', 
                'ID', 
                $bestell_id, 
                '$f_name', 
                NOW(), 
                '" . $_SERVER["PHP_AUTH_USER"] . "'
        )";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            mail( "admin@weban.de",
                "Fehler beim hinzufgen der PDF-Datei zur Bestellung!",
                mysql_error() . "\n$sql", "From: redaktion@$site" );
            $ret = false;
        }
        else
        {
            $ret = mysql_insert_id();
        }
        return $ret;
    }
    function create_pdf( $bestell_id, $adminMail, $mailto, $body, $art, $ln =
        1 )
    {
        global $webs, $site;

        //Instanciation of inherited class
        $pdf = new PDF();
        $sql = "
            SELECT 
                shops_ID 
            FROM 
                Bestellung 
            WHERE 
                ID=$bestell_id
        ";
        $res = mysql_query( $sql );
        $row = mysql_fetch_assoc( $res );
        $shops_ID = $row["shops_ID"];
        require_once
            "/web/apache/content-management/Warenwirtschaft/includes/rechnung/body_$site.inc.php";
        $pdf->setSubject( "E-Mail zur Bestellung " . $_GET["Bestellung"] );
        $pdf->setAuthor( $haendler_name );
        $pdf->setCreator( "fpdf PHP Library" );
        $pdf->AliasNbPages();
        $pdf->AddPage();
        $pdf->setY( 45 );
        $pdf->setFont( 'Arial', '', 10 );
        $pdf->multicell( 0, 4, "$body", "", "L", 0 );
        $date = date( "Y-m-d_H-i-s" );
        $f_name = $art . "_" . $bestell_id . "_" . $date . "_" . $ln .
            ".pdf";
        $f_name = str_replace( "ä", "ae", $f_name );
        $f_name = str_replace( "Ä", "Ae", $f_name );
        $f_name = str_replace( "ö", "oe", $f_name );
        $f_name = str_replace( "Ö", "Oe", $f_name );
        $f_name = str_replace( "ü", "ue", $f_name );
        $f_name = str_replace( "Ü", "Ue", $f_name );
        $f_name = str_replace( "ß", "ss", $f_name );

        $pdf->Output( $webs['verzeichnis'] . "/images/dokumente/$f_name" );
        $sql = "
            REPLACE INTO 
                dokumente 
            (
                table_foreign, 
                row_foreign, 
                data_foreign, 
                document, 
                letzte_Aenderung_am, 
                letzte_Aenderung_von
            )
            VALUES
            (
                'Bestellung', 
                'ID', 
                $bestell_id, 
                '$f_name', 
                NOW(), 
                '" . $_SERVER["PHP_AUTH_USER"] . "'
            )
        ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            mail( "admin@weban.de",
                "Fehler beim hinzufgen der PDF-Datei zur Bestellung!",
                mysql_error() . "\n$sql", "From: redaktion@$site" );
            $ret = false;
        }
        else
        {
            $ret = mysql_insert_id();
        }
        return $ret;
    }
    function generate_LN( $bestell_id, $art )
    {
        $date = date( "Y-m-d_H-i-s" );
        $f_name = $art . "_" . $bestell_id . "_" . $date;
        $f_name = str_replace( "ä", "ae", $f_name );
        $f_name = str_replace( "Ä", "Ae", $f_name );
        $f_name = str_replace( "ö", "oe", $f_name );
        $f_name = str_replace( "Ö", "Oe", $f_name );
        $f_name = str_replace( "ü", "ue", $f_name );
        $f_name = str_replace( "Ü", "Ue", $f_name );
        $f_name = str_replace( "ß", "ss", $f_name );

        $sql = "
            SELECT 
                MAX(document) AS dokument 
            FROM 
                dokumente 
            WHERE 
                document LIKE '$f_name%'
        ";
        $res = mysql_query( $sql );
        if ( $res )
        {
            if ( mysql_num_rows( $res ) )
            {
                $row = mysql_fetch_assoc( $res );
                $dokument = substr( $row["dokument"], 0, strlen( $row["dokument"] ) -
                    4 );
                $dokument = explode( "_", $dokument );
                $ln = $dokument[count( $dokument ) - 1];
                $ln++;
            }
            else
            {
                $ln = 1;
            }
        }
        else
        {
            $ln = 1;
        }
        return $ln;
    }

    function send_email( $to, $subject, &$body, $extra = array() )
    {
        require_once "PEAR.php";
        PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );
        if ( !defined( "CRON" ) )
        {
            define( "CRON", false );
        }
        global $web_rechte;
        $headers = "";
        $params = "";
        $vorlage = false;
        if ( array_key_exists( "headers", $extra ) )
        {
            $headers = $extra["headers"];
            if ( $_SESSION["U_EMAIL"] )
            {
                $headers["From"] = $_SESSION["U_EMAIL"];
            }
            $headers["Return"] = preg_replace( "/.*<(.*)>/", "$1", $headers["From"] );
            /*$test = preg_split( "/<|>/", $headers["From"] );
            $name = trim( $test[0] );
            $email = $test[1];*/
            /*$headers["From"] = sprintf( '=?ISO-8859-1?Q?%s <%s>', imap_8bit
                ( $name ), $email );*/
            //$from = preg_replace( "/(.*)<(.*)>/", "'$1' <$2>", $headers["From"] );
        }
        if ( array_key_exists( "params", $extra ) )
        {
            $params = $extra["params"];
        }
        $sql = "
            SELECT
                *
            FROM
                shops
            WHERE
                ID='" . $extra["shops_ID"] . "'
        ";
        $res = mysql_query( $sql );
        $row = mysql_fetch_assoc( $res );
        if ( $row["mail_server"] )
        {
            $smtp_opts = array( "host" => $row["mail_server"], "port" =>
                "25", "auth" => true, "username" => $row["mail_user"],
                "password" => $row["mail_passwort"] );
            define( "__USE_SMTP__", true );
        }
        else
        {
            define( "__USE_SMTP__", false );
        }
        //weban_debug($smtp_opts);
        $sql = "
            SELECT 
                * 
            FROM 
                web_settings 
            WHERE 
                shops_ID=" . $extra["shops_ID"] . "
            AND
                ID=1000 
        ";
        if ( isset( $_web_rechte["Warenwirtschaft"]["bestellung"]["bestellart"] ) )
        {
            $sql .= "
                AND
                    bestellart_id=1
            ";
        }
        $res = mysql_query( $sql );
        if ( !$res && CRON )
        {
            //weban_debug( $extra );
            //weban_debug( mysql_error() . "\n$sql" );
        }
        if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" )
        {
            if ( !$res )
            {
                die( mysql_error() . "<br>$sql<br>" );
            }
        }
        $num = mysql_num_rows( $res );
        if ( $num )
        {
            $row = mysql_fetch_assoc( $res );
            if ( $row["Inhalt"] )
            {
                $vorlage = true;
            }
        }

        if ( isset( $web_rechte["Warenwirtschaft"]["bestellung"]["html_emails"] ) &&
            $vorlage )
        {
            $shops_ID = ( int )$extra["shops_ID"];
            require_once "Weban_Smarty.class.php";
            require_once "Mail.php";
            require_once "Mail/mime.php";
            $crlf = "\n";

            $recipients = array( $to, );

            $mime = new Mail_mime( $crlf );

            if ( __USE_SMTP__ )
            {
                $mail = &Mail::factory( 'smtp', $smtp_opts );
            }
            else
            {
                $mail = &Mail::factory( 'sendmail' );
            }
            //weban_debug($mail);
            $text = '';

            $sql = "
                SELECT 
                    l.* 
                FROM 
                    Logins l 
                JOIN 
                    Bestellung b 
                ON 
                    b.Login=l.ID 
                AND 
                    b.ID=" . ( int )$extra["bestellung"] . "
            ";

            //ME:
            if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" )
            {
                //echo "<br>sql: " . $sql;
                //echo "<br>body: " . $body;
                //weban_debug( "SQL: " . $sql );
                //weban_debug( "Body:" . $body );
            }

            $res = mysql_query( $sql );
            $Userdata = mysql_fetch_assoc( $res );
            $GLOBALS["ui"] = new Weban_Smarty();
            $GLOBALS["ui"]->compile_dir = $_SERVER["DOCUMENT_ROOT"] .
                "/templates_c/";
            $GLOBALS["ui"]->compile_id = "Warenwirtschaft|MailClient";
            $GLOBALS["ui"]->assign( "heading", $subject );
            $GLOBALS["ui"]->assign( "inhalt", stripslashes( $body ) );
            $GLOBALS["ui"]->assign( "Userdata", $Userdata );
            $GLOBALS["ui"]->assign( "to", $to );
            $GLOBALS["ui"]->assign( "bearbeiter_name", $_SESSION["USERNAME"] );
            $GLOBALS["ui"]->assign( "bearbeiter_email", $_SESSION["U_EMAIL"] );
            $GLOBALS["ui"]->assign( "bearbeiter_telefon", $_SESSION["U_TELEFON"] );
            $GLOBALS["ui"]->assign( "bearbeiter_fax", $_SESSION["U_FAX"] );
            $GLOBALS["ui"]->assign( "date", time() );

            $anlagen = array();

            if ( is_array( $_POST["document"] ) )
            {
                foreach ( $_POST["document"] as $document )
                {
                    if ( file_exists( $document ) )
                    {
                        $mtype = mime_content_type( $document );
                        $mime->addAttachment( $document, $mtype, basename( $document ) );
                        $anlagen[] = basename( $document );
                    }
                }
            }

            if ( is_array( $_FILES["document"] ) )
            {
                if ( array_key_exists( "tmp_name", $_FILES["document"] ) )
                {
                    $document = $_FILES["document"];
                    if ( !$document["error"] )
                    {
                        $mime->addAttachment( $document["tmp_name"], $document["type"],
                            $document["name"] );
                    }
                    $anlagen[] = $document["name"];
                }
                else
                {
                    foreach ( $_FILES["document"] as $document )
                    {
                        if ( !$document["error"] )
                        {
                            $mime->addAttachment( $document["tmp_name"], $document["type"],
                                $document["name"] );
                            $anlagen[] = $document["name"];
                        }
                    }
                }
            }

            //ob_start();
            $GLOBALS["ui"]->assign( "anlagen", $anlagen );
            $html = $GLOBALS["ui"]->fetch( "db:" . $shops_ID . "_1000" );
            //$html = ob_get_contents();
            //ob_end_clean();
            $text = strip_tags( $html, "<br><br />" );
            $text = str_replace( array( "<br>", "<br />" ), "\n", $text );
            $mime->setTXTBody( $text );
            $mime->setHTMLBody( $html );

            $hdrs = array( 'From' => $headers["Return"], 'Return-Path' => $headers["Return"],
                'Subject' => $subject, "To" => $to, "Date" => date( "r" ), );

            //weban_debug($hdrs);
            //do not ever try to call these lines in reverse order
            $text = $mime->get();
            $hdrs = $mime->headers( $hdrs, true );

            $res = $mail->send( $recipients, $hdrs, $text );
            //echo "Sende E-Mail<br>";
            //weban_debug( $res );
            $body = $html;
        }
        else
        {
            $res = mail( $to, $subject, $body, "FROM: " . $headers["From"],
                $params );
        }
        return $res;
    }

    function errorHandler( $error )
    {
        $message = $error->getUserInfo();
        if ( !$message )
        {
            $message = $error->getMessage();
        }
        if ( !empty( $error->backtrace[1]['file'] ) )
        {
            $message .= ' (' . $error->backtrace[1]['file'];
            if ( !empty( $error->backtrace[1]['line'] ) )
            {
                $message .= ' in Zeile ' . $error->backtrace[1]['line'];
            }
            $message .= ')';
        }
        var_dump( $message );
        mail_admin( $message );
    }

    function mail_admin( $message )
    {
        global $site;

        mail( "admin@weban.de", "Fehler auf redaktion.$site", $message,
            "From: info@$site" );
    }

    function checkHTMLVorlage( $shop_id, $bestellart_id = null )
    {
        $vorlage = false;
        $sql = "SELECT 
                *
            FROM
                web_settings
            WHERE
                ID=1000
            AND
                shops_ID=" . $shop_id . "
        ";
        if ( $bestellart_id )
        {
            $sql .= "
                AND
                    bestellart_id=1
            ";
        }
        $res = mysql_query( $sql );
        $num = mysql_num_rows( $res );
        if ( $num )
        {
            $row = mysql_fetch_assoc( $res );
            if ( $row["Inhalt"] )
            {
                $vorlage = true;
            }
        }
        return $vorlage;
    }
?>