30 March 2014 14:37
Cron и Batch API для ведения статистической информации.
<?php /** * Implements hook_cron(). */ function project_plans_cron() { $interval = variable_get('project_plans_cron_interval', 60 * 60 * 24 * 14); if (time() >= variable_get('project_plans_cron_next_ex', 0)) { $projects = project_api_projects_list(); $queue = DrupalQueue::get('update_project_staff_info'); foreach ($projects as $project_nid) { $result = project_api_project_i($project_nid); $queue->createItem($result[$project_nid]); } variable_set('project_plans_cron_next_ex', time() + $interval); } } /** * Implements hook_cron_queue_info(). */ function project_plans_cron_queue_info() { $queues['update_project_staff_info'] = array( 'worker callback' => 'update_project_staff_info', 'time' => 120, ); return $queues; } function update_project_staff_info($project_info) { $node = node_load($project_info->nid); $node->project_m_plan[LANGUAGE_NONE][0]['value'] = $project_info->PLAN; $node->project_m_fact[LANGUAGE_NONE][0]['value'] = $project_info->FACT; $node->project_m_route[LANGUAGE_NONE][0]['value'] = $project_info->ROUTE; // Make this change a new revision $node->revision = 1; $node->log = t('This node :node was programmatically updated at :date by project_plans module. Staff fact number - :fact. Staff plan number - :plan. Roate of staff - :route', array( ':node' => $project_info->nid, ':date' => date('c'), ':plan' => $project_info->PLAN, ':fact' => $project_info->FACT, ':route' => $project_info->ROUTE, )); node_save($node); watchdog('content', '@type: for %title node(:nid) was created a new revision.', array('@type' => $node->type, ':nid' => $node->nid, '%title' => $node->title)); } ?>