Example #1
0
function _fatal($code = 404, $errfile = '', $errline = '', $errmsg = '', $errno = 0)
{
    global $core, $file, $warning;
    sql_close();
    // TODO: Check if is ghost request.
    $warning = '<b>%s</b>: in file <b>%s</b> on line <b>%s</b>: <b>%s</b><br>';
    switch ($code) {
        case 504:
        case 505:
            echo sprintf($warning, 'PHP Notice', $errfile, $errline, $errmsg);
            break;
        case 506:
            exit('USER_ERROR: ' . $errmsg);
            break;
        default:
            $error_path = XFS . XHTM . _tbrowser() . '/warnings/%s.htm';
            $sql_message = 'SQL ERROR @ %s # %s<br /><br />' . "\n" . ' %s<br /><br />' . "\n";
            if ($errno) {
                $code .= '-' . $errno;
            }
            $filepath = sprintf($error_path, $code . (is_ghost() ? '-ghost' : ''));
            if (!@file_exists($filepath)) {
                $filepath = sprintf($error_path, 'default');
            }
            $v_host = get_protocol() . get_host();
            // SQL error
            if ($code == 507) {
                $sql_time = date('r');
                $sql_format = str_replace(array("\n", "\t"), array('<br />', '&nbsp;&nbsp;&nbsp;'), $errmsg['sql']);
                $sql_message = sprintf($sql_message, get_host(), $sql_time, _page());
                if (!empty($errmsg['message'])) {
                    $sql_message .= $errmsg['message'] . '<br /><br />' . "\n";
                }
                $sql_message .= $sql_format;
                $errmsg = '';
                if (!is_remote()) {
                    $errmsg = '<br /><br />' . $sql_message;
                }
                $sql_message = _utf8($sql_message);
                if (!($report_to = $file->read(XFS . XCOR . 'store/server_admin'))) {
                    $report_to = array(v_server('SERVER_ADMIN'));
                }
                // Send report to server admins @ XFS.XCOR . store/server_admin
                if (count($report_to)) {
                    /*
                    $core->email->init($report_to[0]);
                    $core->email->subject('PHP/SQL error @ ' . get_host());
                    $core->email->message($sql_message);
                    $core->email->send($report_to);
                    */
                    echo $sql_message;
                    exit;
                }
            }
            $v_self = v_server('PHP_SELF');
            $replace = array('{ERROR_LINE}' => $errline, '{ERROR_FILE}' => $errfile, '{ERROR_MSG}' => $errmsg, '{HTTP_HOST}' => $v_host . str_replace(basename($v_self), '', $v_self), '{REQUEST_URL}' => v_server('REQUEST_URI'), '{REQUEST_METHOD}' => v_server('REQUEST_METHOD'));
            $header_code = array('0' => '404 Not Found', '507' => '501 Internal Error', '405' => '405 Method Not Allowed');
            if (!isset($header_code[$code])) {
                $code = 0;
            }
            header('HTTP/1.1 ' . $header_code[$code]);
            echo str_replace(array_keys($replace), array_values($replace), implode('', @file($filepath)));
            exit;
            break;
    }
    return false;
}
Example #2
0
File: bio.php Project: nopticon/npt
 public function setup($tpl = '')
 {
     global $style, $core;
     $this->base->bio_lang = $core->v('site_lang');
     $this->date_format = $this->v('bio_dateformat');
     $this->timezone = $this->v('bio_timezone') * 3600;
     $this->dst = $this->v('bio_dst') * 3600;
     // Load global language
     $this->load_lang('main');
     $tpl = _tbrowser($tpl);
     // Load UI template
     $style->set_template(XFS . XHTM . (!empty($tpl) ? $tpl : ''));
     return;
 }
Example #3
0
    public function home()
    {
        global $warning, $bio, $core, $warning;
        $v = $this->__(w('path ext'));
        if (array_empty($v)) {
            $warning->now();
        }
        $location = XFS . XHTM . _tbrowser() . '/' . $v->ext . '/';
        if (!@is_dir($location)) {
            $warning->now();
        }
        $filename = _filename($v->path, $v->ext);
        if ($v->ext == 'css' && $v->path != 'default') {
            $v->field = !is_numb($v->path) ? 'alias' : 'id';
            $sql = 'SELECT *
				FROM _tree
				WHERE tree_?? = ?
				LIMIT 1';
            if (!($tree = sql_fieldrow(sql_filter($sql, $v->field, $v->path)))) {
                $warning->now();
            }
            $filetree = _rewrite($tree);
            $filename = _filename('_tree_' . $filetree, $v->ext);
        }
        //
        // 304 Not modified response header
        if (@file_exists($location . $filename)) {
            $f_last_modified = gmdate('D, d M Y H:i:s', filemtime($location . $filename)) . ' GMT';
            $http_if_none_match = v_server('HTTP_IF_NONE_MATCH');
            $http_if_modified_since = v_server('HTTP_IF_MODIFIED_SINCE');
            header('Last-Modified: ' . $f_last_modified);
            if ($f_last_modified == $http_if_modified_since) {
                header('HTTP/1.0 304 Not Modified');
                header('Content-Length: 0');
                exit;
            }
        }
        switch ($v->ext) {
            case 'css':
                if ($v->path != 'default') {
                    $filetree = _rewrite($tree);
                    $filename = _filename('_tree_' . $filetree, $v->ext);
                    if (!@file_exists($location . $filename)) {
                        $warning->now();
                    }
                }
                $browser = _browser();
                if (!empty($browser['browser'])) {
                    $custom = array($browser['browser'] . '-' . $browser['version'], $browser['browser']);
                    foreach ($custom as $row) {
                        $handler = _filename('_tree_' . $row, 'css');
                        if (@file_exists($location . $handler)) {
                            _style('includes', array('CSS' => _style_handler('css/' . $handler)));
                        }
                    }
                }
                _style_vreplace(false);
                break;
            case 'js':
                if (!@file_exists($location . $filename)) {
                    $warning->now();
                }
                _style_vreplace(false);
                break;
        }
        v_style(array('DOMAIN' => 'media'));
        sql_close();
        //
        // Headers
        $ext = _style_handler($v->ext . '/' . $filename);
        switch ($v->ext) {
            case 'css':
                $content_type = 'text/css; charset=utf-8';
                //$ext = preg_replace('#(border-radius\-?.*?)\: ?(([0-9]+)px;)#is', ((_browser('firefox')) ? '-moz-\1: \2' : ''), $ext);
                $ext = preg_replace('/(#([0-9A-Fa-f]{3})\\b)/i', '#\\2\\2', $ext);
                $ext = preg_replace('#\\/\\*(.*?)\\*\\/#is', '', $ext);
                $ext = str_replace(array("\r\n", "\n", "\t"), '', $ext);
                break;
            case 'js':
                $content_type = 'application/x-javascript';
                require_once XFS . XCOR . 'jsmin.php';
                $ext = JSMin::minify($ext);
                break;
        }
        ob_start('ob_gzhandler');
        header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT');
        // 30 days = 60 * 60 * 24 * 30
        header('Content-type: ' . $content_type);
        echo $ext;
        exit;
    }