private function BrowscapImporter::saveParsedData in Browscap 8.3
Saves parsed Browscap data.
Parameters
array $browscap_data: Browscap data that has been parsed with parse_ini_string() or parse_ini_file().
1 call to BrowscapImporter::saveParsedData()
- BrowscapImporter::processData in src/
BrowscapImporter.php - Processes Browscap data.
File
- src/
BrowscapImporter.php, line 234
Class
- BrowscapImporter
- Class BrowscapImporter.
Namespace
Drupal\browscapCode
private function saveParsedData(array &$browscap_data) {
// Prepare the data for insertion.
$import_data = [];
foreach ($browscap_data as $key => $values) {
// Store the current value.
$original_values = $values;
// Replace '*?' with '%_'.
$user_agent = strtr($key, '*?', '%_');
// Remove trailing spaces to prevent "duplicate entry" errors. Databases
// such as MySQL do not preserve trailing spaces when storing VARCHARs.
$user_agent = rtrim($user_agent);
// Change all array keys to lowercase.
$original_values = array_change_key_case($original_values);
// Add to array of data to import.
$import_data[$user_agent] = $original_values;
// Remove processed data to reduce memory usage.
unset($browscap_data[$key]);
}
$query = db_insert('browscap')
->fields([
'useragent',
'data',
]);
foreach ($import_data as $user_agent => $values) {
// Recurse through the available user agent information.
$previous_parent = NULL;
$parent = isset($values['parent']) ? $values['parent'] : FALSE;
while ($parent && $parent !== $previous_parent) {
$parent_values = isset($import_data[$parent]) ? $import_data[$parent] : [];
$values = array_merge($parent_values, $values);
$previous_parent = $parent;
$parent = isset($parent_values['parent']) ? $parent_values['parent'] : FALSE;
}
// Do not import DefaultProperties user agent.
// It is currently only needed for inheriting properties prior to import.
if ($user_agent == 'DefaultProperties') {
continue;
}
$query
->values([
'useragent' => $user_agent,
'data' => serialize($values),
]);
}
$query
->execute();
}