function og2list_cron() { $time_begin = time(); $lockfile = og2list_lockfile(); // obtain lock to prevent corruption $fp = @fopen(file_create_path($lockfile), 'w'); if (flock($fp, LOCK_EX)) { // initialize random number generator mt_srand((double)microtime()*1000000); // store the original cron user og2list_switch_user(); $result = db_query_range('SELECT c.* FROM {og2list_incoming_groups} g INNER JOIN {og2list_incoming_content} c ON g.mid = c.mid WHERE g.oid != 0 ORDER BY c.mid ASC', 0, variable_get('og2list_incoming_number', 10)); while ($mail = db_fetch_object($result)) { $result2 = db_query('SELECT oid FROM {og2list_incoming_groups} WHERE mid = %d', $mail->mid); $mail->og_nids = array(); while ($group_id = db_fetch_object($result2)) { $mail->og_nids[] = $group_id->oid; } if (count($mail->og_nids)) { $status = og2list_process_mail($mail); watchdog('debug', serialize($status)); if ($status) { db_query('DELETE FROM {og2list_incoming_content} WHERE mid = %d', $mail->mid); db_query('DELETE FROM {og2list_incoming_groups} WHERE mid = %d', $mail->mid); } } } if (module_exist('mailcommand')) { $result = db_query_range('SELECT c.* FROM {og2list_incoming_groups} g INNER JOIN {og2list_incoming_content} c ON g.mid = c.mid WHERE g.oid = 0 ORDER BY c.mid ASC', 0, 10); while ($mail = db_fetch_object($result)) { $status = mailcommand_process_mail($mail); if ($status) { db_query('DELETE FROM {og2list_incoming_content} WHERE mid = %d', $mail->mid); db_query('DELETE FROM {og2list_incoming_groups} WHERE mid = %d', $mail->mid); } } } // revert to the original cron user og2list_switch_user(); $time_end = time(); $time_diff = $time_end - $time_begin; watchdog('og2list', 'og2list took this long: ' . $time_diff); og2list_unlock($fp); } else { watchdog('og2list', t('Could not obtain og2list lock.'), WATCHDOG_ERROR); } }