You are here

function biblio_delete_orphan_authors in Bibliography Module 6.2

Same name and namespace in other branches
  1. 6 biblio.contributors.inc \biblio_delete_orphan_authors()
  2. 7 includes/biblio.contributors.inc \biblio_delete_orphan_authors()
  3. 7.2 includes/biblio.contributors.inc \biblio_delete_orphan_authors()
2 calls to biblio_delete_orphan_authors()
BiblioContributorUnitTest::testBiblioDeleteOrphanAuthors in tests/contributor.test
biblio_cron in ./biblio.module
Implements hook_cron().

File

includes/biblio.contributors.inc, line 303
Functions related to contributors in Drupal biblio module.

Code

function biblio_delete_orphan_authors($force = FALSE) {
  if (variable_get('biblio_auto_orphaned_author_delete', 0) || $force) {
    $active_cids = array();
    $all_cids = array();
    $result = db_query('SELECT cid FROM {biblio_contributor} GROUP BY cid');
    while ($author = db_fetch_object($result)) {
      $active_cids[] = $author->cid;
    }
    $result = db_query('SELECT cid FROM {biblio_contributor_data} GROUP BY cid');
    while ($author = db_fetch_object($result)) {
      $all_cids[] = $author->cid;
    }
    $orphans = array_diff($all_cids, $active_cids);
    if (!empty($orphans)) {
      db_query('DELETE FROM {biblio_contributor_data} WHERE cid IN (' . implode(',', $orphans) . ')');
      $count = db_affected_rows();
      $message = t('%count orphaned authors were deleted from the biblio_contributor_data table.', array(
        '%count' => $count,
      ));
      watchdog('biblio_cron', $message);
    }
  }
}