Subversion-Projekte lars-tiefland.openvz_admin

Revision

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

<?php
    //$Id: functions.php 168 2011-07-10 19:11:02Z lars $
    /**
     *     @package    openvz_admin
     *     @author        Lars Tiefland <ltiefland@gmail.com> 
     **/
    $dir = dirname( $_SERVER["PHP_SELF"] );
    $host = "http://" . $_SERVER["SERVER_NAME"];
    $url = $host . $dir;
    $pear_logger = &create_pear_logger();
    $php_logger = &create_php_logger();
    set_error_handler( 'errorHandler_PHP' );
    PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );
    $u = null;
    $a = null;
    $username = ( isset( $_POST["username"] ) ) ? $_POST["username"] : "";

    function errorHandler_PHP( $code, $message, $file, $line )
    {
        global $php_logger;
        /* Map the PHP error to a Log priority. */
        switch ( $code )
        {
            case E_WARNING:
            case E_USER_WARNING:
                $priority = PEAR_LOG_WARNING;
                break;
            case E_NOTICE:
            case E_USER_NOTICE:
                $priority = PEAR_LOG_NOTICE;
                break;
            case E_ERROR:
            case E_USER_ERROR:
                $priority = PEAR_LOG_ERR;
                break;
            default:
                $priotity = PEAR_LOG_INFO;
                break;
        }
        switch ( $code )
        {
            case E_WARNING:
            case E_USER_WARNING:
            case E_NOTICE:
            case E_USER_NOTICE:
            case E_ERROR:
            case E_USER_ERROR:
                $php_logger->log( $message . ' in ' . $file . ' in Zeile ' . $line,
                    $priority );
                break;
        }
    }

    function errorHandler( $error )
    {
        global $pear_logger;

        $message = $error->getUserInfo();

        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 .= ')';
        }
        $res = $pear_logger->log( $message, PEAR_LOG_ERR );
    }

    function create_logger()
    {
        global $db, $u;
        $params_log["db"] = $db;
        $params_log["u_id"] = $u->u_id;
        $logger = &Log::singleton( "lt_sql", "log", "fifa", $params_log );
        return $logger;
    }

    function create_php_logger()
    {
        global $url;
        $file_params["mode"] = "666";
        $file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
        $mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";
        $mail_params["subject"] = "PHP Fehler auf $url";
        $l1 = &Log::factory( "file", "logs/php_errors.log", "fifa_php", $file_params );
        $l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_php", $mail_params );
        $l3 = &Log::factory( "composite" );
        $c1 = $l3->addChild( $l1 );
        $c2 = $l3->addChild( $l2 );
        return $l3;
    }

    function create_pear_logger()
    {
        global $url;
        $file_params["mode"] = "666";
        $file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
        $mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";
        $mail_params["subject"] = "PEAR Fehler auf $url";
        $l1 = &Log::factory( "file", "logs/pear_errors.log", "fifa_pear", $file_params );
        $l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_pear", $mail_params );
        $l3 = &Log::factory( "composite" );
        $c1 = $l3->addChild( $l1 );
        $c2 = $l3->addChild( $l2 );
        return $l3;
    }

    function send_email( $art = 0 )
    {
        global $u, $mail, $password, $common, $url, $u_key;
        $to = "$u->u_name <$u->u_email>";
        $from_addr = "webmaster@lars-tiefland.de";
        $from_name = "Lars Tiefland";
        $from = "$from_name <$from_addr>";
        $art = intval( $art );
        switch ( $art )
        {
            case 0:
                $email_tpl = "email/$u->u_lang/register.tpl";
                $subject = $common["reg_subject"] . " - Welcome to $url";
                break;
            case 1:
                $email_tpl = "email/$u->u_lang/changed.tpl";
                $subject = $common["changed_subject"];
                break;
            case 2:
                $email_tpl = "email/$u->u_lang/change.tpl";
                $subject = $common["change_subject"];
            default:
                return false;
                break;
        }
        if ( file_exists( $email_tpl ) )
        {
            $email = file_get_contents( "$email_tpl" );
            $url_act = $url . "activate.php";
            $email = sprintf( $email, $u->u_name, $url, $u->u_name, $password, $url_act .
                "?key=$u_key", $url_act, $u_key );
            $headers["From"] = $from;
            $headers["To"] = $to;
            $headers["Subject"] = $subject;
            $ret = $mail->send( $to, $headers, $email );
        }
        else
        {
            $ret = false;
        }
        return $ret;
    }

    function login( $username, $password )
    {
        global $smarty, $username, $meld, $db_meld, $common, $a, $loc, $year, $type,
            $config;
        $type = $common["$config->type"];
        $smarty->assign( "meld", ( $username || $meld ) ? $common["an_error_occured"] :
            $meld );
        $smarty->assign( "db_meld", ( $username ) ? $common["userinfo_incorrect"] :
            $db_meld );
        $smarty->assign( "error", ( $username || $meld ) ? true : false );
        $smarty->assign( "title", $common["login"] );
        $smarty->assign( "user", $username );
        $date = $loc->formatDateTime( time() );
        $smarty->assign( "date", $date );
        $smarty->assign( "year", $year );
        $smarty->assign( "L_TYPE", $type );
        $smarty->display( "login.tpl" );
    }

    function User_Login( $show = true )
    {
        global $smarty, $db, $a, $config, $u, $common;
        $params = array( "dsn" => $db, "table" => "auth_user", "usernamecol" =>
            "u_name", "passwordcol" => "u_password", "db_fields" => "*", );

        $a = new Auth( "DB", $params, "login", $show );
        $a->setSessionName( $config->cookie_name );
        $a->setIdle( $config->session_length, false );
        $a->setExpire( 2 * $config->session_length, false );
        $a->start();
        if ( $a->getAuth() )
        {
            $u = new User( "", "" );
            $u = $u->UserData( $a->getUserName() );
            $smarty->assign( "title", $common["login"] );
            $smarty->assign( "u_name", $u->u_name );
            $smarty->assign( "u_type", $u->u_type );
            $disabled = ( $u->u_type == 0 ) ? "disabled=disabled" : "";
            $smarty->assign( "disabled", $disabled );
            $smarty->assign( "disabled", "" );
        }
        return $a;
    }

    function User_logout()
    {
        global $a;
        $a->logout();
    }
    // {{{ validate_email()

    /**
     * Check to see if email address is valid or
     * already present in the DB
     */
    function validate_email( $email )
    {
        global $smarty;
        $meld = "";
        $error = false;
        if ( $email != '' )
        {
            if ( preg_match( '/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$/is',
                $email ) && $email != "your@address.com" )
            {
                $error = false;
                $meld = "";
                $db_meld = "";
            }
            else
            {
                $error = true;
                $meld = "Email ungültig!";
                $db_meld = "";
                $smarty->assign( "email", $email );
            }
        }
        else
        {
            $error = true;
            $meld = "Email ungültig!";
            $db_meld = "";
            $smarty->assign( "email", $email );
        }
        if ( $error )
        {
            $smarty->assign( "title", "Ungültige E-Mail Adresse" );
            $smarty->assign( "error", $error );
            $smarty->assign( "meld", $meld );
            $smarty->assign( "db_meld", $db_meld );
        }
        else
        {
            $smarty->assign( "meld", "" );
            $smarty->assign( "db_meld", "" );
        }
        return ! $error;
    }
    // }}}
    // {{{ log_split()
    function log_split( $s )
    {
        global $k, $time0, $count_t;
        $r = array();
        $p = 0;
        $l = strlen( $s );
        while ( $p < $l )
        {
            check_Time();
            while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
            {
                $p++;
            }
            if ( $s[$p] == '"' )
            {
                $p++;
                $q = $p;
                while ( ( $p < $l ) && ( $s[$p] != '"' ) )
                {
                    if ( $s[$p] == '\\' )
                    {
                        $p += 2;
                        continue;
                    }
                    $p++;
                }
                $r[] = stripslashes( substr( $s, $q, $p - $q ) );
                $p++;
                while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
                {
                    $p++;
                }
                $p++;
            }
            else
            {
                if ( $s[$p] == "'" )
                {
                    $p++;
                    $q = $p;
                    while ( ( $p < $l ) && ( $s[$p] != "'" ) )
                    {
                        if ( $s[$p] == '\\' )
                        {
                            $p += 2;
                            continue;
                        }
                        $p++;
                    }
                    $r[] = stripslashes( substr( $s, $q, $p - $q ) );
                    $p++;
                    while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
                    {
                        $p++;
                    }
                    $p++;
                }
                else
                {
                    $q = $p;
                    while ( ( $p < $l ) && ( strpos( ";", $s[$p] ) === false ) )
                    {
                        $p++;
                    }
                    $r[] = stripslashes( trim( substr( $s, $q, $p - $q ) ) );
                    while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) )
                    {
                        $p++;
                    }
                    $p++;
                }
            }
        }
        $r2 = array( array() );
        $i = 0;
        $j = 0;
        $ind = 0;
        $anz = count( $r );
        while ( $i < $anz )
        {
            $wert = $r[$i];
            $l = strlen( $wert ) - 1;
            $char = substr( $wert, $l, 1 );
            if ( $char == '"' || $char == '"' )
            {
                $wert = substr( $wert, 0, $l );
            }
            $r2[$j][$ind] = $wert;
            if ( $ind == 2 )
            {
                $ind = 0;
                $j++;
            }
            else
            {
                $ind++;
            }
            $i++;
        }
        return $r2;
    }
    // }}}
    // {{{ check_Time()
    function check_Time()
    {
        global $time0;
        $count_t = 0;
        $time1 = time();
        if ( $time1 - $time0 >= 25 )
        {
            $time0 = $time1;
            $count_t++;
            set_time_limit( 30 );
        }
    }
    // }}}
    // {{{ PMA_readFile()

    //This function reads the file uploaded according to compression method
    function PMA_readFile( $fname, $comp )
    {
        if ( isset( $fname ) )
        {
            check_Time();
            switch ( $comp )
            {
                case 'self':
                    $file = @fopen( "$fname", 'rb' );
                    if ( ! $file )
                    {
                        return false;
                    }
                    $test = fread( $file, 3 );
                    fclose( $file );
                    if ( $test[0] == chr( 31 ) && $test[1] == chr( 139 ) )
                    {
                        return PMA_readFile( $fname, "gzip" );
                    }
                    else
                    {
                        if ( $test == 'BZh' )
                        {
                            return PMA_readFile( $fname, 'bzip2' );
                        }
                        else
                        {
                            return PMA_readFile( $fname, 'plain' );
                        }
                    }
                    break;
                case 'plain':
                    $file = @fopen( $fname, 'rb' );
                    if ( ! $file )
                    {
                        return false;
                    }
                    $content = fread( $file, filesize( $fname ) );
                    fclose( $file );
                    break;
                case 'gzip':
                    if ( @function_exists( 'gzopen' ) )
                    {
                        $file = @gzopen( $path, 'rb' );
                        if ( ! $file )
                        {
                            return false;
                        }
                        $content = '';
                        while ( ! gzeof( $file ) )
                        {
                            $content .= gzgetc( $file );
                        }
                        gzclose( $file );
                    }
                    else
                    {
                        return false;
                    }
                    break;
                case 'bzip2':
                    if ( @function_exists( 'bzdecompress' ) )
                    {
                        $file = @fopen( $fname, 'rb' );
                        if ( ! $file )
                        {
                            return false;
                        }
                        $content = fread( $file, filesize( $fname ) );
                        fclose( $file );
                        $content = bzdecompress( $content );
                    }
                    else
                    {
                        return false;
                    }
                    break;
                default:
                    return false;
            }
            check_Time();
            return $content;
        }
        /*        else
        {
        require("import.php");
        }*/
    }

    function p_log( $message )
    {
        global $u_id, $u_name, $pending, $email, $db;
        $t_stamp = time();
        $sql = "INSERT INTO log (user_id, datum, message) VALUES ($u_id, $t_stamp, '$message')";
        $r = $db->query( $sql );
        $res = ( ! PEAR::isError( $r ) );
        return $res;
    }

    function get_log_entries()
    {
        global $db;
        $sql = "SELECT * FROM log";
        $res = $db->query( $sql );
        if ( ! PEAR::isError( $res ) )
        {
            $anz = $res->num_Rows();
        }
        else
        {
            if ( file_exists( "../log/log.txt" ) )
            {
                $content = PMA_readFile( "../log/log.txt", "plain" );
                $r = log_split( $content );
                $anz = count( $r[0] );
            }
        }
        return $anz;
    }
    function read_log( $start )
    {
        $content = "";
        global $max_anz, $db;
        $sql = "SELECT * FROM log LIMIT $start, $max_anz";
        $res = $db->query( $sql );
        if ( $res->num_Rows() )
        {
            while ( $row_d = $res->fetch_Row() )
            {
                $content .= "'" . $row_d["user_id"] . "';'" . $row_d["datum"] .
                    "';'" . $row_d["message"] . "'\r\n";
            }
            $row = log_split( $content );
        }
        else
        {
            if ( file_exists( "../log/log.txt" ) )
            {
                $content = PMA_readFile( "../log/log.txt", "plain" );
                $row = log_split( $content );
                $row = array_splice( $row, $start, $max_anz );
            }
            else
            {
                $row = "";
            }
        }
        return $row;
    }

    //
    // Pagination routine, generates
    // page number sequence
    // taken from phpBB

    function generate_pagination( $base_url, $num_items, $per_page, $start_item,
        $add_prevnext_text = true )
    {
        if ( ! $num_items )
        {
            return "";
        }

        $total_pages = ceil( $num_items / $per_page );

        if ( $total_pages == 1 )
        {
            return '';
        }

        $on_page = floor( $start_item / $per_page ) + 1;

        $page_string = '';
        if ( $total_pages > 25 )
        {
            $init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;

            for ( $i = 1; $i < $init_page_max + 1; $i++ )
            {
                $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
                    '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
                    '">' . $i . '</a>';
                if ( $i < $init_page_max )
                {
                    $page_string .= ", ";
                }
            }

            if ( $total_pages > 3 )
            {
                if ( $on_page > 1 && $on_page < $total_pages )
                {
                    $page_string .= ( $on_page > 5 ) ? ' ... ' : ', ';

                    $init_page_min = ( $on_page > 4 ) ? $on_page : 5;
                    $init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page :
                        $total_pages - 4;

                    for ( $i = $init_page_min - 1; $i < $init_page_max + 2; $i++ )
                    {
                        $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
                            '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) *
                            $per_page ) . '">' . $i . '</a>';
                        if ( $i < $init_page_max + 1 )
                        {
                            $page_string .= ', ';
                        }
                    }

                    $page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' :
                        ', ';
                }
                else
                {
                    $page_string .= ' ... ';
                }

                for ( $i = $total_pages - 2; $i < $total_pages + 1; $i++ )
                {
                    $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
                        '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
                        '">' . $i . '</a>';
                    if ( $i < $total_pages )
                    {
                        $page_string .= ", ";
                    }
                }
            }
        }
        else
        {
            for ( $i = 1; $i < $total_pages + 1; $i++ )
            {
                $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :
                    '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .
                    '">' . $i . '</a>';
                if ( $i < $total_pages )
                {
                    $page_string .= ', ';
                }
            }
        }

        if ( $add_prevnext_text )
        {
            if ( $on_page > 1 )
            {
                $page_string = ' <a href="' . $base_url . "?start=" . ( ( $on_page -
                    2 ) * $per_page ) . '">Zurück</a>&nbsp;&nbsp;' . $page_string;
            }
            else
            {
                $page_string = 'Zurück&nbsp;&nbsp;' . $page_string;
            }
            if ( $on_page < $total_pages )
            {
                $page_string .= '&nbsp;&nbsp;<a href="' . $base_url . "?start=" . ( $on_page *
                    $per_page ) . '">Weiter</a>';
            }
            else
            {
                $page_string .= '&nbsp;&nbsp;Weiter';
            }

        }

        $page_string = 'Gehe zu Seite ' . $page_string;

        return $page_string;
    }

    function checkDir( $dir )
    {
        if ( empty( $dir ) )
        {
            $dir = "upload";
        }
        if ( file_exists( "$dir" ) )
        {
            $ftype = filetype( "$dir" );
            if ( $ftype == "dir" || $ftype == "link" )
            {
                if ( $ftype == "link" )
                {
                    $fname_l = readlink( "$dir" );
                    $ftype_l = filetype( $fname_l );
                    if ( $ftype_l == "dir" )
                    {
                        $ret = is_writeable( $fname_l );
                    }
                    else
                    {
                        if ( unlink( "$dir" ) )
                        {
                            $ret = mkdir( "$dir" );
                        }
                        else
                        {
                            $ret = false;
                        }
                    }
                }
                else
                {
                    $ret = true;
                }
            }
            else
            {
                if ( unlink( "$dir" ) )
                {
                    $ret = mkdir( "$dir" );
                }
                else
                {
                    $ret = false;
                }
            }
        }
        else
        {
            $ret = mkdir( "$dir" );
        }
        return $ret;
    }

    function upload_pic( $pic, &$meld, &$dst )
    {
        $fname = "../images/$pic";
        $tmp = $_FILES['pic']['tmp_name'];
        //        echo $_FILES["pic"]["type"];
        $img_info = getimagesize( $tmp );
        $typ = $img_info[2];
        switch ( $typ )
        {
            case 1: //GIF
            case 2: //JPEG
            case 3: //PNG
                if ( checkDir( "../images" ) )
                {
                    if ( ! move_uploaded_file( $tmp, $fname ) )
                    {
                        $meld = "Konnte Datei nicht verschieben!";
                        unlink( $tmp );
                        $ret = false;
                    }
                    else
                    {
                        if ( ! checkDir( "../images/thumbs" ) )
                        {
                            $meld = "Konnte Thumbnail nicht erstellen!";
                            unlink( $fname );
                            $ret = false;
                        }
                        else
                        {
                            if ( function_exists( "gd_info" ) )
                            {
                                //GD Bibliothek steht zur Verfügung
                                $gd_info = gd_info();
                                $width = 60;
                                $height = round( $img_info[1] / ( $img_info[0] /
                                    $width ), 0 );
                                $im_d = imagecreate( $width, $height );
                                switch ( $typ )
                                {
                                    case 1:
                                        $im_s = imagecreatefromgif( $fname );
                                        break;
                                    case 2:
                                        $im_s = imagecreatefromjpeg( $fname );
                                        break;
                                    case 3:
                                        $im_s = imagecreatefrompng( $fname );
                                        break;
                                }
                                imagepalettecopy( $im_d, $im_s );
                                imagecopyresized( $im_d, $im_s, 0, 0, 0, 0, $width,
                                    $height, $img_info[0], $img_info[1] );
                                $dst = $pic;
                                if ( $gd_info["PNG Support"] )
                                {
                                    $dst = substr( $dst, 0, strlen( $dst ) - 3 );
                                    $dst .= "png";
                                    if ( $typ != 3 )
                                    {
                                        imagePNG( $im_s, "../images/$dst" );
                                    }
                                    $ret = imagePNG( $im_d, "../images/thumbs/$dst" );
                                }
                                else
                                {
                                    if ( $gd_info( "JPEG Support" ) )
                                    {
                                        $ret = imageJPEG( $im_d,
                                            "../images/thumbs/$dst" );
                                    }
                                    else
                                    {
                                        $ret = false;
                                    }
                                }
                                imagedestroy( $im_s );
                                imagedestroy( $im_d );
                                if ( ! $ret )
                                {
                                    $meld = "Konnte Thumbnail nicht erstellen!";
                                }
                            }
                            else
                            {
                                //GD-Bibliothek steht NICHT zur Verfügung!
                                $ret = copy( $fname, $fname2 );
                                $dst = $fname2;
                                if ( ! $ret )
                                {
                                    $meld = "Konnte Thumbnail nicht erstellen!";
                                }
                            }
                        }
                    }
                }
                else
                {
                    $meld = "Konnte Datei nicht verschieben!";
                    $ret = false;
                }
                break;
            default:
                $meld = "Das ist kein gültiges Bild!";
                $ret = false;
                break;
        }
        return $ret;
    }
    function generate_pagination2( $base_url, $num_items, $per_page, $start_item,
        $add_prevnext_text = true )
    {
        global $mode, $common;
        if ( ! $num_items )
        {
            return "";
        }

        $total_pages = ceil( $num_items / $per_page );

        if ( $total_pages == 1 )
        {
            return '<table align="center" class="navig"><tr><th>' . $common["page"] .
                " 1 " . $common["of"] . ' 1</th></tr></table><br><br>';
        }

        $on_page = floor( $start_item / $per_page ) + 1;

        $page_string =
            '<table align="center" class="navig"><tr><th colspan="5">' . $common["page"] .
            ' ' . $on_page . ' ' . $common["of"] . ' ' . $total_pages .
            '</th></tr><tr>';

        if ( $add_prevnext_text )
        {
            if ( $on_page > 1 )
            {
                $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>";
                $prev_v = ( $on_page - 2 ) * $per_page;
                $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>";
            }
            else
            {
                $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>";
                $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>";
            }
        }
        if ( $total_pages > 1 )
        {
            $page_opts = "";
            for ( $i = 0; $i < $total_pages; $i++ )
            {
                $selected = "";
                $j = $i + 1;
                if ( $j == $on_page )
                {
                    $selected = "selected=\"selected\"";
                }
                $start = ( $i * $per_page );
                $page_opts .= "<option value=$start $selected>$j</option>";
            }
            $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>";
        }

        if ( $add_prevnext_text )
        {
            if ( $on_page < $total_pages )
            {
                $next_v = ( $on_page * $per_page );
                $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>";
                $max_v = ( $total_pages - 1 ) * $per_page;
                $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>";
            }
            else
            {
                $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>";
                $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>";
            }

        }
        $page_string .= "</tr></table><br><br>";

        return $page_string;
    }

    function exec_cmd( $type, $id )
    {
        unset( $out );
        if ( $id != 0 )
        {
            $cmd = "ssh root@mainframe vzctl $type $id";
            exec( $cmd, $out, $ret );
            if ( ! $ret )
            {
                $out_v["status"] = implode( "<br>", $out );
            }
            else
            {
                $out_v["status"] = "unknown";
            }
            $out_v["code"] = $ret;
        }
        else
        {
            $out_v["status"] = "Hardware node is running";
            $out_v["code"] = 0;
        }
        if ( eregi( "running", $out_v["status"] ) )
        {
            $out_v["started"] = true;
        }
        else
        {
            $out_v["started"] = false;
        }
        if ( ! $out_v["code"] && $out_v["started"] )
        {
            $class = "success_upd";
        }
        else
        {
            $class = "error_upd";
        }
        $out_v["status"] = "<div class=\"$class\">" . $out_v["status"] .
            "</div>";
        return $out_v;
    }
?>