_node_access_rebuild_batch_operation
modules/node/node.module, строка 2354
- Версии
- 6
_node_access_rebuild_batch_operation(&$context)
Batch operation for node_access_rebuild_batch.
This is a mutlistep operation : we go through all nodes by packs of 20. The batch processing engine interrupts processing and sends progress feedback after 1 second execution time.
Связанные темы
Код
<?php
function _node_access_rebuild_batch_operation(&$context) {
if (empty($context['sandbox'])) {
// Initiate multistep processing.
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_node'] = 0;
$context['sandbox']['max'] = db_result(db_query('SELECT COUNT(DISTINCT nid) FROM {node}'));
}
// Process the next 20 nodes.
$limit = 20;
$result = db_query_range("SELECT nid FROM {node} WHERE nid > %d ORDER BY nid ASC", $context['sandbox']['current_node'], 0, $limit);
while ($row = db_fetch_array($result)) {
$loaded_node = node_load($row['nid'], NULL, TRUE);
// To preserve database integrity, only aquire grants if the node
// loads successfully.
if (!empty($loaded_node)) {
node_access_acquire_grants($loaded_node);
}
$context['sandbox']['progress']++;
$context['sandbox']['current_node'] = $loaded_node->nid;
}
// Multistep processing : report progress.
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии