Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
3 lars 1
<?php
2
 
3
    //$Id: mail_func.php 763 2011-10-13 08:06:44Z tiefland $
4
 
5
    /**
6
     * @author Lars Tiefland <tiefland@weban.de>
7
     * @copyright 2009 Webagentur Niewerth
8
     * @package content-management
9
     * @version $Rev: 763 $
10
     * @license propietary
11
     * @filesource
12
     *
13
     */
14
 
15
    /**
16
     *
17
     * @author Lars Tiefland <tiefland@weban.de>
18
     * @copyright 2009 Webagentur Niewerth
19
     * @package content-management
20
     */
21
 
22
    if ( !defined( "__USE_MDB2__" ) )
23
    {
24
        define( "__USE_MDB2__", false );
25
    }
26
    require_once ( "fpdf/fpdf.php" );
27
    class PDF extends FPDF
28
    {
29
        //Page header
30
        function Header()
31
        {
32
        }
33
 
34
        //Page footer
35
        function Footer()
36
        {
37
        }
38
    }
39
 
40
    function create_html_pdf( $bestell_id, $adminMail, $mailto, $body, $art, $ln =
41
        1, $site, $user = "", $db = "" )
42
    {
43
        if ( empty( $user ) )
44
        {
45
            $user = $_SERVER["PHP_AUTH_USER"];
46
        }
47
        $date = date( "Y-m-d_H-i" );
48
        $f_name = $art . "_" . $bestell_id . "_" . $date . "_" . $ln . ".html";
49
        $f = fopen( "images/dokumente/" . $f_name, "w" );
50
        fwrite( $f, $body );
51
        fclose( $f );
52
        if ( $db )
53
        {
54
            $db .= ".";
55
        }
56
        $table = $db . "dokumente";
57
        $GLOBALS["user"] = $user;
58
        save_document( $f_name, $bestell_id, $table );
59
        return true;
60
    }
61
 
62
    function save_document( $f_name, $bestell_id, $table = "dokumente", $b_table =
63
        "Bestellung" )
64
    {
65
        if ( empty( $GLOBALS["user"] ) )
66
        {
67
            $GLOBALS["user"] = $_SERVER["PHP_AUTH_USER"];
68
        }
69
        $sql = "
70
            REPLACE INTO
71
                $table
72
                (
73
                    table_foreign,
74
                    row_foreign,
75
                    data_foreign,
76
                    document,
77
                    letzte_Aenderung_am,
78
                    letzte_Aenderung_von
79
                )
80
                VALUES
81
                (
82
                    '$b_table',
83
                    'ID',
84
                    $bestell_id,
85
                    '$f_name',
86
                    NOW(),
87
                    '" . $GLOBALS["user"] . "'
88
                )
89
        ";
90
        if ( __USE_MDB2__ )
91
        {
92
            $res = $GLOBALS["db"]->query( $sql );
93
            if ( PEAR::isError( $res ) )
94
            {
95
                mail( "tiefland@weban.de",
96
                    "Fehler beim hinzufgen der PDF-Datei zur Bestellung!", $res->
97
                    getUserInfo(), "From: redaktion@$site" );
98
            }
99
        }
100
        else
101
        {
102
            $res = mysql_query( $sql );
103
            if ( !$res )
104
            {
105
                mail( "tiefland@weban.de",
106
                    "Fehler beim hinzufgen der PDF-Datei zur Bestellung!",
107
                    mysql_error() . "\n$sql", "From: redaktion@$site" );
108
            }
109
        }
110
    }
111
    function create_pdf( $bestell_id, $adminMail, $mailto, $body, $art, $ln = 1,
112
        $site, $user = "", $db = "", $return_fname = false )
113
    {
114
 
115
        if ( empty( $user ) )
116
        {
117
            $user = $_SERVER["PHP_AUTH_USER"];
118
        }
119
 
120
        if ( $db )
121
        {
122
            $db .= ".";
123
        }
124
        $table = $db . "Bestellung";
125
        //Instanciation of inherited class
126
        $pdf = new PDF();
127
        $sql = "
128
            SELECT
129
                shops_ID
130
            FROM
131
                $table
132
            WHERE
133
                ID=$bestell_id
134
        ";
135
        if ( __USE_MDB2__ )
136
        {
137
            $res = $GLOBALS["db"]->query( $sql );
138
            $row = $res->FetchRow();
139
            $shops_ID = $row["shops_id"];
140
 
141
        }
142
        else
143
        {
144
            $res = mysql_query( $sql );
145
            $row = mysql_fetch_assoc( $res );
146
            $shops_ID = $row["shops_ID"];
147
        }
148
        require_once ( "/web/apache/content-management/Warenwirtschaft/includes/rechnung/body_" .
149
            $site . ".inc.php" );
150
        $pdf->setSubject( "E-Mail zur Bestellung " . $_GET["Bestellung"] );
151
        $pdf->setAuthor( $haendler_name );
152
        $pdf->setCreator( "fpdf PHP Library" );
153
        $pdf->AliasNbPages();
154
        $pdf->AddPage();
155
        $pdf->setY( 45 );
156
        $pdf->setFont( 'Arial', '', 10 );
157
        $pdf->multicell( 0, 4, "$body", "", "L", 0 );
158
        $date = date( "Y-m-d_H-i-s" );
159
        $f_name = $art . "_" . $bestell_id . "_" . $date . "_" . $ln . ".pdf";
160
        $pdf->Output( "images/dokumente/$f_name" );
161
 
162
        $table = $db . "dokumente";
163
 
164
        $GLOBALS["user"] = $user;
165
        save_document( $f_name, $bestell_id, $table );
166
 
167
        if ( $return_fname === true )
168
        {
169
            return $f_name;
170
        }
171
        return true;
172
    }
173
    function generate_LN( $bestell_id, $art )
174
    {
175
        $db = $GLOBALS["INI"]["dbConnect"]["order_db"];
176
 
177
 
178
        if ( $db )
179
        {
180
            $db .= ".";
181
        }
182
 
183
        $date = date( "Y-m-d_H-i-s" );
184
        $f_name = $art . "_" . $bestell_id . "_" . $date;
185
        $sql = "
186
            SELECT
187
                MAX(document) AS dokument
188
            FROM
189
                " . $db . "dokumente
190
            WHERE
191
                document LIKE '$f_name%'
192
        ";
193
        if ( __USE_MDB2__ )
194
        {
195
            $res = $GLOBALS["db"]->query( $sql );
196
            if ( !PEAR::isError( $res ) )
197
            {
198
                if ( $res->NumRows() )
199
                {
200
                    $row = $res->FetchRow( $res );
201
                    $dokument = substr( $row["dokument"], 0, strlen( $row["dokument"] ) -
202
                        4 );
203
                    $dokument = explode( "_", $dokument );
204
                    $ln = $dokument[count( $dokument ) - 1];
205
                    $ln++;
206
                }
207
                else
208
                {
209
                    $ln = 1;
210
                }
211
            }
212
            else
213
            {
214
                $ln = 1;
215
            }
216
        }
217
        else
218
        {
219
            $res = mysql_query( $sql );
220
            if ( $res )
221
            {
222
                if ( mysql_num_rows( $res ) )
223
                {
224
                    $row = mysql_fetch_assoc( $res );
225
                    $dokument = substr( $row["dokument"], 0, strlen( $row["dokument"] ) -
226
                        4 );
227
                    $dokument = explode( "_", $dokument );
228
                    $ln = $dokument[count( $dokument ) - 1];
229
                    $ln++;
230
                }
231
                else
232
                {
233
                    $ln = 1;
234
                }
235
            }
236
            else
237
            {
238
                $ln = 1;
239
            }
240
        }
241
        return $ln;
242
    }
243
 
244
    function send_email( $to, $subject, &$body, $extra = array() )
245
    {
246
        require_once ( "PEAR.php" );
247
        PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );
248
        if ( !defined( "CRON" ) )
249
        {
250
            define( "CRON", false );
251
        }
252
        global $web_rechte;
253
        $headers = "";
254
        $params = "";
255
        $vorlage = false;
256
        if ( array_key_exists( "headers", $extra ) )
257
        {
258
            $headers = $extra["headers"];
259
 
260
            $headers["Return"] = preg_replace( "/.*<(.*)>/", "$1", $headers["From"] );
261
            /*$test = preg_split( "/<|>/", $headers["From"] );
262
            $name = trim( $test[0] );
263
            $email = $test[1];
264
            $headers["From"] = sprintf( '=?ISO-8859-1?Q?%s <%s>', imap_8bit
265
            ( $name ), $email );*/
266
        }
267
        if ( array_key_exists( "params", $extra ) )
268
        {
269
            $params = $extra["params"];
270
        }
271
        if ( $extra["db"] )
272
        {
273
            $dbase = $extra["db"] . ".";
274
        }
275
        $files = array();
276
        if ( array_key_exists( "files", $extra ) )
277
        {
278
            $files = $extra["files"];
279
        }
280
        $shops_table = $dbase . "shops";
281
        $settings_table = $dbase . "web_settings";
282
 
283
        $sql = "
284
            SELECT
285
                *
286
            FROM
287
                " . $shops_table . "
288
            WHERE
289
                ID='" . $extra["shops_ID"] . "'
290
        ";
291
 
292
        if ( __USE_MDB2__ )
293
        {
294
            $res = $GLOBALS["db"]->query( $sql );
295
            if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
296
                $_SERVER["REMOTE_ADDR"] ) || CRON === true )
297
            {
298
                if ( PEAR::isError( $res ) )
299
                {
300
                    die( $res->getUserInfo() );
301
                }
302
            }
303
            $row = $res->FetchRow();
304
        }
305
        else
306
        {
307
            $res = mysql_query( $sql );
308
            if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
309
                $_SERVER["REMOTE_ADDR"] ) || CRON === true )
310
            {
311
                if ( !$res )
312
                {
313
                    die( mysql_error() . "<br>$sql<br>" );
314
                }
315
            }
316
            $row = mysql_fetch_assoc( $res );
317
        }
318
        if ( $row["mail_server"] )
319
        {
320
            $smtp_opts = array( "host" => $row["mail_server"], "port" => "25",
321
                "auth" => true, "username" => $row["mail_user"], "password" => $row["mail_passwort"] );
322
            define( "__USE_SMTP__", true );
323
        }
324
        else
325
        {
326
            define( "__USE_SMTP__", false );
327
        }
328
 
329
        if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
330
            $_SERVER["REMOTE_ADDR"] ) || CRON === true )
331
        {
332
            //var_dump( $row, $smtp_opts );
333
        }
334
        $sql = "
335
            SELECT
336
                inhalt
337
            FROM
338
                $settings_table
339
            WHERE
340
                shops_ID=" . $extra["shops_ID"] . "
341
            AND
342
                ID=1000
343
        ";
344
 
345
        $sql .= ( isset( $web_rechte["Warenwirtschaft"]["bestellung"]["bestellart"] ) ) ?
346
            " AND bestellart_id=1" : "";
347
 
348
        if ( __USE_MDB2__ )
349
        {
350
            $res = $GLOBALS["db"]->query( $sql );
351
            if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
352
                $_SERVER["REMOTE_ADDR"] ) || CRON === true )
353
            {
354
                if ( PEAR::isError( $res ) )
355
                {
356
                    die( $res->getUserInfo() );
357
                }
358
            }
359
            $row = $res->FetchRow();
360
        }
361
        else
362
        {
363
            $res = mysql_query( $sql );
364
            if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
365
                $_SERVER["REMOTE_ADDR"] ) || CRON === true )
366
            {
367
                if ( !$res )
368
                {
369
                    die( mysql_error() . "<br>$sql<br>" );
370
                }
371
            }
372
            $row = mysql_fetch_assoc( $res );
373
        }
374
        if ( $row["inhalt"] )
375
        {
376
            $vorlage = true;
377
        }
378
 
379
        $recipients = array( $to, );
380
        require_once "Mail.php";
381
        require_once "Mail/mime.php";
382
        $mime = new Mail_mime( "\n" );
383
 
384
        if ( __USE_SMTP__ )
385
        {
386
            $mail = &Mail::factory( 'smtp', $smtp_opts );
387
        }
388
        else
389
        {
390
            $mail = &Mail::factory( 'sendmail' );
391
        }
392
 
393
        $text = "";
394
        if ( is_array( $extra["files"] ) )
395
        {
396
            foreach ( $extra["files"] as $document )
397
            {
398
                if ( file_exists( $document ) )
399
                {
400
                    $mtype = mime_content_type( $document );
401
                    $mime->addAttachment( $document, $mtype, basename( $document ) );
402
                    //$anlagen[] = basename( $document );
403
                }
404
            }
405
        }
406
        if ( $vorlage && $to != $headers["From"] )
407
        {
408
            $shops_ID = ( int )$extra["shops_ID"];
409
            require_once ( "libs/Smarty.class.php" );
410
 
411
            $sql = "
412
                SELECT
413
                    l.*
414
                FROM
415
                    Logins l
416
                JOIN
417
                    Bestellung b
418
                ON
419
                    b.Login=l.ID
420
                AND
421
                    b.ID=" . ( int )$extra["bestellung"];
422
            if ( __USE_MDB2__ )
423
            {
424
                $res = $GLOBALS["db"]->query( $sql );
425
                if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
426
                    $_SERVER["REMOTE_ADDR"] ) || CRON === true )
427
                {
428
                    if ( PEAR::isError( $res ) )
429
                    {
430
                        die( $res->getUserInfo() );
431
                    }
432
                }
433
                $Userdata = $res->FetchRow();
434
            }
435
            else
436
            {
437
                $res = mysql_query( $sql );
438
                if ( $_SERVER["REMOTE_ADDR"] == "89.245.130.99" || preg_match( "/192\.168\.0/",
439
                    $_SERVER["REMOTE_ADDR"] ) || CRON === true )
440
                {
441
                    if ( !$res )
442
                    {
443
                        die( mysql_error() . "<br>$sql<br>" );
444
                    }
445
                }
446
                $Userdata = mysql_fetch_assoc( $res );
447
            }
448
            $smarty = new Smarty();
449
            $smarty->assign( "heading", $subject );
450
            $smarty->assign( "inhalt", stripslashes( $body ) );
451
            $smarty->assign( "Userdata", $Userdata );
452
            $smarty->assign( "to", $to );
453
            $smarty->assign( "date", time() );
454
 
455
            if ( __USE_MDB2__ )
456
            {
457
                $prot = "mdb2";
458
            }
459
            else
460
            {
461
                $prot = "db";
462
            }
463
            $html = $smarty->fetch( $prot . ":" . $shops_ID . "_1000" );
464
 
465
            $text = strip_tags( $html, "<br><br />" );
466
            $text = str_replace( array( "<br>", "<br />" ), "\n", $text );
467
            $mime->setTXTBody( $text );
468
            $mime->setHTMLBody( $html );
469
 
470
            $body = $html;
471
 
472
        }
473
        else
474
        {
475
            $body = str_replace( "\r", "", $body );
476
            $body = str_replace( "\n\n", "\n", $body );
477
 
478
            $text = $body;
479
            $mime->setTXTBody( $text );
480
            /*$res = mail( $to, $subject, $body, "FROM: " . $headers["From"],
481
            $params );*/
482
            /*$res = mail( "tiefland@weban.de", $subject, $body, "FROM: " . $headers["From"],
483
            $params );*/
484
        }
485
        unset( $hdrs, $m_headers );
486
        $hdrs = array( 'From' => $headers["Return"], 'Return-Path' => $headers["Return"],
487
            'Subject' => $subject, "To" => "$to", "Date" => date( "r" ), );
488
        /*        $hdrs = array( 'From' => $headers["Return"], 'Return-Path' => $headers["Return"],
489
        'Subject' => $subject, "To" => $Userdata["Vorname"] . " " . $Userdata["Name1"] .
490
        "<$to>", "Date" => date( "r" ), );/*/
491
        //do not ever try to call these lines in reverse order
492
        $text = $mime->get();
493
        $m_headers = $mime->headers( $hdrs, true );
494
 
495
        $res = $mail->send( $to, $m_headers, $text );
496
        if ( is_array( $headers ) )
497
        {
498
            if ( array_key_exists( "BCC", $headers ) )
499
            {
500
                $m_headers["Subject"] = $subject . " (Blindkopie)";
501
                $m_headers["To"] = $headers["BCC"];
502
                $mail->send( $headers["BCC"], $m_headers, $text );
503
            }
504
            if ( array_key_exists( "CC", $headers ) )
505
            {
506
                $m_headers["Subject"] = $subject . " (Kopie)";
507
                $m_headers["To"] = $headers["CC"];
508
                $mail->send( $headers["CC"], $m_headers, $text );
509
            }
510
        }
511
        return $res;
512
    }
513
 
514
    function errorHandler( $error )
515
    {
516
        $message = $error->getUserInfo();
517
        if ( !$message )
518
        {
519
            $message = $error->getMessage();
520
        }
521
        if ( !empty( $error->backtrace[1]['file'] ) )
522
        {
523
            $message .= ' (' . $error->backtrace[1]['file'];
524
            if ( !empty( $error->backtrace[1]['line'] ) )
525
            {
526
                $message .= ' in Zeile ' . $error->backtrace[1]['line'];
527
            }
528
            $message .= ')';
529
        }
530
        mail_admin( $message );
531
    }
532
 
533
    function mail_admin( $message )
534
    {
535
        $site = $_SERVER["SERVER_NAME"];
536
        if ( substr_count( $site, '.' ) >= 2 )
537
        {
538
            $site = substr( $site, strpos( $site, '.' ) + 1 );
539
        }
540
        mail( "tiefland@weban.de", "Fehler auf www.$site", $message,
541
            "From: info@$site" );
542
        mail( "niewerth@weban.de", "Fehler auf www.$site", $message,
543
            "From: info@$site" );
544
    }
545
?>