Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 89346381d9fb64d9ee8827de5f073355 > files > 211

php-pear-HTML_Progress2-2.4.1-3mdv2010.0.noarch.rpm

<?php
/**
 * Customize error renderer with default PEAR_Error object
 * and PEAR::Log (db handler, mysql driver).
 *
 * @version    $Id: errorlogger.php,v 1.2 2005/08/18 13:56:35 farell Exp $
 * @author     Laurent Laville <pear@laurent-laville.org>
 * @package    HTML_Progress2
 * @subpackage Examples
 * @access     public
 * @example    examples/errorhandling/errorlogger.php
 *             errorlogger source code
 */
require_once 'HTML/Progress2.php';
require_once 'PEAR.php';
require_once 'Log.php';

function myErrorCallback($pb_error)
{
    $display_errors = ini_get('display_errors');
    $log_errors = ini_get('log_errors');

    if ($display_errors) {
        printf('<b>HTML_Progress2 error :</b> %s<br/>', $pb_error->getMessage());
    }

    if ($log_errors) {
        $userinfo = $pb_error->getUserInfo();

        $lineFormat = '%1$s %2$s';
        $contextFormat = '(Function="%3$s" File="%1$s" Line="%2$s")';

        $options =& $userinfo['log']['sql'];
        $db_table =& $options['name'];
        $ident =& $options['ident'];
        $conf =& $options['conf'];

        if (isset($conf['lineFormat'])) {
            $lineFormat = $conf['lineFormat'];
        }
        if (isset($conf['contextFormat'])) {
            $contextFormat = $conf['contextFormat'];
        }

        $logger = &Log::singleton('sql', $db_table, $ident, $conf);

        $msg = $pb_error->getMessage();
        $ctx = $pb_error->sprintContextExec($contextFormat);
        $message = sprintf($lineFormat, $msg, $ctx);

        switch ($userinfo['level']) {
         case 'exception':
             $logger->alert($message);
             break;
         case 'error':
             $logger->err($message);
             break;
         case 'warning':
             $logger->warning($message);
             break;
         default:
             $logger->notice($message);
        }
    }
}

function myErrorHandler()
{
    // always returns error; do not halt script on exception
    return null;
}

ini_set('display_errors',1);
ini_set('log_errors',1);


// Example A. ---------------------------------------------

PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'myErrorCallback');


$dbms     = 'mysql';     // your database management system
$db_user  = 'root';      // your database user account
$db_pass  = '****';      // your database user-password account
$db_name  = 'test';      // your database name
$db_table = 'log_table'; // your database log table

/**
 * CREATE TABLE log_table (
 *  id          INT NOT NULL,
 *  logtime     TIMESTAMP NOT NULL,
 *  ident       CHAR(16) NOT NULL,
 *  priority    INT NOT NULL,
 *  message     VARCHAR(255),
 *  PRIMARY KEY (id)
 * );
 */

$options = array(
    'dsn' => "$dbms://$db_user:$db_pass@/$db_name",
    'contextFormat' => '[File="%1$s" Line="%2$s"]'
);
$sql_handler = array('name' => $db_table,
                     'ident' => 'HTML_Progress2',
                     'conf' => $options
                     );
$logConfig = array('sql' => $sql_handler);

$prefs = array(
    'push_callback' => 'myErrorHandler',
    'handler' => array('log' => $logConfig)
);

// A1. Exception
$pb1 = new HTML_Progress2($prefs, HTML_PROGRESS2_BAR_VERTICAL, '0', 130);

// A2. Error
$pb1->setMinimum(-1);

// A3. Exception
$pb1->setIndeterminate('true');

if ($pb1->hasErrors()) {
    $msg  = "<br /><hr />";
    $msg .= "Previous errors has been recorded in database '$db_name',";
    $msg .= " table '$db_table'";
    echo "$msg <br /><br />";
}

print 'still alive !';

?>