Subversion-Projekte lars-tiefland.content-management

Revision

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

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