locale_translation_http_check($uri)
Check if remote file exists and when it was last updated.
Parameters
string $uri: URI of remote file.
Return value
array|bool Associative array of file data with the following elements:
- last_modified: Last modified timestamp of the translation file.
- (optional) location: The location of the translation file. Is only set when a redirect (301) has occurred.
TRUE if the file is not found. FALSE if a fault occurred.
File
- core/modules/locale/locale.batch.inc, line 237
- Batch process to check the availability of remote or local po files.
Code
function locale_translation_http_check($uri) { $logger = \Drupal::logger('locale'); try { $actual_uri = NULL; $response = \Drupal::service('http_client_factory')->fromOptions(['allow_redirects' => [ 'on_redirect' => function(RequestInterface $request, ResponseInterface $response, UriInterface $request_uri) use (&$actual_uri) { $actual_uri = (string) $request_uri; } ]])->head($uri); $result = array(); // Return the effective URL if it differs from the requested. if ($actual_uri && $actual_uri !== $uri) { $result['location'] = $actual_uri; } $result['last_modified'] = $response->hasHeader('Last-Modified') ? strtotime($response->getHeaderLine('Last-Modified')) : 0; return $result; } catch (RequestException $e) { // Handle 4xx and 5xx http responses. if ($response = $e->getResponse()) { if ($response->getStatusCode() == 404) { // File not found occurs when a translation file is not yet available // at the translation server. But also if a custom module or custom // theme does not define the location of a translation file. By default // the file is checked at the translation server, but it will not be // found there. $logger->notice('Translation file not found: @uri.', array('@uri' => $uri)); return TRUE; } $logger->notice('HTTP request to @url failed with error: @error.', array('@url' => $uri, '@error' => $response->getStatusCode() . ' ' . $response->getReasonPhrase())); } } return FALSE; }
Please login to continue.