You are here

function advagg_insert_aggregate in Advanced CSS/JS Aggregation 7.2

Insert/Update data in the advagg_aggregates table.

Parameters

array $files: List of files in the aggregate including files meta data.

string $aggregate_filenames_hash: Hash of the groupings of files.

Return value

bool Return TRUE if anything was written to the database.

1 call to advagg_insert_aggregate()
advagg_insert_update_db in ./advagg.inc
Insert/Update data in advagg tables.

File

./advagg.inc, line 94
Advanced CSS/JS aggregation module.

Code

function advagg_insert_aggregate(array $files, $aggregate_filenames_hash) {

  // Record if a database write was done.
  $write_done = FALSE;

  // Check if the aggregate is in the database.
  $files_in_db = array();
  $query = db_select('advagg_aggregates', 'aa')
    ->fields('aa', array(
    'filename_hash',
  ))
    ->condition('aggregate_filenames_hash', $aggregate_filenames_hash)
    ->orderBy('aa.porder', 'ASC')
    ->execute();
  foreach ($query as $row) {
    $files_in_db[$row->filename_hash] = (array) $row;
  }
  $count = 0;
  foreach ($files as $file_meta_data) {
    ++$count;

    // Skip if the file already exists in the aggregate.
    if (!empty($files_in_db[$file_meta_data['filename_hash']])) {
      continue;
    }

    // Store settings for this file that depend on how it was added.
    $settings = array();
    if (isset($file_meta_data['media_query'])) {
      $settings['media'] = $file_meta_data['media_query'];
    }

    // Write record into the database.
    $record = array(
      'aggregate_filenames_hash' => $aggregate_filenames_hash,
      'filename_hash' => $file_meta_data['filename_hash'],
      'porder' => $count,
      'settings' => serialize($settings),
    );
    $return = db_merge('advagg_aggregates')
      ->key(array(
      'aggregate_filenames_hash' => $record['aggregate_filenames_hash'],
      'filename_hash' => $record['filename_hash'],
    ))
      ->insertFields($record)
      ->execute();
    if ($return) {
      $write_done = TRUE;
    }
  }
  return $write_done;
}