function xmlsitemap_rebuild_batch_fetch in XML sitemap 7.2
Same name and namespace in other branches
- 8 xmlsitemap.module \xmlsitemap_rebuild_batch_fetch()
- 6.2 xmlsitemap.generate.inc \xmlsitemap_rebuild_batch_fetch()
- 2.x xmlsitemap.module \xmlsitemap_rebuild_batch_fetch()
Batch callback; fetch and add the sitemap links for a specific entity.
1 string reference to 'xmlsitemap_rebuild_batch_fetch'
- xmlsitemap_get_link_info in ./
xmlsitemap.module - Returns information about supported sitemap link types.
File
- ./
xmlsitemap.generate.inc, line 472 - Sitemap generation and rebuilding functions for the xmlsitemap module.
Code
function xmlsitemap_rebuild_batch_fetch($entity, &$context) {
if (!isset($context['sandbox']['info'])) {
$context['sandbox']['info'] = xmlsitemap_get_link_info($entity);
$context['sandbox']['progress'] = 0;
$context['sandbox']['last_id'] = 0;
}
$info = $context['sandbox']['info'];
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', $entity);
$query
->entityCondition('entity_id', $context['sandbox']['last_id'], '>');
$query
->addTag('xmlsitemap_link_bundle_access');
$query
->addTag('xmlsitemap_rebuild');
$query
->addMetaData('entity', $entity);
$query
->addMetaData('entity_info', $info);
if ($types = xmlsitemap_get_link_type_enabled_bundles($entity)) {
$query
->entityCondition('bundle', $types, 'IN');
}
else {
// If no enabled bundle types, skip everything else.
return;
}
if (!isset($context['sandbox']['max'])) {
$count_query = clone $query;
$count_query
->count();
$context['sandbox']['max'] = $count_query
->execute();
if (!$context['sandbox']['max']) {
// If there are no items to process, skip everything else.
return;
}
}
// PostgreSQL cannot have the ORDERED BY in the count query.
$query
->entityOrderBy('entity_id');
$limit = 20;
$query
->range(0, $limit);
$result = $query
->execute();
$ids = array_keys($result[$entity]);
$info['xmlsitemap']['process callback']($ids);
$context['sandbox']['last_id'] = end($ids);
$context['sandbox']['progress'] += count($ids);
$context['message'] = t('Now processing %entity @last_id (@progress of @count).', array(
'%entity' => $entity,
'@last_id' => $context['sandbox']['last_id'],
'@progress' => $context['sandbox']['progress'],
'@count' => $context['sandbox']['max'],
));
if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
$context['finished'] = 1;
}
else {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
}