Subversion-Projekte lars-tiefland.openvz_admin

Revision

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

Revision Autor Zeilennr. Zeile
168 lars 1
<?php
165 lars 2
    //$Id: functions.php 168 2011-07-10 19:11:02Z lars $
3
    /**
4
     *     @package    openvz_admin
5
     *     @author        Lars Tiefland <ltiefland@gmail.com>
6
     **/
7
    $dir = dirname( $_SERVER["PHP_SELF"] );
8
    $host = "http://" . $_SERVER["SERVER_NAME"];
9
    $url = $host . $dir;
10
    $pear_logger = &create_pear_logger();
11
    $php_logger = &create_php_logger();
12
    set_error_handler( 'errorHandler_PHP' );
13
    PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );
14
    $u = null;
15
    $a = null;
16
    $username = ( isset( $_POST["username"] ) ) ? $_POST["username"] : "";
17
 
18
    function errorHandler_PHP( $code, $message, $file, $line )
19
    {
20
        global $php_logger;
21
        /* Map the PHP error to a Log priority. */
22
        switch ( $code )
23
        {
24
            case E_WARNING:
25
            case E_USER_WARNING:
26
                $priority = PEAR_LOG_WARNING;
27
                break;
28
            case E_NOTICE:
29
            case E_USER_NOTICE:
30
                $priority = PEAR_LOG_NOTICE;
31
                break;
32
            case E_ERROR:
33
            case E_USER_ERROR:
34
                $priority = PEAR_LOG_ERR;
35
                break;
36
            default:
37
                $priotity = PEAR_LOG_INFO;
38
                break;
39
        }
40
        switch ( $code )
41
        {
42
            case E_WARNING:
43
            case E_USER_WARNING:
44
            case E_NOTICE:
45
            case E_USER_NOTICE:
46
            case E_ERROR:
47
            case E_USER_ERROR:
48
                $php_logger->log( $message . ' in ' . $file . ' in Zeile ' . $line,
49
                    $priority );
50
                break;
51
        }
52
    }
53
 
54
    function errorHandler( $error )
55
    {
56
        global $pear_logger;
57
 
58
        $message = $error->getUserInfo();
59
 
60
        if ( ! empty( $error->backtrace[1]['file'] ) )
61
        {
62
            $message .= ' (' . $error->backtrace[1]['file'];
63
            if ( ! empty( $error->backtrace[1]['line'] ) )
64
            {
65
                $message .= ' in Zeile ' . $error->backtrace[1]['line'];
66
            }
67
            $message .= ')';
68
        }
69
        $res = $pear_logger->log( $message, PEAR_LOG_ERR );
70
    }
71
 
72
    function create_logger()
73
    {
74
        global $db, $u;
75
        $params_log["db"] = $db;
76
        $params_log["u_id"] = $u->u_id;
77
        $logger = &Log::singleton( "lt_sql", "log", "fifa", $params_log );
78
        return $logger;
79
    }
80
 
81
    function create_php_logger()
82
    {
83
        global $url;
84
        $file_params["mode"] = "666";
85
        $file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
86
        $mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";
87
        $mail_params["subject"] = "PHP Fehler auf $url";
88
        $l1 = &Log::factory( "file", "logs/php_errors.log", "fifa_php", $file_params );
89
        $l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_php", $mail_params );
90
        $l3 = &Log::factory( "composite" );
91
        $c1 = $l3->addChild( $l1 );
92
        $c2 = $l3->addChild( $l2 );
93
        return $l3;
94
    }
95
 
96
    function create_pear_logger()
97
    {
98
        global $url;
99
        $file_params["mode"] = "666";
100
        $file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
101
        $mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";
102
        $mail_params["subject"] = "PEAR Fehler auf $url";
103
        $l1 = &Log::factory( "file", "logs/pear_errors.log", "fifa_pear", $file_params );
104
        $l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_pear", $mail_params );
105
        $l3 = &Log::factory( "composite" );
106
        $c1 = $l3->addChild( $l1 );
107
        $c2 = $l3->addChild( $l2 );
108
        return $l3;
109
    }
110
 
111
    function send_email( $art = 0 )
112
    {
113
        global $u, $mail, $password, $common, $url, $u_key;
114
        $to = "$u->u_name <$u->u_email>";
115
        $from_addr = "webmaster@lars-tiefland.de";
116
        $from_name = "Lars Tiefland";
117
        $from = "$from_name <$from_addr>";
118
        $art = intval( $art );
119
        switch ( $art )
120
        {
121
            case 0:
122
                $email_tpl = "email/$u->u_lang/register.tpl";
123
                $subject = $common["reg_subject"] . " - Welcome to $url";
124
                break;
125
            case 1:
126
                $email_tpl = "email/$u->u_lang/changed.tpl";
127
                $subject = $common["changed_subject"];
128
                break;
129
            case 2:
130
                $email_tpl = "email/$u->u_lang/change.tpl";
131
                $subject = $common["change_subject"];
132
            default:
133
                return false;
134
                break;
135
        }
136
        if ( file_exists( $email_tpl ) )
137
        {
138
            $email = file_get_contents( "$email_tpl" );
139
            $url_act = $url . "activate.php";
140
            $email = sprintf( $email, $u->u_name, $url, $u->u_name, $password, $url_act .
141
                "?key=$u_key", $url_act, $u_key );
142
            $headers["From"] = $from;
143
            $headers["To"] = $to;
144
            $headers["Subject"] = $subject;
145
            $ret = $mail->send( $to, $headers, $email );
146
        }
147
        else
148
        {
149
            $ret = false;
150
        }
151
        return $ret;
152
    }
153
 
154
    function login( $username, $password )
155
    {
156
        global $smarty, $username, $meld, $db_meld, $common, $a, $loc, $year, $type,
157
            $config;
158
        $type = $common["$config->type"];
159
        $smarty->assign( "meld", ( $username || $meld ) ? $common["an_error_occured"] :
160
            $meld );
161
        $smarty->assign( "db_meld", ( $username ) ? $common["userinfo_incorrect"] :
162
            $db_meld );
163
        $smarty->assign( "error", ( $username || $meld ) ? true : false );
164
        $smarty->assign( "title", $common["login"] );
165
        $smarty->assign( "user", $username );
166
        $date = $loc->formatDateTime( time() );
167
        $smarty->assign( "date", $date );
168
        $smarty->assign( "year", $year );
169
        $smarty->assign( "L_TYPE", $type );
170
        $smarty->display( "login.tpl" );
171
    }
172
 
173
    function User_Login( $show = true )
174
    {
175
        global $smarty, $db, $a, $config, $u, $common;
176
        $params = array( "dsn" => $db, "table" => "auth_user", "usernamecol" =>
177
            "u_name", "passwordcol" => "u_password", "db_fields" => "*", );
178
 
179
        $a = new Auth( "DB", $params, "login", $show );
180
        $a->setSessionName( $config->cookie_name );
181
        $a->setIdle( $config->session_length, false );
182
        $a->setExpire( 2 * $config->session_length, false );
183
        $a->start();
184
        if ( $a->getAuth() )
185
        {
186
            $u = new User( "", "" );
187
            $u = $u->UserData( $a->getUserName() );
188
            $smarty->assign( "title", $common["login"] );
189
            $smarty->assign( "u_name", $u->u_name );
190
            $smarty->assign( "u_type", $u->u_type );
191
            $disabled = ( $u->u_type == 0 ) ? "disabled=disabled" : "";
192
            $smarty->assign( "disabled", $disabled );
193
            $smarty->assign( "disabled", "" );
194
        }
195
        return $a;
196
    }
197
 
198
    function User_logout()
199
    {
200
        global $a;
201
        $a->logout();
202
    }
203
    // {{{ validate_email()
204
 
205
    /**
206
     * Check to see if email address is valid or
207
     * already present in the DB
208
     */
209
    function validate_email( $email )
210
    {
211
        global $smarty;
212
        $meld = "";
213
        $error = false;
214
        if ( $email != '' )
215
        {
216
            if ( preg_match( '/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$/is',
217
                $email ) && $email != "your@address.com" )
218
            {
219
                $error = false;
220
                $meld = "";
221
                $db_meld = "";
222
            }
223
            else
224
            {
225
                $error = true;
226
                $meld = "Email ungültig!";
227
                $db_meld = "";
228
                $smarty->assign( "email", $email );
229
            }
230
        }
231
        else
232
        {
233
            $error = true;
234
            $meld = "Email ungültig!";
235
            $db_meld = "";
236
            $smarty->assign( "email", $email );
237
        }
238
        if ( $error )
239
        {
240
            $smarty->assign( "title", "Ungültige E-Mail Adresse" );
241
            $smarty->assign( "error", $error );
242
            $smarty->assign( "meld", $meld );
243
            $smarty->assign( "db_meld", $db_meld );
244
        }
245
        else
246
        {
247
            $smarty->assign( "meld", "" );
248
            $smarty->assign( "db_meld", "" );
249
        }
250
        return ! $error;
251
    }
252
    // }}}
253
    // {{{ log_split()
254
    function log_split( $s )
255
    {
256
        global $k, $time0, $count_t;
257
        $r = array();
258
        $p = 0;
259
        $l = strlen( $s );
260
        while ( $p < $l )
261
        {
262
            check_Time();
263
            while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
264
            {
265
                $p++;
266
            }
267
            if ( $s[$p] == '"' )
268
            {
269
                $p++;
270
                $q = $p;
271
                while ( ( $p < $l ) && ( $s[$p] != '"' ) )
272
                {
273
                    if ( $s[$p] == '\\' )
274
                    {
275
                        $p += 2;
276
                        continue;
277
                    }
278
                    $p++;
279
                }
280
                $r[] = stripslashes( substr( $s, $q, $p - $q ) );
281
                $p++;
282
                while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
283
                {
284
                    $p++;
285
                }
286
                $p++;
287
            }
288
            else
289
            {
290
                if ( $s[$p] == "'" )
291
                {
292
                    $p++;
293
                    $q = $p;
294
                    while ( ( $p < $l ) && ( $s[$p] != "'" ) )
295
                    {
296
                        if ( $s[$p] == '\\' )
297
                        {
298
                            $p += 2;
299
                            continue;
300
                        }
301
                        $p++;
302
                    }
303
                    $r[] = stripslashes( substr( $s, $q, $p - $q ) );
304
                    $p++;
305
                    while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
306
                    {
307
                        $p++;
308
                    }
309
                    $p++;
310
                }
311
                else
312
                {
313
                    $q = $p;
314
                    while ( ( $p < $l ) && ( strpos( ";", $s[$p] ) === false ) )
315
                    {
316
                        $p++;
317
                    }
318
                    $r[] = stripslashes( trim( substr( $s, $q, $p - $q ) ) );
319
                    while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
320
                    {
321
                        $p++;
322
                    }
323
                    $p++;
324
                }
325
            }
326
        }
327
        $r2 = array( array() );
328
        $i = 0;
329
        $j = 0;
330
        $ind = 0;
331
        $anz = count( $r );
332
        while ( $i < $anz )
333
        {
334
            $wert = $r[$i];
335
            $l = strlen( $wert ) - 1;
336
            $char = substr( $wert, $l, 1 );
337
            if ( $char == '"' || $char == '"' )
338
            {
339
                $wert = substr( $wert, 0, $l );
340
            }
341
            $r2[$j][$ind] = $wert;
342
            if ( $ind == 2 )
343
            {
344
                $ind = 0;
345
                $j++;
346
            }
347
            else
348
            {
349
                $ind++;
350
            }
351
            $i++;
352
        }
353
        return $r2;
354
    }
355
    // }}}
356
    // {{{ check_Time()
357
    function check_Time()
358
    {
359
        global $time0;
360
        $count_t = 0;
361
        $time1 = time();
362
        if ( $time1 - $time0 >= 25 )
363
        {
364
            $time0 = $time1;
365
            $count_t++;
366
            set_time_limit( 30 );
367
        }
368
    }
369
    // }}}
370
    // {{{ PMA_readFile()
371
 
372
    //This function reads the file uploaded according to compression method
373
    function PMA_readFile( $fname, $comp )
374
    {
375
        if ( isset( $fname ) )
376
        {
377
            check_Time();
378
            switch ( $comp )
379
            {
380
                case 'self':
381
                    $file = @fopen( "$fname", 'rb' );
382
                    if ( ! $file )
383
                    {
384
                        return false;
385
                    }
386
                    $test = fread( $file, 3 );
387
                    fclose( $file );
388
                    if ( $test[0] == chr( 31 ) && $test[1] == chr( 139 ) )
389
                    {
390
                        return PMA_readFile( $fname, "gzip" );
391
                    }
392
                    else
393
                    {
394
                        if ( $test == 'BZh' )
395
                        {
396
                            return PMA_readFile( $fname, 'bzip2' );
397
                        }
398
                        else
399
                        {
400
                            return PMA_readFile( $fname, 'plain' );
401
                        }
402
                    }
403
                    break;
404
                case 'plain':
405
                    $file = @fopen( $fname, 'rb' );
406
                    if ( ! $file )
407
                    {
408
                        return false;
409
                    }
410
                    $content = fread( $file, filesize( $fname ) );
411
                    fclose( $file );
412
                    break;
413
                case 'gzip':
414
                    if ( @function_exists( 'gzopen' ) )
415
                    {
416
                        $file = @gzopen( $path, 'rb' );
417
                        if ( ! $file )
418
                        {
419
                            return false;
420
                        }
421
                        $content = '';
422
                        while ( ! gzeof( $file ) )
423
                        {
424
                            $content .= gzgetc( $file );
425
                        }
426
                        gzclose( $file );
427
                    }
428
                    else
429
                    {
430
                        return false;
431
                    }
432
                    break;
433
                case 'bzip2':
434
                    if ( @function_exists( 'bzdecompress' ) )
435
                    {
436
                        $file = @fopen( $fname, 'rb' );
437
                        if ( ! $file )
438
                        {
439
                            return false;
440
                        }
441
                        $content = fread( $file, filesize( $fname ) );
442
                        fclose( $file );
443
                        $content = bzdecompress( $content );
444
                    }
445
                    else
446
                    {
447
                        return false;
448
                    }
449
                    break;
450
                default:
451
                    return false;
452
            }
453
            check_Time();
454
            return $content;
455
        }
456
        /*        else
457
        {
458
        require("import.php");
459
        }*/
460
    }
461
 
462
    function p_log( $message )
463
    {
464
        global $u_id, $u_name, $pending, $email, $db;
465
        $t_stamp = time();
466
        $sql = "INSERT INTO log (user_id, datum, message) VALUES ($u_id, $t_stamp, '$message')";
467
        $r = $db->query( $sql );
468
        $res = ( ! PEAR::isError( $r ) );
469
        return $res;
470
    }
471
 
472
    function get_log_entries()
473
    {
474
        global $db;
475
        $sql = "SELECT * FROM log";
476
        $res = $db->query( $sql );
477
        if ( ! PEAR::isError( $res ) )
478
        {
479
            $anz = $res->num_Rows();
480
        }
481
        else
482
        {
483
            if ( file_exists( "../log/log.txt" ) )
484
            {
485
                $content = PMA_readFile( "../log/log.txt", "plain" );
486
                $r = log_split( $content );
487
                $anz = count( $r[0] );
488
            }
489
        }
490
        return $anz;
491
    }
492
    function read_log( $start )
493
    {
494
        $content = "";
495
        global $max_anz, $db;
496
        $sql = "SELECT * FROM log LIMIT $start, $max_anz";
497
        $res = $db->query( $sql );
498
        if ( $res->num_Rows() )
499
        {
500
            while ( $row_d = $res->fetch_Row() )
501
            {
502
                $content .= "'" . $row_d["user_id"] . "';'" . $row_d["datum"] .
503
                    "';'" . $row_d["message"] . "'\r\n";
504
            }
505
            $row = log_split( $content );
506
        }
507
        else
508
        {
509
            if ( file_exists( "../log/log.txt" ) )
510
            {
511
                $content = PMA_readFile( "../log/log.txt", "plain" );
512
                $row = log_split( $content );
513
                $row = array_splice( $row, $start, $max_anz );
514
            }
515
            else
516
            {
517
                $row = "";
518
            }
519
        }
520
        return $row;
521
    }
522
 
523
    //
524
    // Pagination routine, generates
525
    // page number sequence
526
    // taken from phpBB
527
 
528
    function generate_pagination( $base_url, $num_items, $per_page, $start_item,
529
        $add_prevnext_text = true )
530
    {
531
        if ( ! $num_items )
532
        {
533
            return "";
534
        }
535
 
536
        $total_pages = ceil( $num_items / $per_page );
537
 
538
        if ( $total_pages == 1 )
539
        {
540
            return '';
541
        }
542
 
543
        $on_page = floor( $start_item / $per_page ) + 1;
544
 
545
        $page_string = '';
546
        if ( $total_pages > 25 )
547
        {
548
            $init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;
549
 
550
            for ( $i = 1; $i < $init_page_max + 1; $i++ )
551
            {
552
                $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
553
                    '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
554
                    '">' . $i . '</a>';
555
                if ( $i < $init_page_max )
556
                {
557
                    $page_string .= ", ";
558
                }
559
            }
560
 
561
            if ( $total_pages > 3 )
562
            {
563
                if ( $on_page > 1 && $on_page < $total_pages )
564
                {
565
                    $page_string .= ( $on_page > 5 ) ? ' ... ' : ', ';
566
 
567
                    $init_page_min = ( $on_page > 4 ) ? $on_page : 5;
568
                    $init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page :
569
                        $total_pages - 4;
570
 
571
                    for ( $i = $init_page_min - 1; $i < $init_page_max + 2; $i++ )
572
                    {
573
                        $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
574
                            '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) *
575
                            $per_page ) . '">' . $i . '</a>';
576
                        if ( $i < $init_page_max + 1 )
577
                        {
578
                            $page_string .= ', ';
579
                        }
580
                    }
581
 
582
                    $page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' :
583
                        ', ';
584
                }
585
                else
586
                {
587
                    $page_string .= ' ... ';
588
                }
589
 
590
                for ( $i = $total_pages - 2; $i < $total_pages + 1; $i++ )
591
                {
592
                    $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
593
                        '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
594
                        '">' . $i . '</a>';
595
                    if ( $i < $total_pages )
596
                    {
597
                        $page_string .= ", ";
598
                    }
599
                }
600
            }
601
        }
602
        else
603
        {
604
            for ( $i = 1; $i < $total_pages + 1; $i++ )
605
            {
606
                $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
607
                    '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
608
                    '">' . $i . '</a>';
609
                if ( $i < $total_pages )
610
                {
611
                    $page_string .= ', ';
612
                }
613
            }
614
        }
615
 
616
        if ( $add_prevnext_text )
617
        {
618
            if ( $on_page > 1 )
619
            {
620
                $page_string = ' <a href="' . $base_url . "?start=" . ( ( $on_page -
621
                    2 ) * $per_page ) . '">Zurück</a>&nbsp;&nbsp;' . $page_string;
622
            }
623
            else
624
            {
625
                $page_string = 'Zurück&nbsp;&nbsp;' . $page_string;
626
            }
627
            if ( $on_page < $total_pages )
628
            {
629
                $page_string .= '&nbsp;&nbsp;<a href="' . $base_url . "?start=" . ( $on_page *
630
                    $per_page ) . '">Weiter</a>';
631
            }
632
            else
633
            {
634
                $page_string .= '&nbsp;&nbsp;Weiter';
635
            }
636
 
637
        }
638
 
639
        $page_string = 'Gehe zu Seite ' . $page_string;
640
 
641
        return $page_string;
642
    }
643
 
644
    function checkDir( $dir )
645
    {
646
        if ( empty( $dir ) )
647
        {
648
            $dir = "upload";
649
        }
650
        if ( file_exists( "$dir" ) )
651
        {
652
            $ftype = filetype( "$dir" );
653
            if ( $ftype == "dir" || $ftype == "link" )
654
            {
655
                if ( $ftype == "link" )
656
                {
657
                    $fname_l = readlink( "$dir" );
658
                    $ftype_l = filetype( $fname_l );
659
                    if ( $ftype_l == "dir" )
660
                    {
661
                        $ret = is_writeable( $fname_l );
662
                    }
663
                    else
664
                    {
665
                        if ( unlink( "$dir" ) )
666
                        {
667
                            $ret = mkdir( "$dir" );
668
                        }
669
                        else
670
                        {
671
                            $ret = false;
672
                        }
673
                    }
674
                }
675
                else
676
                {
677
                    $ret = true;
678
                }
679
            }
680
            else
681
            {
682
                if ( unlink( "$dir" ) )
683
                {
684
                    $ret = mkdir( "$dir" );
685
                }
686
                else
687
                {
688
                    $ret = false;
689
                }
690
            }
691
        }
692
        else
693
        {
694
            $ret = mkdir( "$dir" );
695
        }
696
        return $ret;
697
    }
698
 
699
    function upload_pic( $pic, &$meld, &$dst )
700
    {
701
        $fname = "../images/$pic";
702
        $tmp = $_FILES['pic']['tmp_name'];
703
        //        echo $_FILES["pic"]["type"];
704
        $img_info = getimagesize( $tmp );
705
        $typ = $img_info[2];
706
        switch ( $typ )
707
        {
708
            case 1: //GIF
709
            case 2: //JPEG
710
            case 3: //PNG
711
                if ( checkDir( "../images" ) )
712
                {
713
                    if ( ! move_uploaded_file( $tmp, $fname ) )
714
                    {
715
                        $meld = "Konnte Datei nicht verschieben!";
716
                        unlink( $tmp );
717
                        $ret = false;
718
                    }
719
                    else
720
                    {
721
                        if ( ! checkDir( "../images/thumbs" ) )
722
                        {
723
                            $meld = "Konnte Thumbnail nicht erstellen!";
724
                            unlink( $fname );
725
                            $ret = false;
726
                        }
727
                        else
728
                        {
729
                            if ( function_exists( "gd_info" ) )
730
                            {
731
                                //GD Bibliothek steht zur Verfügung
732
                                $gd_info = gd_info();
733
                                $width = 60;
734
                                $height = round( $img_info[1] / ( $img_info[0] /
735
                                    $width ), 0 );
736
                                $im_d = imagecreate( $width, $height );
737
                                switch ( $typ )
738
                                {
739
                                    case 1:
740
                                        $im_s = imagecreatefromgif( $fname );
741
                                        break;
742
                                    case 2:
743
                                        $im_s = imagecreatefromjpeg( $fname );
744
                                        break;
745
                                    case 3:
746
                                        $im_s = imagecreatefrompng( $fname );
747
                                        break;
748
                                }
749
                                imagepalettecopy( $im_d, $im_s );
750
                                imagecopyresized( $im_d, $im_s, 0, 0, 0, 0, $width,
751
                                    $height, $img_info[0], $img_info[1] );
752
                                $dst = $pic;
753
                                if ( $gd_info["PNG Support"] )
754
                                {
755
                                    $dst = substr( $dst, 0, strlen( $dst ) - 3 );
756
                                    $dst .= "png";
757
                                    if ( $typ != 3 )
758
                                    {
759
                                        imagePNG( $im_s, "../images/$dst" );
760
                                    }
761
                                    $ret = imagePNG( $im_d, "../images/thumbs/$dst" );
762
                                }
763
                                else
764
                                {
765
                                    if ( $gd_info( "JPEG Support" ) )
766
                                    {
767
                                        $ret = imageJPEG( $im_d,
768
                                            "../images/thumbs/$dst" );
769
                                    }
770
                                    else
771
                                    {
772
                                        $ret = false;
773
                                    }
774
                                }
775
                                imagedestroy( $im_s );
776
                                imagedestroy( $im_d );
777
                                if ( ! $ret )
778
                                {
779
                                    $meld = "Konnte Thumbnail nicht erstellen!";
780
                                }
781
                            }
782
                            else
783
                            {
784
                                //GD-Bibliothek steht NICHT zur Verfügung!
785
                                $ret = copy( $fname, $fname2 );
786
                                $dst = $fname2;
787
                                if ( ! $ret )
788
                                {
789
                                    $meld = "Konnte Thumbnail nicht erstellen!";
790
                                }
791
                            }
792
                        }
793
                    }
794
                }
795
                else
796
                {
797
                    $meld = "Konnte Datei nicht verschieben!";
798
                    $ret = false;
799
                }
800
                break;
801
            default:
802
                $meld = "Das ist kein gültiges Bild!";
803
                $ret = false;
804
                break;
805
        }
806
        return $ret;
807
    }
808
    function generate_pagination2( $base_url, $num_items, $per_page, $start_item,
809
        $add_prevnext_text = true )
810
    {
811
        global $mode, $common;
812
        if ( ! $num_items )
813
        {
814
            return "";
815
        }
816
 
817
        $total_pages = ceil( $num_items / $per_page );
818
 
819
        if ( $total_pages == 1 )
820
        {
821
            return '<table align="center" class="navig"><tr><th>' . $common["page"] .
822
                " 1 " . $common["of"] . ' 1</th></tr></table><br><br>';
823
        }
824
 
825
        $on_page = floor( $start_item / $per_page ) + 1;
826
 
827
        $page_string =
828
            '<table align="center" class="navig"><tr><th colspan="5">' . $common["page"] .
829
            ' ' . $on_page . ' ' . $common["of"] . ' ' . $total_pages .
830
            '</th></tr><tr>';
831
 
832
        if ( $add_prevnext_text )
833
        {
834
            if ( $on_page > 1 )
835
            {
836
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" title=\"${common["first_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
837
                $prev_v = ( $on_page - 2 ) * $per_page;
838
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" title=\"${common["previous_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$prev_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
839
            }
840
            else
841
            {
842
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" disabled class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
843
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"></form></td>";
844
            }
845
        }
846
        if ( $total_pages > 1 )
847
        {
848
            $page_opts = "";
849
            for ( $i = 0; $i < $total_pages; $i++ )
850
            {
851
                $selected = "";
852
                $j = $i + 1;
853
                if ( $j == $on_page )
854
                {
855
                    $selected = "selected=\"selected\"";
856
                }
857
                $start = ( $i * $per_page );
858
                $page_opts .= "<option value=$start $selected>$j</option>";
859
            }
860
            $page_string .= "<td width=\"100\"><form name=\"nav\" action=$base_url method=\"post\"><select name=\"start\">$page_opts</select>&nbsp;&nbsp;<input type=\"submit\" value=\"${common["go"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
861
        }
862
 
863
        if ( $add_prevnext_text )
864
        {
865
            if ( $on_page < $total_pages )
866
            {
867
                $next_v = ( $on_page * $per_page );
868
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" title=\"${common["next_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$next_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
869
                $max_v = ( $total_pages - 1 ) * $per_page;
870
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" title=\"${common["last_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$max_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
871
            }
872
            else
873
            {
874
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
875
                $page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" disabled class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
876
            }
877
 
878
        }
879
        $page_string .= "</tr></table><br><br>";
880
 
881
        return $page_string;
882
    }
883
 
884
    function exec_cmd( $type, $id )
885
    {
886
        unset( $out );
887
        if ( $id != 0 )
888
        {
889
            $cmd = "ssh root@mainframe vzctl $type $id";
890
            exec( $cmd, $out, $ret );
891
            if ( ! $ret )
892
            {
893
                $out_v["status"] = implode( "<br>", $out );
894
            }
895
            else
896
            {
897
                $out_v["status"] = "unknown";
898
            }
899
            $out_v["code"] = $ret;
900
        }
901
        else
902
        {
903
            $out_v["status"] = "Hardware node is running";
904
            $out_v["code"] = 0;
905
        }
906
        if ( eregi( "running", $out_v["status"] ) )
907
        {
908
            $out_v["started"] = true;
909
        }
910
        else
911
        {
912
            $out_v["started"] = false;
913
        }
914
        if ( ! $out_v["code"] && $out_v["started"] )
915
        {
916
            $class = "success_upd";
917
        }
918
        else
919
        {
920
            $class = "error_upd";
921
        }
922
        $out_v["status"] = "<div class=\"$class\">" . $out_v["status"] .
923
            "</div>";
924
        return $out_v;
925
    }
926
?>