All pastes #68582 Raw Edit

Mine

public text v1 · immutable
#68582 ·published 2006-06-21 20:35 UTC
rendered paste body
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);
  }
}