Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 40 |
Gettext | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 40 |
fileToDatabase | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 40 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\locale\Gettext. | |
*/ | |
namespace Drupal\locale; | |
use Drupal\Component\Gettext\PoStreamReader; | |
/** | |
* Static class providing Drupal specific Gettext functionality. | |
* | |
* The operations are related to pumping data from a source to a destination, | |
* for example: | |
* - Remote files http://*.po to memory | |
* - File public://*.po to database | |
*/ | |
class Gettext { | |
/** | |
* Reads the given PO files into the database. | |
* | |
* @param object $file | |
* File object with an URI property pointing at the file's path. | |
* - "langcode": The language the strings will be added to. | |
* - "uri": File URI. | |
* @param array $options | |
* An array with options that can have the following elements: | |
* - 'overwrite_options': Overwrite options array as defined in | |
* Drupal\locale\PoDatabaseWriter. Optional, defaults to an empty array. | |
* - 'customized': Flag indicating whether the strings imported from $file | |
* are customized translations or come from a community source. Use | |
* LOCALE_CUSTOMIZED or LOCALE_NOT_CUSTOMIZED. Optional, defaults to | |
* LOCALE_NOT_CUSTOMIZED. | |
* - 'seek': Specifies from which position in the file should the reader | |
* start reading the next items. Optional, defaults to 0. | |
* - 'items': Specifies the number of items to read. Optional, defaults to | |
* -1, which means that all the items from the stream will be read. | |
* | |
* @return array | |
* Report array as defined in Drupal\locale\PoDatabaseWriter. | |
* | |
* @see \Drupal\locale\PoDatabaseWriter | |
*/ | |
public static function fileToDatabase($file, $options) { | |
// Add the default values to the options array. | |
$options += array( | |
'overwrite_options' => array(), | |
'customized' => LOCALE_NOT_CUSTOMIZED, | |
'items' => -1, | |
'seek' => 0, | |
); | |
// Instantiate and initialize the stream reader for this file. | |
$reader = new PoStreamReader(); | |
$reader->setLangcode($file->langcode); | |
$reader->setURI($file->uri); | |
try { | |
$reader->open(); | |
} | |
catch (\Exception $exception) { | |
throw $exception; | |
} | |
$header = $reader->getHeader(); | |
if (!$header) { | |
throw new \Exception('Missing or malformed header.'); | |
} | |
// Initialize the database writer. | |
$writer = new PoDatabaseWriter(); | |
$writer->setLangcode($file->langcode); | |
$writer_options = array( | |
'overwrite_options' => $options['overwrite_options'], | |
'customized' => $options['customized'], | |
); | |
$writer->setOptions($writer_options); | |
$writer->setHeader($header); | |
// Attempt to pipe all items from the file to the database. | |
try { | |
if ($options['seek']) { | |
$reader->setSeek($options['seek']); | |
} | |
$writer->writeItems($reader, $options['items']); | |
} | |
catch (\Exception $exception) { | |
throw $exception; | |
} | |
// Report back with an array of status information. | |
$report = $writer->getReport(); | |
// Add the seek position to the report. This is useful for the batch | |
// operation. | |
$report['seek'] = $reader->getSeek(); | |
return $report; | |
} | |
} |