Public feed #603482

Something

public text v1 · immutable
Raw Edit
·published 2007-07-04 20:33 UTC
rendered paste body
function certificate_cron() {
  // Get the data
  $_sku_cids = db_query("SELECT skus, cid FROM {certificates}");
  $sku_cids = array();
  while($sku_cid = db_fetch_object($_sku_cids)) {
    $sku_cids[$sku_cid->cid] = explode(',', $sku_cid->skus);
  }
  
  $_uid_skus = db_query("SELECT uid, sku FROM {attendance}");
  $uid_skus = array();
  while($uid_sku = db_fetch_array($_uid_skus)) {
    $uid_skus[$uid_sku['sku']][$uid_sku['uid']] = TRUE;
  }
  // Need this one to know who has already got one
  $_certificates_recieved = db_query("SELECT uid, cid FROM {certificates_recieved}");
  $certificates_recieved = array();
  while($certificate_recieved = db_fetch_array($_certificates_recieved)) {
    $certificates_recieved[$certificate_recieved['uid']][$certificate_recieved['cid']] = TRUE;
  }
  $finished = array();
  foreach($sku_cids as $cid => $skus) {
    $completed = array();
    foreach($skus as $sku) {
      foreach($uid_skus as $_sku => $uid) {
        if($_sku == $sku) {
          $_uid = array_keys($uid);
          $uid = $_uid[0];
          $completed[$uid][] = $sku;
        }
      }
    }
    sort($skus, SORT_NUMERIC);
    foreach($completed as $uid => $user_skus) {
      sort($user_skus, SORT_NUMERIC);
      if($user_skus == $skus) {
        if(!isset($certificates_recieved[$uid][$cid])) {
          // User has completed certificate for the first time
          $finished[] = array('uid' => $uid, 'cid' => $cid);
          $certificates_recieved[$uid][$cid] = TRUE;
        }
      }
    }
  }
  $output = array();
  foreach($finished as $finish) {
    $cert_name = db_fetch_object(db_query("SELECT certificate_name AS cert_name FROM {certificates} WHERE cid = %d", $finish['cid']));
    $user_name = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = %d", $finish['uid']));
    $link = l($user_name->name, 'user/'. $finish['uid'], array(), NULL, NULL, TRUE, FALSE);
    $output[] = $link ." has completed ". $cert_name->cert_name ." certificate";
    db_query("INSERT INTO {certificates_recieved} VALUES(%d, %d)", $finish['cid'], $finish['uid']);
  }
  $output_html = implode("<br />", $output);
  drupal_mail("certificate_completed", variable_get("certificate_email", ""), "Subject goes here", $output_html);
  print $output_html;
}