Esempio n. 1
0
/**
 * JSON error handler
 * 
 * <p>Ensures that all necessary headers are set and terminates processing after being invoked.</p>
 */
function json_error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    # flush any language overrides to return to user's natural default
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            lang_push(lang_get_default());
        }
    }
    $t_error_code = ERROR_GENERIC;
    // default
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = $p_error;
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = $p_error;
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_code = $p_error;
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_code = $p_error;
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            #shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    json_output_raw(array('status' => 'ERROR', 'error' => array('code' => $t_error_code, 'type' => $t_error_type, 'message' => $t_error_description), 'contents' => $t_error_description));
}
Esempio n. 2
0
/**
 * delete the configuration entry
 *
 * @param string  $p_option  Configuration option.
 * @param integer $p_user    A user identifier.
 * @param integer $p_project A project identifier.
 * @return void
 */
function config_delete($p_option, $p_user = ALL_USERS, $p_project = ALL_PROJECTS)
{
    # bypass table lookup for certain options
    $t_bypass_lookup = !config_can_set_in_database($p_option);
    if (!$t_bypass_lookup && true === db_is_connected() && db_table_exists(db_get_table('config'))) {
        if (!config_can_delete($p_option)) {
            return;
        }
        $t_query = 'DELETE FROM {config}
				WHERE config_id = ' . db_param() . ' AND
					project_id=' . db_param() . ' AND
					user_id=' . db_param();
        db_query($t_query, array($p_option, $p_project, $p_user));
    }
    config_flush_cache($p_option, $p_user, $p_project);
}
Esempio n. 3
0
function html_page_bottom1($p_file = null)
{
    if (!db_is_connected()) {
        return;
    }
    if (config_get('show_footer_menu')) {
        print '<br />';
        print_menu();
    }
    html_page_bottom1a($p_file);
}
Esempio n. 4
0
/**
 * Default error handler
 *
 * This handler will not receive E_ERROR, E_PARSE, E_CORE_*, or E_COMPILE_* errors.
 *
 * E_USER_* are triggered by us and will contain an error constant in $p_error
 * The others, being system errors, will come with a string in $p_error
 * @param integer $p_type    Contains the level of the error raised, as an integer.
 * @param string  $p_error   Contains the error message, as a string.
 * @param string  $p_file    Contains the filename that the error was raised in, as a string.
 * @param integer $p_line    Contains the line number the error was raised at, as an integer.
 * @param array   $p_context To the active symbol table at the point the error occurred (optional).
 * @return void
 */
function mc_error_handler($p_type, $p_error, $p_file, $p_line, array $p_context)
{
    # check if errors were disabled with @ somewhere in this call chain
    # also suppress php 5 strict warnings
    if (0 == error_reporting() || 2048 == $p_type) {
        return;
    }
    # flush any language overrides to return to user's natural default
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            lang_push(lang_get_default());
        }
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = $p_error;
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = $p_error;
            break;
        case E_USER_ERROR:
            $t_error_type = 'APPLICATION ERROR #' . $p_error;
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = 'APPLICATION WARNING #' . $p_error;
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            #shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_stack = error_get_stack_trace();
    error_log('[mantisconnect.php] Error Type: ' . $t_error_type . ',' . "\n" . 'Error Description: ' . $t_error_description . "\n" . 'Stack Trace:' . "\n" . $t_error_stack);
    throw new SoapFault('Server', 'Error Type: ' . $t_error_type . ',' . "\n" . 'Error Description: ' . $t_error_description);
}
Esempio n. 5
0
/**
 * is cookie valid?
 * @param string $p_cookie_string
 * @return bool
 * @access public
 */
function auth_is_cookie_valid($p_cookie_string)
{
    global $g_cache_current_user_id;
    # fail if DB isn't accessible
    if (!db_is_connected()) {
        return false;
    }
    # fail if cookie is blank
    if ('' === $p_cookie_string) {
        return false;
    }
    # succeeed if user has already been authenticated
    if (null !== $g_cache_current_user_id) {
        return true;
    }
    if (user_search_cache('cookie_string', $p_cookie_string)) {
        return true;
    }
    # look up cookie in the database to see if it is valid
    $t_user_table = db_get_table('user');
    $query = "SELECT *\n\t\t\t\t  FROM {$t_user_table}\n\t\t\t\t  WHERE cookie_string=" . db_param();
    $result = db_query_bound($query, array($p_cookie_string));
    # return true if a matching cookie was found
    if (1 == db_num_rows($result)) {
        user_cache_database_result(db_fetch_array($result));
        return true;
    } else {
        return false;
    }
}
Esempio n. 6
0
function config_delete( $p_option, $p_user = ALL_USERS, $p_project = ALL_PROJECTS ) {
	global $g_cache_config, $g_cache_config_access;

	# bypass table lookup for certain options
	$t_bypass_lookup = !config_can_set_in_database( $p_option );

	# @@ debug @@ if ($t_bypass_lookup) { echo "bp=$p_option match=$t_match_pattern <br />"; }
	# @@ debug @@ if ( ! db_is_connected() ) { echo "no db"; }

	if(( !$t_bypass_lookup ) && ( TRUE === db_is_connected() ) && ( db_table_exists( db_get_table( 'config' ) ) ) ) {
		if( !config_can_delete( $p_option ) ) {
			return;
		}

		$t_config_table = db_get_table( 'config' );

		# @@ debug @@ echo "lu table=" . ( db_table_exists( $t_config_table ) ? "yes" : "no" );
		# @@ debug @@ error_print_stack_trace();

		$c_user = db_prepare_int( $p_user );
		$c_project = db_prepare_int( $p_project );
		$query = "DELETE FROM $t_config_table
				WHERE config_id = " . db_param() . " AND
					project_id=" . db_param() . " AND
					user_id=" . db_param();

		$result = @db_query_bound( $query, Array( $p_option, $c_project, $c_user ) );
	}

	config_flush_cache( $p_option, $p_user, $p_project );
}
Esempio n. 7
0
/**
 * Default error handler
 *
 * This handler will not receive E_ERROR, E_PARSE, E_CORE_*, or E_COMPILE_*
 *  errors.
 *
 * E_USER_* are triggered by us and will contain an error constant in $p_error
 * The others, being system errors, will come with a string in $p_error
 *
 * @access private
 * @param int p_type contains the level of the error raised, as an integer.
 * @param string p_error contains the error message, as a string.
 * @param string p_file contains the filename that the error was raised in, as a string.
 * @param int p_line contains the line number the error was raised at, as an integer.
 * @param array p_context to the active symbol table at the point the error occurred (optional)
 * @uses lang_api.php
 * @uses config_api.php
 * @uses compress_api.php
 * @uses database_api.php (optional)
 * @uses html_api.php (optional)
 */
function error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    global $g_error_parameters, $g_error_handled, $g_error_proceed_url;
    global $g_lang_overrides;
    global $g_error_send_page_header;
    # check if errors were disabled with @ somewhere in this call chain
    if (0 == error_reporting()) {
        return;
    }
    $t_lang_pushed = false;
    $t_db_connected = false;
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            $t_db_connected = true;
        }
    }
    $t_html_api = false;
    if (function_exists('html_end')) {
        $t_html_api = true;
    }
    # flush any language overrides to return to user's natural default
    if ($t_db_connected) {
        lang_push(lang_get_default());
        $t_lang_pushed = true;
    }
    $t_short_file = basename($p_file);
    $t_method_array = config_get_global('display_errors');
    if (isset($t_method_array[$p_type])) {
        $t_method = $t_method_array[$p_type];
    } else {
        if (isset($t_method_array[E_ALL])) {
            $t_method = $t_method_array[E_ALL];
        } else {
            $t_method = 'none';
        }
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = "'{$p_error}' in '{$p_file}' line {$p_line}";
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = "'{$p_error}' in '{$p_file}' line {$p_line}";
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_description = error_string($p_error);
            if ($t_method == DISPLAY_ERROR_INLINE) {
                $t_error_description .= "\n" . error_string(ERROR_DISPLAY_USER_ERROR_INLINE);
            }
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            # shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_description = nl2br($t_error_description);
    switch ($t_method) {
        case DISPLAY_ERROR_HALT:
            # disable any further event callbacks
            if (function_exists('event_clear_callbacks')) {
                event_clear_callbacks();
            }
            $t_oblen = ob_get_length();
            if ($t_oblen > 0) {
                $t_old_contents = ob_get_contents();
                if (!error_handled()) {
                    # Retrieve the previously output header
                    if (false !== preg_match_all('|^(.*)(</head>.*$)|is', $t_old_contents, $result)) {
                        $t_old_headers = $result[1][0];
                        unset($t_old_contents);
                    }
                }
            }
            # We need to ensure compression is off - otherwise the compression headers are output.
            compress_disable();
            # then clean the buffer, leaving output buffering on.
            if ($t_oblen > 0) {
                ob_clean();
            }
            # don't send the page header information if it has already been sent
            if ($g_error_send_page_header) {
                if ($t_html_api) {
                    html_page_top1();
                    if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                        html_page_top2();
                    } else {
                        html_page_top2a();
                    }
                } else {
                    echo '<html><head><title>', $t_error_type, '</title></head><body>';
                }
            } else {
                # Output the previously sent headers, if defined
                if (isset($t_old_headers)) {
                    echo $t_old_headers, "\n";
                    html_page_top2();
                }
            }
            echo '<div id="error-msg">';
            echo '<div class="error-type">' . $t_error_type . '</div>';
            echo '<div class="error-description">', $t_error_description, '</div>';
            echo '<div class="error-info">';
            if (null === $g_error_proceed_url) {
                echo lang_get('error_no_proceed');
            } else {
                echo '<a href="', $g_error_proceed_url, '">', lang_get('proceed'), '</a>';
            }
            echo '</div>';
            if (ON == config_get_global('show_detailed_errors')) {
                echo '<div class="error-details">';
                error_print_details($p_file, $p_line, $p_context);
                echo '</div>';
                echo '<div class="error-trace">';
                error_print_stack_trace();
                echo '</div>';
            }
            echo '</div>';
            if (isset($t_old_contents)) {
                echo '<div class="warning">Previous non-fatal errors occurred.  Page contents follow.</div>';
                echo '<div id="old-contents">';
                echo $t_old_contents;
                echo '</div>';
            }
            if ($t_html_api) {
                if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                    html_page_bottom();
                } else {
                    html_body_end();
                    html_end();
                }
            } else {
                echo '</body></html>', "\n";
            }
            exit;
        case DISPLAY_ERROR_INLINE:
            echo '<div class="error-inline">', $t_error_type, ': ', $t_error_description, '</div>';
            $g_error_handled = true;
            break;
        default:
            # do nothing - note we treat this as we've not handled an error, so any redirects go through.
    }
    if ($t_lang_pushed) {
        lang_pop();
    }
    $g_error_parameters = array();
    $g_error_proceed_url = null;
}
Esempio n. 8
0
/**
 * Default error handler
 *
 * This handler will not receive E_ERROR, E_PARSE, E_CORE_*, or E_COMPILE_*
 *  errors.
 *
 * E_USER_* are triggered by us and will contain an error constant in $p_error
 * The others, being system errors, will come with a string in $p_error
 *
 * @access private
 * @param integer $p_type    Contains the level of the error raised, as an integer.
 * @param string  $p_error   Contains the error message, as a string.
 * @param string  $p_file    Contains the filename that the error was raised in, as a string.
 * @param integer $p_line    Contains the line number the error was raised at, as an integer.
 * @param array   $p_context To the active symbol table at the point the error occurred (optional).
 * @return void
 * @uses lang_api.php
 * @uses config_api.php
 * @uses compress_api.php
 * @uses database_api.php (optional)
 * @uses html_api.php (optional)
 */
function error_handler($p_type, $p_error, $p_file, $p_line, array $p_context)
{
    global $g_error_parameters, $g_error_handled, $g_error_proceed_url;
    global $g_error_send_page_header;
    # check if errors were disabled with @ somewhere in this call chain
    if (0 == error_reporting()) {
        return;
    }
    $t_lang_pushed = false;
    $t_db_connected = false;
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            $t_db_connected = true;
        }
    }
    $t_html_api = false;
    if (function_exists('html_end')) {
        $t_html_api = true;
    }
    # flush any language overrides to return to user's natural default
    if ($t_db_connected) {
        lang_push(lang_get_default());
        $t_lang_pushed = true;
    }
    $t_method_array = config_get_global('display_errors');
    if (isset($t_method_array[$p_type])) {
        $t_method = $t_method_array[$p_type];
    } else {
        if (isset($t_method_array[E_ALL])) {
            $t_method = $t_method_array[E_ALL];
        } else {
            $t_method = 'none';
        }
    }
    # build an appropriate error string
    $t_error_location = 'in \'' . $p_file . '\' line ' . $p_line;
    $t_error_description = '\'' . $p_error . '\' ' . $t_error_location;
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            break;
        case E_STRICT:
            $t_error_type = 'STRICT NOTICE';
            break;
        case E_RECOVERABLE_ERROR:
            # This should generally be considered fatal (like E_ERROR)
            $t_error_type = 'SYSTEM ERROR';
            break;
        case E_DEPRECATED:
            $t_error_type = 'DEPRECATED';
            break;
        case E_USER_ERROR:
            $t_error_type = 'APPLICATION ERROR #' . $p_error;
            $t_error_description = error_string($p_error);
            if ($t_method == DISPLAY_ERROR_INLINE) {
                $t_error_description .= ' (' . $t_error_location . ")\n" . error_string(ERROR_DISPLAY_USER_ERROR_INLINE);
            }
            break;
        case E_USER_WARNING:
            $t_error_type = 'APPLICATION WARNING #' . $p_error;
            $t_error_description = error_string($p_error) . ' (' . $t_error_location . ')';
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            break;
        case E_USER_DEPRECATED:
            # Get the parent of the call that triggered the error to facilitate
            # debugging with a more useful filename and line number
            $t_stack = debug_backtrace();
            $t_caller = $t_stack[2];
            $t_error_type = 'WARNING';
            $t_error_description = error_string($p_error) . ' (in ' . $t_caller['file'] . ' line ' . $t_caller['line'] . ')';
            if ($t_method == DISPLAY_ERROR_INLINE && php_sapi_name() != 'cli') {
                # Enqueue messages for later display with error_print_delayed()
                global $g_errors_delayed;
                $g_errors_delayed[] = $t_error_description;
                $g_error_handled = true;
                return;
            }
            break;
        default:
            # shouldn't happen, just display the error just in case
            $t_error_type = 'UNHANDLED ERROR TYPE (' . '<a href="http://php.net/errorfunc.constants">' . $p_type . '</a>)';
            $t_error_description = $p_error . ' (' . $t_error_location . ')';
    }
    $t_error_description = nl2br($t_error_description);
    if (php_sapi_name() == 'cli') {
        if (DISPLAY_ERROR_NONE != $t_method) {
            echo $t_error_type . ': ' . $t_error_description . "\n";
            if (ON == config_get_global('show_detailed_errors')) {
                echo "\n";
                debug_print_backtrace();
            }
        }
        if (DISPLAY_ERROR_HALT == $t_method) {
            exit(1);
        }
    } else {
        switch ($t_method) {
            case DISPLAY_ERROR_HALT:
                # disable any further event callbacks
                if (function_exists('event_clear_callbacks')) {
                    event_clear_callbacks();
                }
                $t_oblen = ob_get_length();
                if ($t_oblen > 0) {
                    $t_old_contents = ob_get_contents();
                    if (!error_handled()) {
                        # Retrieve the previously output header
                        if (false !== preg_match_all('|^(.*)(</head>.*$)|is', $t_old_contents, $t_result) && isset($t_result[1]) && isset($t_result[1][0])) {
                            $t_old_headers = $t_result[1][0];
                            unset($t_old_contents);
                        }
                    }
                }
                # We need to ensure compression is off - otherwise the compression headers are output.
                compress_disable();
                # then clean the buffer, leaving output buffering on.
                if ($t_oblen > 0) {
                    ob_clean();
                }
                # If HTML error output was disabled, set an error header and stop
                if (defined('DISABLE_INLINE_ERROR_REPORTING')) {
                    # @TODO Have a mapping for mantis error codes to appropiate HTTP error codes
                    header(' ', true, 400);
                    exit(1);
                }
                # don't send the page header information if it has already been sent
                if ($g_error_send_page_header) {
                    if ($t_html_api) {
                        html_page_top1();
                        if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                            html_page_top2();
                        } else {
                            html_page_top2a();
                        }
                    } else {
                        echo '<html><head><title>', $t_error_type, '</title></head><body>';
                    }
                } else {
                    # Output the previously sent headers, if defined
                    if (isset($t_old_headers)) {
                        echo $t_old_headers, "\n";
                        html_page_top2();
                    }
                }
                echo '<div id="error-msg">';
                echo '<div class="error-type">' . $t_error_type . '</div>';
                echo '<div class="error-description">', $t_error_description, '</div>';
                echo '<div class="error-info">';
                if (null === $g_error_proceed_url) {
                    echo lang_get('error_no_proceed');
                } else {
                    echo '<a href="', $g_error_proceed_url, '">', lang_get('proceed'), '</a>';
                }
                echo '</div>';
                if (ON == config_get_global('show_detailed_errors')) {
                    echo '<div class="error-details">';
                    error_print_details($p_file, $p_line, $p_context);
                    echo '</div>';
                    echo '<div class="error-trace">';
                    error_print_stack_trace();
                    echo '</div>';
                }
                echo '</div>';
                if (isset($t_old_contents)) {
                    echo '<div class="warning">Previous non-fatal errors occurred.  Page contents follow.</div>';
                    echo '<div id="old-contents">';
                    echo $t_old_contents;
                    echo '</div>';
                }
                if ($t_html_api) {
                    if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                        html_page_bottom();
                    } else {
                        html_body_end();
                        html_end();
                    }
                } else {
                    echo '</body></html>', "\n";
                }
                exit(1);
            case DISPLAY_ERROR_INLINE:
                if (!defined('DISABLE_INLINE_ERROR_REPORTING')) {
                    echo '<div class="error-inline">', $t_error_type, ': ', $t_error_description, '</div>';
                }
                $g_error_handled = true;
                break;
            default:
                # do nothing - note we treat this as we've not handled an error, so any redirects go through.
        }
    }
    if ($t_lang_pushed) {
        lang_pop();
    }
    $g_error_parameters = array();
    $g_error_proceed_url = null;
}
Esempio n. 9
0
?>
]
	</td>
	<?php 
$result = @db_connect(config_get_global('dsn', false), config_get_global('hostname'), config_get_global('db_username'), config_get_global('db_password'), config_get_global('database_name'));
if (false == $result) {
    print_test_result(BAD);
} else {
    print_test_result(GOOD);
}
?>
</tr>

<!-- Test DATABASE part 2 -->
<?php 
if (db_is_connected()) {
    $t_serverinfo = $g_db->ServerInfo();
    ?>
<tr>
	<td bgcolor="#ffffff">
		Database Type (adodb)
	</td>
	<td bgcolor="#ffffff">
			<?php 
    echo $g_db->databaseType;
    ?>
	</td>
</tr><tr>
	<td bgcolor="#ffffff">
			Database Provider (adodb)
	</td>
Esempio n. 10
0
function mc_error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    global $g_error_parameters, $g_error_handled, $g_error_proceed_url;
    global $g_lang_overrides;
    global $g_error_send_page_header;
    global $l_oServer;
    # check if errors were disabled with @ somewhere in this call chain
    # also suppress php 5 strict warnings
    if (0 == error_reporting() || 2048 == $p_type) {
        return;
    }
    $t_lang_pushed = false;
    # flush any language overrides to return to user's natural default
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            lang_push(lang_get_default());
            $t_lang_pushed = true;
        }
    }
    $t_short_file = basename($p_file);
    $t_method_array = config_get('display_errors');
    if (isset($t_method_array[$p_type])) {
        $t_method = $t_method_array[$p_type];
    } else {
        $t_method = 'none';
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = $p_error;
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = $p_error;
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            #shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_description = $t_error_description;
    $t_error_stack = error_get_stack_trace();
    $l_oServer->fault('Server', "Error Type: {$t_error_type},\nError Description:\n{$t_error_description},\nStack Trace:\n{$t_error_stack}");
    $l_oServer->send_response();
    exit;
}
Esempio n. 11
0
function config_delete($p_option, $p_user = ALL_USERS, $p_project = ALL_PROJECTS)
{
    global $g_cache_config, $g_cache_config_access;
    # bypass table lookup for certain options
    $t_bypass_lookup = !config_can_set_in_database($p_option);
    # @@ debug @@ if ($t_bypass_lookup) { echo "bp=$p_option match=$t_match_pattern <br />"; }
    # @@ debug @@ if ( ! db_is_connected() ) { echo "no db"; }
    if (!$t_bypass_lookup && TRUE === db_is_connected() && db_table_exists(config_get_global('mantis_config_table'))) {
        if (!config_can_delete($p_option)) {
            return;
        }
        $t_config_table = config_get_global('mantis_config_table');
        # @@ debug @@ echo "lu table=" . ( db_table_exists( $t_config_table ) ? "yes" : "no" );
        # @@ debug @@ error_print_stack_trace();
        $c_option = db_prepare_string($p_option);
        $c_user = db_prepare_int($p_user);
        $c_project = db_prepare_int($p_project);
        $query = "DELETE FROM {$t_config_table}\r\n\t\t\t\tWHERE config_id = '{$c_option}' AND\r\n\t\t\t\t\tproject_id={$c_project} AND\r\n\t\t\t\t\tuser_id={$c_user}";
        $result = @db_query($query);
    }
    config_flush_cache($p_option, $p_user, $p_project);
}
Esempio n. 12
0
/**
 * Default error handler
 *
 * This handler will not receive E_ERROR, E_PARSE, E_CORE_*, or E_COMPILE_*
 *  errors.
 *
 * E_USER_* are triggered by us and will contain an error constant in $p_error
 * The others, being system errors, will come with a string in $p_error
 *
 * @access private
 * @param int p_type contains the level of the error raised, as an integer.
 * @param string p_error contains the error message, as a string.
 * @param string p_file contains the filename that the error was raised in, as a string.
 * @param int p_line contains the line number the error was raised at, as an integer.
 * @param array p_context to the active symbol table at the point the error occurred (optional)
 * @uses lang_api.php
 * @uses config_api.php
 * @uses compress_api.php
 * @uses database_api.php (optional)
 * @uses html_api.php (optional)
 */
function error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    global $g_error_parameters, $g_error_handled, $g_error_proceed_url;
    global $g_lang_overrides;
    global $g_error_send_page_header;
    # check if errors were disabled with @ somewhere in this call chain
    if (0 == error_reporting()) {
        return;
    }
    $t_lang_pushed = false;
    $t_db_connected = false;
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            $t_db_connected = true;
        }
    }
    $t_html_api = false;
    if (function_exists('html_end')) {
        $t_html_api = true;
    }
    # flush any language overrides to return to user's natural default
    if ($t_db_connected) {
        lang_push(lang_get_default());
        $t_lang_pushed = true;
    }
    $t_short_file = basename($p_file);
    $t_method_array = config_get_global('display_errors');
    if (isset($t_method_array[$p_type])) {
        $t_method = $t_method_array[$p_type];
    } else {
        if (isset($t_method_array[E_ALL])) {
            $t_method = $t_method_array[E_ALL];
        } else {
            $t_method = 'none';
        }
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = "'{$p_error}' in '{$p_file}' line {$p_line}";
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = "'{$p_error}' in '{$p_file}' line {$p_line}";
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            # shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_description = nl2br($t_error_description);
    switch ($t_method) {
        case 'halt':
            # disable any further event callbacks
            if (function_exists('event_clear_callbacks')) {
                event_clear_callbacks();
            }
            $t_oblen = ob_get_length();
            if (error_handled() && $t_oblen > 0) {
                $t_old_contents = ob_get_contents();
            }
            # We need to ensure compression is off - otherwise the compression headers are output.
            compress_disable();
            # then clean the buffer, leaving output buffering on.
            if ($t_oblen > 0) {
                ob_clean();
            }
            # don't send the page header information if it has already been sent
            if ($g_error_send_page_header) {
                if ($t_html_api) {
                    html_page_top1();
                    if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                        html_page_top2();
                    } else {
                        html_page_top2a();
                    }
                } else {
                    echo '<html><head><title>', $t_error_type, '</title></head><body>';
                }
            }
            echo '<br /><div align="center"><table class="width50" cellspacing="1">';
            echo '<tr><td class="form-title">', $t_error_type, '</td></tr>';
            echo '<tr><td><p class="center" style="color:red">', $t_error_description, '</p></td></tr>';
            echo '<tr><td><p class="center">';
            if (null === $g_error_proceed_url) {
                echo lang_get('error_no_proceed');
            } else {
                echo '<a href="', $g_error_proceed_url, '">', lang_get('proceed'), '</a>';
            }
            echo '</p></td></tr>';
            if (ON == config_get_global('show_detailed_errors')) {
                echo '<tr><td>';
                error_print_details($p_file, $p_line, $p_context);
                echo '</td></tr>';
                echo '<tr><td>';
                error_print_stack_trace();
                echo '</td></tr>';
            }
            echo '</table></div>';
            if (isset($t_old_contents)) {
                echo '<p>Previous non-fatal errors occurred.  Page contents follow.</p>';
                echo '<div style="border: solid 1px black;padding: 4px">';
                echo $t_old_contents;
                echo '</div>';
            }
            if ($t_html_api) {
                if ($p_error != ERROR_DB_QUERY_FAILED && $t_db_connected == true) {
                    html_page_bottom();
                } else {
                    html_body_end();
                    html_end();
                }
            } else {
                echo '</body></html>', "\n";
            }
            exit;
        case 'inline':
            echo '<p style="color:red">', $t_error_type, ': ', $t_error_description, '</p>';
            $g_error_handled = true;
            break;
        default:
            # do nothing - note we treat this as we've not handled an error, so any redirects go through.
    }
    if ($t_lang_pushed) {
        lang_pop();
    }
    $g_error_parameters = array();
    $g_error_proceed_url = null;
}
Esempio n. 13
0
function mc_error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    global $l_oServer;
    # check if errors were disabled with @ somewhere in this call chain
    # also suppress php 5 strict warnings
    if (0 == error_reporting() || 2048 == $p_type) {
        return;
    }
    # flush any language overrides to return to user's natural default
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            lang_push(lang_get_default());
        }
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = $p_error;
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = $p_error;
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            #shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_stack = error_get_stack_trace();
    error_log("[mantisconnect.php] Error Type: {$t_error_type},\nError Description: {$t_error_description}\nStack Trace:\n{$t_error_stack}");
    $l_oServer->fault('Server', "Error Type: {$t_error_type},\nError Description: {$t_error_description}");
    $l_oServer->send_response();
    exit;
}
Esempio n. 14
0
function auth_is_cookie_valid($p_cookie_string)
{
    global $g_cache_current_user_id;
    # fail if DB isn't accessible
    if (!db_is_connected()) {
        return false;
    }
    # fail if cookie is blank
    if ('' === $p_cookie_string) {
        return false;
    }
    # succeeed if user has already been authenticated
    if (null !== $g_cache_current_user_id) {
        return true;
    }
    # look up cookie in the database to see if it is valid
    $t_user_table = config_get('mantis_user_table');
    $c_cookie_string = db_prepare_string($p_cookie_string);
    $query = "SELECT id\r\n\t\t\t\t  FROM {$t_user_table}\r\n\t\t\t\t  WHERE cookie_string='{$c_cookie_string}'";
    $result = db_query($query);
    # return true if a matching cookie was found
    return 1 == db_num_rows($result);
}
Esempio n. 15
0
?>
<table class="width75" align="center" cellspacing="1">
<tr>
<td class="form-title" width="30%" colspan="2"><?php 
echo 'Checking your installation';
?>
</td>
</tr>

<?php 
print_test_row('MantisBT requires at least <b>PHP ' . PHP_MIN_VERSION . '</b>. You are running <b>PHP ' . phpversion(), $result = version_compare(phpversion(), PHP_MIN_VERSION, '>='));
if (!print_test_row('Checking Config File Exists', file_exists($g_absolute_path . 'config_inc.php'), array(false => 'Please use install.php to perform initial installation <a href="install.php">Click here</a>'))) {
    die;
}
print_test_row('Opening connection to database [' . config_get_global('database_name') . '] on host [' . config_get_global('hostname') . '] with username [' . config_get_global('db_username') . ']', @db_connect(config_get_global('dsn', false), config_get_global('hostname'), config_get_global('db_username'), config_get_global('db_password'), config_get_global('database_name')) != false);
if (!db_is_connected()) {
    print_info_row('Database is not connected - Can not continue checks');
}
require_once 'obsolete.php';
if (isset($ADODB_vers)) {
    # ADOConnection::Version() is broken as it treats v5.1 the same as v5.10
    # Therefore we must extract the correct version ourselves
    # Upstream bug report: http://phplens.com/lens/lensforum/msgs.php?id=18320
    if (preg_match('/^[Vv]([0-9\\.]+)/', $ADODB_vers, $t_matches) == 1) {
        $t_adodb_version_check_ok = version_compare($t_matches[1], '5.10', '>=');
    }
}
print_test_warn_row('Checking adodb version...', $t_adodb_version_check_ok, $ADODB_vers);
print_test_row('Checking using bundled adodb with some drivers...', !(db_is_pgsql() || db_is_mssql() || db_is_db2()) || strstr($ADODB_vers, 'MantisBT Version') !== false);
$t_serverinfo = $g_db->ServerInfo();
print_info_row('Database Type (adodb)', $g_db->databaseType);
Esempio n. 16
0
/**
 * Print the part of the page that comes below the page content
 * $p_file should always be the __FILE__ variable. This is passed to show source
 * @param string $p_file should always be the __FILE__ variable. This is passed to show source
 * @return null
 */
function html_page_bottom1($p_file = null)
{
    if (!db_is_connected()) {
        return;
    }
    event_signal('EVENT_LAYOUT_CONTENT_END');
    echo '</div>', "\n";
    if (config_get('show_footer_menu')) {
        echo '<br />';
        print_menu();
    }
    html_page_bottom1a($p_file);
}
Esempio n. 17
0
function error_handler($p_type, $p_error, $p_file, $p_line, $p_context)
{
    global $g_error_parameters, $g_error_handled, $g_error_proceed_url;
    global $g_lang_overrides;
    global $g_error_send_page_header;
    # check if errors were disabled with @ somewhere in this call chain
    # also suppress php 5 strict warnings
    if (0 == error_reporting() || 2048 == $p_type) {
        return;
    }
    $t_lang_pushed = false;
    # flush any language overrides to return to user's natural default
    if (function_exists('db_is_connected')) {
        if (db_is_connected()) {
            lang_push(lang_get_default());
            $t_lang_pushed = true;
        }
    }
    $t_short_file = basename($p_file);
    $t_method_array = config_get('display_errors');
    if (isset($t_method_array[$p_type])) {
        $t_method = $t_method_array[$p_type];
    } else {
        $t_method = 'none';
    }
    # build an appropriate error string
    switch ($p_type) {
        case E_WARNING:
            $t_error_type = 'SYSTEM WARNING';
            $t_error_description = $p_error;
            break;
        case E_NOTICE:
            $t_error_type = 'SYSTEM NOTICE';
            $t_error_description = $p_error;
            break;
        case E_USER_ERROR:
            $t_error_type = "APPLICATION ERROR #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_WARNING:
            $t_error_type = "APPLICATION WARNING #{$p_error}";
            $t_error_description = error_string($p_error);
            break;
        case E_USER_NOTICE:
            # used for debugging
            $t_error_type = 'DEBUG';
            $t_error_description = $p_error;
            break;
        default:
            #shouldn't happen, just display the error just in case
            $t_error_type = '';
            $t_error_description = $p_error;
    }
    $t_error_description = nl2br($t_error_description);
    if ('halt' == $t_method) {
        $t_old_contents = ob_get_contents();
        # ob_end_clean() still seems to call the output handler which
        #  outputs the headers indicating compression. If we had
        #  PHP > 4.2.0 we could use ob_clean() instead but as it is
        #  we need to disable compression.
        compress_disable();
        if (ob_get_length()) {
            ob_end_clean();
        }
        # don't send the page header information if it has already been sent
        if ($g_error_send_page_header) {
            html_page_top1();
            if ($p_error != ERROR_DB_QUERY_FAILED) {
                html_page_top2();
            } else {
                html_page_top2a();
            }
        }
        print '<br /><div align="center"><table class="width50" cellspacing="1">';
        print "<tr><td class=\"form-title\">{$t_error_type}</td></tr>";
        print "<tr><td><p class=\"center\" style=\"color:red\">{$t_error_description}</p></td></tr>";
        print '<tr><td><p class="center">';
        if (null === $g_error_proceed_url) {
            print lang_get('error_no_proceed');
        } else {
            print "<a href=\"{$g_error_proceed_url}\">" . lang_get('proceed') . '</a>';
        }
        print '</p></td></tr>';
        if (ON == config_get('show_detailed_errors')) {
            print '<tr><td>';
            error_print_details($p_file, $p_line, $p_context);
            print '</td></tr>';
            print '<tr><td>';
            error_print_stack_trace();
            print '</td></tr>';
        }
        print '</table></div>';
        if ($g_error_handled && !is_blank($t_old_contents)) {
            print '<p>Previous non-fatal errors occurred.  Page contents follow.</p>';
            print '<div style="border: solid 1px black;padding: 4px">';
            print $t_old_contents;
            print '</div>';
        }
        if ($p_error != ERROR_DB_QUERY_FAILED) {
            html_page_bottom1();
        } else {
            html_body_end();
            html_end();
        }
        exit;
    } else {
        if ('inline' == $t_method) {
            print "<p style=\"color:red\">{$t_error_type}: {$t_error_description}</p>";
        } else {
            # do nothing
        }
    }
    if ($t_lang_pushed) {
        lang_pop();
    }
    $g_error_parameters = array();
    $g_error_handled = true;
    $g_error_proceed_url = null;
}
Esempio n. 18
0
/**
 * delete the config entry
 *
 * @param string $p_option config option
 * @param int $p_user user id
 * @param int $p_project project id
 */
function config_delete($p_option, $p_user = ALL_USERS, $p_project = ALL_PROJECTS)
{
    global $g_cache_config, $g_cache_config_access;
    # bypass table lookup for certain options
    $t_bypass_lookup = !config_can_set_in_database($p_option);
    if (!$t_bypass_lookup && TRUE === db_is_connected() && db_table_exists(db_get_table('config'))) {
        if (!config_can_delete($p_option)) {
            return;
        }
        $t_config_table = db_get_table('config');
        $query = "DELETE FROM {$t_config_table}\n\t\t\t\tWHERE config_id = " . db_param() . " AND\n\t\t\t\t\tproject_id=" . db_param() . " AND\n\t\t\t\t\tuser_id=" . db_param();
        $result = db_query_bound($query, array($p_option, $p_project, $p_user));
    }
    config_flush_cache($p_option, $p_user, $p_project);
}