Test all CSS files seeing if any string translations do anything.
Return value
array An array with the filename key and the before => after translation value.
1 call to advagg_mod_admin_test_css_files()
- advagg_mod_admin_settings_form dans advagg_mod/
advagg_mod.admin.inc - Form builder; Configure advagg settings.
Fichier
-
advagg_mod/
advagg_mod.admin.inc, line 719
Code
function advagg_mod_admin_test_css_files() {
$output = array();
// Get list of files.
$query_files = db_select('advagg_files', 'af')->fields('af', array(
'filename_hash',
'filename',
))
->condition('filetype', 'css')
->orderBy('filename', 'ASC')
->execute()
->fetchAllKeyed();
$files = array_values($query_files);
// Exit if no files were found.
if (empty($files)) {
return $output;
}
foreach ($files as $filename) {
// Skip missing files.
if (!file_exists($filename)) {
continue;
}
// Load CSS file.
$file_contents = advagg_load_stylesheet_content((string) @advagg_file_get_contents($filename), TRUE);
// Code taken from drupal_load_stylesheet_content().
// Regexp to match double quoted strings.
$double_quot = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
// Regexp to match single quoted strings.
$single_quot = "'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'";
// Extract all content inside of quotes.
$css_content_pattern = "/content:.*?({$double_quot}|{$single_quot}|(\\;|\\})).*?(?:\\;|\\})/";
// Get strings inside of quotes of the content attribute.
preg_match_all($css_content_pattern, $file_contents, $matches);
// Skip if no matches.
if (empty($matches[1])) {
continue;
}
foreach ($matches[1] as $value) {
// Skip if equal to ; or }.
if ($value === ';' || $value === '}') {
continue;
}
// Remove quotes for t function.
$before = substr($value, 1, -1);
// Only test if it contains A-Za-z.
if (!preg_match('/[A-Za-z]/', $before)) {
continue;
}
// Only test if it contains characters other than unicode.
$css_unicode_pattern = '/\\\\[0-9a-fA-F]{1,6}(?:\\r\\n|[ \\t\\r\\n\\f])?/';
$unicode_removed = preg_replace($css_unicode_pattern, '', $before);
if (empty($unicode_removed)) {
continue;
}
// Run t function.
// @codingStandardsIgnoreLine
$after = t($before);
// Only include it if strings are different.
if ($before !== $after) {
if (!isset($output[$filename])) {
$output[$filename] = '';
}
$output[$filename] .= $before . ' => ' . $after;
}
}
}
return $output;
}