Skip to content
Snippets Groups Projects
class.error.php 1.76 KiB
Newer Older
<?php
/*********************************************************************
    class.error.php

    Error handling for PHP < 5.0. Allows for returning a formal error from a
    function since throwing it isn't available. Also allows for consistent
    logging and debugging of errors in the osTicket system log.

    Peter Rotich <peter@osticket.com>
    Jared Hancock <jared@osticket.com>
    Copyright (c)  2006-2013 osTicket
    http://www.osticket.com

    Released under the GNU General Public License WITHOUT ANY WARRANTY.
    See LICENSE.TXT for details.

    vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/

class Error /* extends Exception */ {
    var $title = '';

    function Error($message) {
        call_user_func_array(array($this,'__construct'), func_get_args());
    }
    function __construct($message) {
        global $ost;

        $message = str_replace(ROOT_DIR, '(root)/', $message);

        if ($ost->getConfig()->getLogLevel() == 3)
            $message .= "\n\n" . $this->formatBacktrace(debug_backtrace());

        $ost->logError($this->getTitle(), $message);
    }

    function getTitle() {
        return get_class($this) . ": {$this->title}";
    }

    function formatBacktrace($bt) {
        $buffer = array();
        foreach ($bt as $i=>$frame)
            $buffer[] = sprintf("#%d %s%s%s at [%s:%d]", $i,
                $frame['class'], $frame['type'], $frame['function'],
                str_replace(ROOT_DIR, '', $frame['file']), $frame['line']);
        return implode("\n", $buffer);
    }
}

class InitialDataError extends Error {
    var $title = 'Problem with install initial data';
}

function raise_error($message, $class=false) {
    if (!$class) $class = 'Error';
    new $class($message);
}