You are here

function advagg_remove_old_unused_aggregates in Advanced CSS/JS Aggregation 7.2

Delete aggregates that have not been accessed in the last 6 weeks.

Return value

int Count of the number of rows removed from the databases.

2 calls to advagg_remove_old_unused_aggregates()
advagg_admin_remove_old_unused_aggregates_button in ./advagg.admin.inc
Delete aggregates that have not been accessed in the last 6 weeks.
advagg_cron in ./advagg.module
Implements hook_cron().

File

./advagg.cache.inc, line 627
Advanced CSS/JS aggregation module.

Code

function advagg_remove_old_unused_aggregates() {
  $advagg_aggregates_versions_del = 0;
  $advagg_aggregates_del = 0;

  // Find orphaned aggregate versions entries.
  // Create main query.
  $query = db_select('advagg_aggregates_versions', 'aav')
    ->fields('aav', array(
    'aggregate_filenames_hash',
  ))
    ->groupBy('aav.aggregate_filenames_hash');

  // Create join and add in query comment.
  $query
    ->leftjoin('advagg_aggregates', 'aa', 'aa.aggregate_filenames_hash=aav.aggregate_filenames_hash');
  $query
    ->isNull('aa.aggregate_filenames_hash');
  $query
    ->comment('Query called from ' . __FUNCTION__ . '()');
  $results = $query
    ->execute();

  // If we have an orphaned db entry, delete it.
  if (!empty($results)) {
    foreach ($results as $row) {
      $advagg_aggregates_versions_del += db_delete('advagg_aggregates_versions')
        ->condition('aggregate_filenames_hash', $row->aggregate_filenames_hash)
        ->execute();
    }
  }

  // Delete aggregate versions that have not been accessed in the last 45 days.
  $advagg_aggregates_versions_del += db_delete('advagg_aggregates_versions')
    ->condition('atime', REQUEST_TIME - variable_get('advagg_remove_old_unused_aggregates_time', ADVAGG_REMOVE_OLD_UNUSED_AGGREGATES_TIME), '<')
    ->execute();

  // See if any aggregates are orphaned now.
  // Create main query.
  $query = db_select('advagg_aggregates', 'aa')
    ->fields('aa', array(
    'aggregate_filenames_hash',
  ))
    ->groupBy('aa.aggregate_filenames_hash');

  // Create join and add in query comment.
  $query
    ->leftjoin('advagg_aggregates_versions', 'aav', 'aa.aggregate_filenames_hash=aav.aggregate_filenames_hash');
  $query
    ->isNull('aav.aggregate_filenames_hash');
  $query
    ->comment('Query called from ' . __FUNCTION__ . '()');
  $results = $query
    ->execute();

  // If we have an orphaned db entry, delete it.
  if (!empty($results)) {
    foreach ($results as $row) {
      $advagg_aggregates_del += db_delete('advagg_aggregates')
        ->condition('aggregate_filenames_hash', $row->aggregate_filenames_hash)
        ->execute();
    }
  }

  // Return the total count of entires removed from the database.
  return $advagg_aggregates_versions_del + $advagg_aggregates_del;
}