function apachesolr_environment_load_subrecords in Apache Solr Search 6.3
Same name and namespace in other branches
- 8 apachesolr.module \apachesolr_environment_load_subrecords()
- 7 apachesolr.module \apachesolr_environment_load_subrecords()
Export callback to load the view subrecords, which are the index bundles.
1 call to apachesolr_environment_load_subrecords()
- apachesolr_load_all_environments in ./
apachesolr.module - Function that loads all the environments
File
- ./
apachesolr.module, line 2736 - Integration with the Apache Solr search application.
Code
function apachesolr_environment_load_subrecords(&$environments) {
if (empty($environments)) {
// Nothing to do.
return;
}
$query = "SELECT env_id, entity_type, bundle\n FROM {apachesolr_index_bundles}\n WHERE env_id IN (" . db_placeholders($environments, 'varchar') . ")\n ORDER BY env_id, entity_type, bundle";
$all_index_bundles_results = db_query($query, array_keys($environments));
$all_index_bundles_keyed = array();
while ($all_index_bundles_result = db_fetch_array($all_index_bundles_results)) {
// bundle variable comes from the extract
extract($all_index_bundles_result);
$all_index_bundles_keyed[$env_id][$entity_type][] = $bundle;
}
$query = "SELECT env_id, name, value\n FROM {apachesolr_environment_variable}\n WHERE env_id IN (" . db_placeholders($environments, 'varchar') . ")\n ORDER BY env_id, name, value";
$all_variables_results = db_query($query, array_keys($environments));
$variables = array();
while ($all_variables_result = db_fetch_array($all_variables_results)) {
extract($all_variables_result);
$variables[$env_id][$name] = unserialize($value);
}
foreach ($environments as $env_id => &$environment) {
$index_bundles = !empty($all_index_bundles_keyed[$env_id]) ? $all_index_bundles_keyed[$env_id] : array();
$conf = !empty($variables[$env_id]) ? $variables[$env_id] : array();
if (is_array($environment)) {
// Environment is an array.
// If we have different values in the database compared with what we
// have in the given environment argument we allow the admin to revert
// the db values so we can stick with a consistent system
if (!empty($environment['index_bundles']) && !empty($index_bundles) && $environment['index_bundles'] !== $index_bundles) {
unset($environment['in_code_only']);
$environment['type'] = 'Overridden';
}
if (!empty($environment['conf']) && !empty($conf) && $environment['conf'] !== $conf) {
unset($environment['in_code_only']);
$environment['type'] = 'Overridden';
}
$environment['index_bundles'] = empty($environment['index_bundles']) || !empty($index_bundles) ? $index_bundles : $environment['index_bundles'];
$environment['conf'] = empty($environment['conf']) || !empty($conf) ? $conf : $environment['conf'];
}
elseif (is_object($environment)) {
// Environment is an object.
if ($environment->index_bundles !== $index_bundles && !empty($index_bundles)) {
unset($environment->in_code_only);
$environment->type = 'Overridden';
}
if ($environment->conf !== $conf && !empty($conf)) {
unset($environment->in_code_only);
$environment->type = 'Overridden';
}
$environment->index_bundles = empty($environment->index_bundles) || !empty($index_bundles) ? $index_bundles : $environment->index_bundles;
$environment->conf = empty($environment->conf) || !empty($conf) ? $conf : $environment->conf;
}
}
}