Wordpress/tests/phpunit/includes/trac.php
Andrea Fercia 98d22d5d3d I18N: Restore the "Error:" prefix for error messages.
Partially reverts [48059] as there's no full consensus on the removal of the text prefix. Further actions should be taken to improve consistency and accessibility of the admin notices. Keeps some improvements to the translatable strings from [48059].

Fixes #47656.


git-svn-id: https://develop.svn.wordpress.org/trunk@48115 602fd350-edb4-49c9-b593-d223f7449a82
2020-06-21 13:58:46 +00:00

61 lines
2.3 KiB
PHP

<?php
class TracTickets {
/**
* When open tickets for a Trac installation is requested, the results are stored here.
*
* @var array
*/
protected static $trac_ticket_cache = array();
/**
* Checks if track ticket #$ticket_id is resolved
*
* @return bool|null true if the ticket is resolved, false if not resolved, null on error
*/
public static function isTracTicketClosed( $trac_url, $ticket_id ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
if ( ! extension_loaded( 'openssl' ) ) {
$trac_url = preg_replace( '/^https:/', 'http:', $trac_url );
}
if ( ! isset( self::$trac_ticket_cache[ $trac_url ] ) ) {
// In case you're running the tests offline, keep track of open tickets.
$file = DIR_TESTDATA . '/.trac-ticket-cache.' . str_replace( array( 'http://', 'https://', '/' ), array( '', '', '-' ), rtrim( $trac_url, '/' ) );
$tickets = @file_get_contents( $trac_url . '/query?status=%21closed&format=csv&col=id' );
// Check if our HTTP request failed.
if ( false === $tickets ) {
if ( file_exists( $file ) ) {
register_shutdown_function( array( 'TracTickets', 'usingLocalCache' ) );
$tickets = file_get_contents( $file );
} else {
register_shutdown_function( array( 'TracTickets', 'forcingKnownBugs' ) );
self::$trac_ticket_cache[ $trac_url ] = array();
return true; // Assume the ticket is closed, which means it gets run.
}
} else {
$tickets = substr( $tickets, 2 ); // Remove 'id' column header.
$tickets = trim( $tickets );
file_put_contents( $file, $tickets );
}
$tickets = explode( "\r\n", $tickets );
self::$trac_ticket_cache[ $trac_url ] = $tickets;
}
return ! in_array( $ticket_id, self::$trac_ticket_cache[ $trac_url ], true );
}
// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
public static function usingLocalCache() {
echo PHP_EOL . "\x1b[0m\x1b[30;43m\x1b[2K";
echo 'Info: Trac was inaccessible, so a local ticket status cache was used.' . PHP_EOL;
echo "\x1b[0m\x1b[2K";
}
// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
public static function forcingKnownBugs() {
echo PHP_EOL . "\x1b[0m\x1b[37;41m\x1b[2K";
echo "Error: Trac was inaccessible, so known bugs weren't able to be skipped." . PHP_EOL;
echo "\x1b[0m\x1b[2K";
}
}