function custom_function_default_roadmap_print_issue($p_issue_id, $p_issue_level = 0)
{
    static $t_status;
    $t_bug = bug_get($p_issue_id);
    if (bug_is_resolved($p_issue_id)) {
        $t_strike_start = '<strike>';
        $t_strike_end = '</strike>';
    } else {
        $t_strike_start = $t_strike_end = '';
    }
    if ($t_bug->category_id) {
        $t_category_name = category_get_name($t_bug->category_id);
    } else {
        $t_category_name = '';
    }
    $t_category = is_blank($t_category_name) ? '' : '<b>[' . string_display_line($t_category_name) . ']</b> ';
    echo utf8_str_pad('', $p_issue_level * 6, '&#160;'), '- ', $t_strike_start, string_get_bug_view_link($p_issue_id), ': ', $t_category, string_display_line_links($t_bug->summary);
    if ($t_bug->handler_id != 0) {
        echo ' (', prepare_user_name($t_bug->handler_id), ')';
    }
    if (!isset($t_status[$t_bug->status])) {
        $t_status[$t_bug->status] = get_enum_element('status', $t_bug->status, auth_get_current_user_id(), $t_bug->project_id);
    }
    echo ' - ', $t_status[$t_bug->status], $t_strike_end, '.<br />';
}
function custom_function_default_changelog_print_issue($p_issue_id)
{
    $t_bug = bug_get($p_issue_id);
    echo '- ', string_get_bug_view_link($p_issue_id), ': <b>[', $t_bug->category, ']</b> ', string_attribute($t_bug->summary);
    if ($t_bug->handler_id != 0) {
        echo ' (', prepare_user_name($t_bug->handler_id), ')';
    }
    echo '<br />';
}
Esempio n. 3
0
function custom_function_default_roadmap_print_issue($p_issue_id, $p_issue_level = 0)
{
    $t_bug = bug_get($p_issue_id);
    if (bug_is_resolved($p_issue_id)) {
        $t_strike_start = '<strike>';
        $t_strike_end = '</strike>';
    } else {
        $t_strike_start = $t_strike_end = '';
    }
    $t_category = is_blank($t_bug->category) ? '' : '<b>[' . $t_bug->category . ']</b> ';
    echo str_pad('', $p_issue_level * 6, '&nbsp;'), '- ', $t_strike_start, string_get_bug_view_link($p_issue_id), ': ', $t_category, string_display_line_links($t_bug->summary);
    if ($t_bug->handler_id != 0) {
        echo ' (', prepare_user_name($t_bug->handler_id), ')';
    }
    echo ' - ', get_enum_element('status', $t_bug->status), $t_strike_end, '.<br />';
}
Esempio n. 4
0
function print_news_entry($p_headline, $p_body, $p_poster_id, $p_view_state, $p_announcement, $p_date_posted)
{
    $t_headline = string_display_links($p_headline);
    $t_body = string_display_links($p_body);
    $t_date_posted = date(config_get('normal_date_format'), $p_date_posted);
    if (VS_PRIVATE == $p_view_state) {
        $t_news_css = 'news-heading-private';
    } else {
        $t_news_css = 'news-heading-public';
    }
    ?>

	<div class="news-item">
		<h3 class="<?php 
    echo $t_news_css;
    ?>
">
			<span class="news-title"><?php 
    echo $t_headline;
    ?>
</span>
			<span class="news-date-posted"><?php 
    echo $t_date_posted;
    ?>
</span>
			<span class="news-author"><?php 
    echo prepare_user_name($p_poster_id);
    ?>
</span><?php 
    if (1 == $p_announcement) {
        ?>
				<span class="news-announcement"><?php 
        echo lang_get('announcement');
        ?>
</span><?php 
    }
    if (VS_PRIVATE == $p_view_state) {
        ?>
				<span class="news-private"><?php 
        echo lang_get('private');
        ?>
</span><?php 
    }
    ?>
		</h3>
		<p class="news-body"><?php 
    echo $t_body;
    ?>
</p>
	</div><?php 
}
Esempio n. 5
0
        $v_date_posted = date(config_get('complete_date_format'), $v_date_posted);
        ?>
		<li>
			<span class="news-date-posted"><?php 
        echo $v_date_posted;
        ?>
</span>
			<span class="news-headline"><a href="news_view_page.php?news_id=<?php 
        echo $v_id;
        ?>
"><?php 
        echo $v_headline;
        ?>
</a></span>
			<span class="news-author"><?php 
        echo prepare_user_name($v_poster_id);
        ?>
</span><?php 
        if (1 == $v_announcement) {
            ?>
				<span class="news-announcement"><?php 
            echo lang_get('announcement');
            ?>
</span><?php 
        }
        if (VS_PRIVATE == $v_view_state) {
            ?>
				<span class="news-private"><?php 
            echo lang_get('private');
            ?>
</span><?php 
Esempio n. 6
0
function print_user($p_user_id)
{
    echo prepare_user_name($p_user_id);
}
/**
 * return formatted string with all the details on the requested relationship
 * @param integer             $p_bug_id       A bug identifier.
 * @param BugRelationshipData $p_relationship A bug relationship object.
 * @param boolean             $p_html         Whether to return html or text output.
 * @param boolean             $p_html_preview Whether to include style/hyperlinks - if preview is false, we prettify the output.
 * @param boolean             $p_show_project Show Project details.
 * @return string
 */
function relationship_get_details($p_bug_id, BugRelationshipData $p_relationship, $p_html = false, $p_html_preview = false, $p_show_project = false)
{
    $t_summary_wrap_at = utf8_strlen(config_get('email_separator2')) - 28;
    $t_icon_path = config_get('icon_path');
    if ($p_bug_id == $p_relationship->src_bug_id) {
        # root bug is in the source side, related bug in the destination side
        $t_related_bug_id = $p_relationship->dest_bug_id;
        $t_related_project_name = project_get_name($p_relationship->dest_project_id);
        $t_relationship_descr = relationship_get_description_src_side($p_relationship->type);
    } else {
        # root bug is in the dest side, related bug in the source side
        $t_related_bug_id = $p_relationship->src_bug_id;
        $t_related_project_name = project_get_name($p_relationship->src_project_id);
        $t_relationship_descr = relationship_get_description_dest_side($p_relationship->type);
    }
    # related bug not existing...
    if (!bug_exists($t_related_bug_id)) {
        return '';
    }
    # user can access to the related bug at least as a viewer
    if (!access_has_bug_level(VIEWER, $t_related_bug_id)) {
        return '';
    }
    if ($p_html_preview == false) {
        $t_td = '<td>';
    } else {
        $t_td = '<td class="print">';
    }
    # get the information from the related bug and prepare the link
    $t_bug = bug_get($t_related_bug_id, false);
    $t_status_string = get_enum_element('status', $t_bug->status, auth_get_current_user_id(), $t_bug->project_id);
    $t_resolution_string = get_enum_element('resolution', $t_bug->resolution, auth_get_current_user_id(), $t_bug->project_id);
    $t_relationship_info_html = $t_td . string_no_break($t_relationship_descr) . '&#160;</td>';
    if ($p_html_preview == false) {
        $t_relationship_info_html .= '<td><a href="' . string_get_bug_view_url($t_related_bug_id) . '">' . string_display_line(bug_format_id($t_related_bug_id)) . '</a></td>';
        $t_relationship_info_html .= '<td><span class="issue-status" title="' . string_attribute($t_resolution_string) . '">' . string_display_line($t_status_string) . '</span></td>';
    } else {
        $t_relationship_info_html .= $t_td . string_display_line(bug_format_id($t_related_bug_id)) . '</td>';
        $t_relationship_info_html .= $t_td . string_display_line($t_status_string) . '&#160;</td>';
    }
    $t_relationship_info_text = utf8_str_pad($t_relationship_descr, 20);
    $t_relationship_info_text .= utf8_str_pad(bug_format_id($t_related_bug_id), 8);
    # get the handler name of the related bug
    $t_relationship_info_html .= $t_td;
    if ($t_bug->handler_id > 0) {
        $t_relationship_info_html .= string_no_break(prepare_user_name($t_bug->handler_id));
    }
    $t_relationship_info_html .= '&#160;</td>';
    # add project name
    if ($p_show_project) {
        $t_relationship_info_html .= $t_td . string_display_line($t_related_project_name) . '&#160;</td>';
    }
    # add summary
    if ($p_html == true) {
        $t_relationship_info_html .= $t_td . string_display_line_links($t_bug->summary);
        if (VS_PRIVATE == $t_bug->view_state) {
            $t_relationship_info_html .= sprintf(' <img src="%s" alt="(%s)" title="%s" />', $t_icon_path . 'protected.gif', lang_get('private'), lang_get('private'));
        }
    } else {
        if (utf8_strlen($t_bug->summary) <= $t_summary_wrap_at) {
            $t_relationship_info_text .= string_email_links($t_bug->summary);
        } else {
            $t_relationship_info_text .= utf8_substr(string_email_links($t_bug->summary), 0, $t_summary_wrap_at - 3) . '...';
        }
    }
    # add delete link if bug not read only and user has access level
    if (!bug_is_readonly($p_bug_id) && !current_user_is_anonymous() && $p_html_preview == false) {
        if (access_has_bug_level(config_get('update_bug_threshold'), $p_bug_id)) {
            $t_relationship_info_html .= ' [<a class="small" href="bug_relationship_delete.php?bug_id=' . $p_bug_id . '&amp;rel_id=' . $p_relationship->id . htmlspecialchars(form_security_param('bug_relationship_delete')) . '">' . lang_get('delete_link') . '</a>]';
        }
    }
    $t_relationship_info_html .= '&#160;</td>';
    $t_relationship_info_text .= "\n";
    if ($p_html_preview == false) {
        # choose color based on status
        $t_status_label = html_get_status_css_class($t_bug->status, auth_get_current_user_id(), $t_bug->project_id);
        $t_relationship_info_html = '<tr class="' . $t_status_label . '">' . $t_relationship_info_html . '</tr>' . "\n";
    } else {
        $t_relationship_info_html = '<tr>' . $t_relationship_info_html . '</tr>';
    }
    if ($p_html == true) {
        return $t_relationship_info_html;
    } else {
        return $t_relationship_info_text;
    }
}
Esempio n. 8
0
function print_column_reporter_id($p_row, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE)
{
    echo '<td class="center">';
    echo prepare_user_name($p_row['reporter_id']);
    echo '</td>';
}
>
	<td><?php 
echo $t_tag_row['id'];
?>
</td>
	<td><input type="text" <?php 
echo helper_get_tab_index();
?>
 name="name" value="<?php 
echo $t_name;
?>
"/></td>
	<td><?php 
if (access_has_global_level(config_get('tag_edit_threshold'))) {
    if (ON == config_get('use_javascript')) {
        $t_username = prepare_user_name($t_tag_row['user_id']);
        echo ajax_click_to_edit($t_username, 'user_id', 'entrypoint=user_combobox&user_id=' . $t_tag_row['user_id'] . '&access_level=' . config_get('tag_create_threshold'));
    } else {
        echo '<select ', helper_get_tab_index(), ' name="user_id">';
        print_user_option_list($t_tag_row['user_id'], ALL_PROJECTS, config_get('tag_create_threshold'));
        echo '</select>';
    }
} else {
    echo string_display_line(user_get_name($t_tag_row['user_id']));
}
?>
</td>
	<td><?php 
echo date(config_get('normal_date_format'), $t_tag_row['date_created']);
?>
 </td>
Esempio n. 10
0
$t_count = count( $rows );

if ( $t_count > 0 ) { ?>
	<ul><?php
	# Loop through results
	for ( $i=0 ; $i < $t_count ; $i++ ) {
		extract( $rows[$i], EXTR_PREFIX_ALL, 'v' );
		if ( VS_PRIVATE == $v_view_state &&
			 ! access_has_project_level( config_get( 'private_news_threshold' ), $v_project_id ) ) 		{
			continue;
		}

		$v_headline 	= string_display( $v_headline );
		$v_date_posted 	= date( config_get( 'complete_date_format' ), $v_date_posted ); ?>
		<li>
			<span class="news-date-posted"><?php echo $v_date_posted; ?></span>
			<span class="news-headline"><a href="news_view_page.php?news_id=<?php echo $v_id; ?>"><?php echo $v_headline; ?></a></span>
			<span class="news-author"><?php echo prepare_user_name( $v_poster_id ); ?></span><?php
			if( 1 == $v_announcement ) { ?>
				<span class="news-announcement"><?php echo lang_get( 'announcement' ); ?></span><?php
			}
			if( VS_PRIVATE == $v_view_state ) { ?>
				<span class="news-private"><?php echo lang_get( 'private' ); ?></span><?php
			} ?>
		</li><?php
	}  	# end for loop ?>
	</ul><?php
}

html_page_bottom();
<tr <?php 
echo helper_alternate_class();
?>
>

	<!-- Reporter -->
	<td class="category">
		<?php 
echo lang_get('reporter');
?>
	</td>
	<td>
		<?php 
if (ON == config_get('use_javascript')) {
    $t_username = prepare_user_name($t_bug->reporter_id);
    echo ajax_click_to_edit($t_username, 'reporter_id', 'entrypoint=issue_reporter_combobox&issue_id=' . $f_bug_id);
} else {
    echo '<select <?php echo helper_get_tab_index() ?> name="reporter_id">';
    print_reporter_option_list($t_bug->reporter_id, $t_bug->project_id);
    echo '</select>';
}
?>
	</td>

	<!-- View Status -->
	<td class="category">
		<?php 
echo lang_get('view_status');
?>
	</td>
/**
 * Display the committer information for a changeset.
 * @param object Changeset object
 * @param boolean Echo information
 */
function Source_View_Committer($p_changeset, $p_echo = true)
{
    $t_committer_name = !is_blank($p_changeset->committer) ? string_display_line($p_changeset->committer) : false;
    $t_committer_email = !is_blank($p_changeset->committer_email) ? string_display_line($p_changeset->committer_email) : false;
    $t_committer_username = $p_changeset->committer_id > 0 ? prepare_user_name($p_changeset->committer_id) : false;
    if ($t_committer_username) {
        $t_output = $t_committer_username;
    } else {
        if ($t_committer_name) {
            $t_output = $t_committer_name;
        } else {
            $t_output = $t_committer_email;
        }
    }
    if ($p_echo) {
        echo $t_output;
    } else {
        return $t_output;
    }
}
Esempio n. 13
0
function relationship_get_details($p_bug_id, $p_relationship, $p_html = false, $p_html_preview = false, $p_show_project = false)
{
    $t_summary_wrap_at = strlen(config_get('email_separator2')) - 28;
    $t_icon_path = config_get('icon_path');
    $p_user_id = auth_get_current_user_id();
    if ($p_bug_id == $p_relationship->src_bug_id) {
        # root bug is in the src side, related bug in the dest side
        $t_related_bug_id = $p_relationship->dest_bug_id;
        $t_related_project_name = project_get_name($p_relationship->dest_project_id);
        $t_relationship_descr = relationship_get_description_src_side($p_relationship->type);
    } else {
        # root bug is in the dest side, related bug in the src side
        $t_related_bug_id = $p_relationship->src_bug_id;
        $t_related_project_name = project_get_name($p_relationship->src_project_id);
        $t_relationship_descr = relationship_get_description_dest_side($p_relationship->type);
    }
    # related bug not existing...
    if (!bug_exists($t_related_bug_id)) {
        return '';
    }
    # user can access to the related bug at least as a viewer
    if (!access_has_bug_level(VIEWER, $t_related_bug_id)) {
        return '';
    }
    if ($p_html_preview == false) {
        $t_td = '<td>';
    } else {
        $t_td = '<td class="print">';
    }
    # get the information from the related bug and prepare the link
    $t_bug = bug_prepare_display(bug_get($t_related_bug_id, true));
    $t_status = string_attribute(get_enum_element('status', $t_bug->status));
    $t_resolution = string_attribute(get_enum_element('resolution', $t_bug->resolution));
    $t_relationship_info_html = $t_td . '<nobr>' . $t_relationship_descr . '</nobr>&nbsp;</td>';
    if ($p_html_preview == false) {
        $t_relationship_info_html .= '<td><a href="' . string_get_bug_view_url($t_related_bug_id) . '">' . bug_format_id($t_related_bug_id) . '</a></td>';
        $t_relationship_info_html .= '<td><a title="' . $t_resolution . '"><u>' . $t_status . '</u>&nbsp;</a></td>';
    } else {
        $t_relationship_info_html .= $t_td . bug_format_id($t_related_bug_id) . '</td>';
        $t_relationship_info_html .= $t_td . $t_status . '&nbsp;</td>';
    }
    $t_relationship_info_text = str_pad($t_relationship_descr, 20);
    $t_relationship_info_text .= str_pad(bug_format_id($t_related_bug_id), 8);
    # get the handler name of the related bug
    $t_relationship_info_html .= $t_td;
    if ($t_bug->handler_id > 0) {
        $t_relationship_info_html .= '<nobr>' . prepare_user_name($t_bug->handler_id) . '</nobr>';
    }
    $t_relationship_info_html .= '&nbsp;</td>';
    # add project name
    if ($p_show_project) {
        $t_relationship_info_html .= $t_td . $t_related_project_name . '&nbsp;</td>';
    }
    # add summary
    $t_relationship_info_html .= $t_td . $t_bug->summary;
    if (VS_PRIVATE == $t_bug->view_state) {
        $t_relationship_info_html .= sprintf(' <img src="%s" alt="(%s)" title="%s" />', $t_icon_path . 'protected.gif', lang_get('private'), lang_get('private'));
    }
    if (strlen($t_bug->summary) <= $t_summary_wrap_at) {
        $t_relationship_info_text .= $t_bug->summary;
    } else {
        $t_relationship_info_text .= substr($t_bug->summary, 0, $t_summary_wrap_at - 3) . '...';
    }
    # add delete link if bug not read only and user has access level
    if (!bug_is_readonly($p_bug_id) && !current_user_is_anonymous() && $p_html_preview == false) {
        if (access_has_bug_level(config_get('update_bug_threshold'), $p_bug_id)) {
            $t_relationship_info_html .= " [<a class=\"small\" href=\"bug_relationship_delete.php?bug_id={$p_bug_id}&rel_id={$p_relationship->id}\">" . lang_get('delete_link') . '</a>]';
        }
    }
    $t_relationship_info_html .= '&nbsp;</td>';
    $t_relationship_info_text .= "\n";
    if ($p_html_preview == false) {
        $t_relationship_info_html = '<tr bgcolor="' . get_status_color($t_bug->status) . '">' . $t_relationship_info_html . '</tr>' . "\n";
    } else {
        $t_relationship_info_html = '<tr>' . $t_relationship_info_html . '</tr>';
    }
    if ($p_html == true) {
        return $t_relationship_info_html;
    } else {
        return $t_relationship_info_text;
    }
}
Esempio n. 14
0
	$t_categories = category_get_all_rows( $f_project_id );
	if ( count( $t_categories ) > 0 ) { ?>
	<table cellspacing="1" cellpadding="5" border="1">
		<tr class="row-category">
			<th><?php echo lang_get( 'category' ) ?></th>
			<th><?php echo lang_get( 'assign_to' ) ?></th>
			<th colspan="2" class="center"><?php echo lang_get( 'actions' ) ?></th>
		</tr><?php

		foreach ( $t_categories as $t_category ) {
			$t_id = $t_category['id'];
			$t_inherited = ( $t_category['project_id'] != $f_project_id );
		?>
		<tr <?php echo helper_alternate_class() ?>>
			<td><?php echo string_display( category_full_name( $t_id, /* showProject */ $t_inherited, $f_project_id ) )  ?></td>
			<td><?php echo prepare_user_name( $t_category['user_id'] ) ?></td>
			<td class="center">
				<?php if ( !$t_inherited ) {
					$t_id = urlencode( $t_id );
					$t_project_id = urlencode( $f_project_id );

					print_button( 'manage_proj_cat_edit_page.php?id=' . $t_id . '&project_id=' . $t_project_id, lang_get( 'edit_link' ) );
				} ?>
			</td>
			<td class="center">
				<?php if ( !$t_inherited ) {
					print_button( 'manage_proj_cat_delete.php?id=' . $t_id . '&project_id=' . $t_project_id, lang_get( 'delete_link' ) );
				} ?>
			</td>
		</tr><?php
		} # end for loop ?>
/**
 * Show Bug revision
 *
 * @param array $p_revision Bug Revision Data.
 * @return null
 */
function show_revision(array $p_revision)
{
    static $s_can_drop = null;
    static $s_drop_token = null;
    static $s_user_access = null;
    if (is_null($s_can_drop)) {
        $s_can_drop = access_has_bug_level(config_get('bug_revision_drop_threshold'), $p_revision['bug_id']);
        $s_drop_token = form_security_param('bug_revision_drop');
    }
    switch ($p_revision['type']) {
        case REV_DESCRIPTION:
            $t_label = lang_get('description');
            break;
        case REV_STEPS_TO_REPRODUCE:
            $t_label = lang_get('steps_to_reproduce');
            break;
        case REV_ADDITIONAL_INFO:
            $t_label = lang_get('additional_information');
            break;
        case REV_BUGNOTE:
            if (is_null($s_user_access)) {
                $s_user_access = access_has_bug_level(config_get('private_bugnote_threshold'), $p_revision['bug_id']);
            }
            if (!$s_user_access) {
                return null;
            }
            $t_label = lang_get('bugnote');
            break;
        default:
            $t_label = '';
    }
    $t_by_string = sprintf(lang_get('revision_by'), string_display_line(date(config_get('normal_date_format'), $p_revision['timestamp'])), prepare_user_name($p_revision['user_id']));
    ?>
<tr class="spacer"><td><a id="revision-<?php 
    echo $p_revision['id'];
    ?>
"></a></td></tr>

<tr>
<th class="category"><?php 
    echo lang_get('revision');
    ?>
</th>
<td colspan="2"><?php 
    echo $t_by_string;
    ?>
</td>
<td class="center" width="5%">
<?php 
    if ($s_can_drop) {
        print_bracket_link('bug_revision_drop.php?id=' . $p_revision['id'] . $s_drop_token, lang_get('revision_drop'));
    }
    ?>
</tr>

<tr>
<th class="category"><?php 
    echo $t_label;
    ?>
</th>
<td colspan="3"><?php 
    echo string_display_links($p_revision['value']);
    ?>
</td>
</tr>

	<?php 
}
Esempio n. 16
0
/**
 * Print column content for column reporter id
 *
 * @param BugData $p_bug bug object
 * @param int $p_columns_target see COLUMNS_TARGET_* in constant_inc.php
 * @return null
 * @access public
 */
function print_column_reporter_id($p_bug, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE)
{
    echo '<td class="column-reporter">';
    echo prepare_user_name($p_bug->reporter_id);
    echo '</td>';
}
Esempio n. 17
0
foreach ($t_categories as $t_category) {
    $t_id = $t_category['id'];
    ?>
<!-- Repeated Info Row -->
		<tr <?php 
    echo helper_alternate_class();
    ?>
>
			<td>
				<?php 
    echo string_display(category_full_name($t_id, false));
    ?>
			</td>
			<td>
				<?php 
    echo prepare_user_name($t_category['user_id']);
    ?>
			</td>
<?php 
    if ($t_can_update_global_cat) {
        ?>
			<td class="center">
				<?php 
        $t_id = urlencode($t_id);
        $t_project_id = urlencode(ALL_PROJECTS);
        print_button("manage_proj_cat_edit_page.php?id={$t_id}&project_id={$t_project_id}", lang_get('edit_link'));
        echo '&#160;';
        print_button("manage_proj_cat_delete.php?id={$t_id}&project_id={$t_project_id}", lang_get('delete_link'));
        ?>
			</td>
<?php 
Esempio n. 18
0
                print_button('bugnote_set_view_state.php?private=1&bugnote_id=' . $t_bugnote->id, lang_get('make_private'));
            }
        }
    }
    ?>
		</div>
	</td>
	<td class="bugnote-note">
		<?php 
    switch ($t_bugnote->note_type) {
        case REMINDER:
            echo '<em>' . lang_get('reminder_sent_to') . ' ';
            $t_note_attr = utf8_substr($t_bugnote->note_attr, 1, utf8_strlen($t_bugnote->note_attr) - 2);
            $t_to = array();
            foreach (explode('|', $t_note_attr) as $t_recipient) {
                $t_to[] = prepare_user_name($t_recipient);
            }
            echo implode(', ', $t_to) . '</em><br /><br />';
            break;
        case TIME_TRACKING:
            if (access_has_bug_level(config_get('time_tracking_view_threshold'), $f_bug_id)) {
                echo '<div class="time-tracked">', lang_get('time_tracking_time_spent') . ' ' . $t_time_tracking_hhmm, '</div>';
            }
            break;
    }
    echo string_display_links($t_bugnote->note);
    ?>
	</td>
</tr>
<?php 
    event_signal('EVENT_VIEW_BUGNOTE', array($f_bug_id, $t_bugnote->id, VS_PRIVATE == $t_bugnote->view_state));