You are here

function advagg_insert_bundle_db in Advanced CSS/JS Aggregation 7

Same name and namespace in other branches
  1. 6 advagg.module \advagg_insert_bundle_db()

Insert info into the advagg_files and advagg_bundles database.

Parameters

$files: List of files in the proposed bundle.

$filetype: css or js.

$bundle_md5: Bundle's machine name.

$root: Is this a root bundle.

1 call to advagg_insert_bundle_db()
advagg_get_filename in ./advagg.module
Given a list of files; return back the aggregated filename.

File

./advagg.module, line 1104
Advanced CSS/JS aggregation module

Code

function advagg_insert_bundle_db($files, $filetype, $bundle_md5, $root) {
  $lock_name = 'advagg_insert_bundle_db' . $bundle_md5;
  if (!lock_acquire($lock_name)) {

    // If using async, wait before returning to give the other request time
    // to complete.
    if (variable_get('advagg_aggregate_mode', ADVAGG_AGGREGATE_MODE) < 2) {
      lock_wait($lock_name);
    }
    return;
  }

  // Double check that the bundle doesn't exist now that we are in a lock.
  $bundle_exists = db_query("SELECT 1 FROM {advagg_bundles} WHERE bundle_md5 = :bundle_md5", array(
    ':bundle_md5' => $bundle_md5,
  ))
    ->fetchField();
  if ($bundle_exists) {
    lock_release($lock_name);
    return;
  }
  foreach ($files as $order => $filename) {
    $filename_md5 = md5($filename);

    // Insert file into the advagg_files table if it doesn't exist.
    $checksum = db_query("SELECT checksum FROM {advagg_files} WHERE filename_md5 = :filename_md5", array(
      ':filename_md5' => $filename_md5,
    ))
      ->fetchField();
    if (empty($checksum)) {
      $checksum = advagg_checksum($filename);

      // TODO Please review the conversion of this statement to the D7 database API syntax.

      /* db_query("INSERT INTO {advagg_files} (filename, filename_md5, checksum, filetype, filesize) VALUES ('%s', '%s', '%s', '%s', %d)", $filename, $filename_md5, $checksum, $filetype, @filesize($filename)) */
      $id = db_insert('advagg_files')
        ->fields(array(
        'filename' => $filename,
        'filename_md5' => $filename_md5,
        'checksum' => $checksum,
        'filetype' => $filetype,
        'filesize' => filesize($filename),
      ))
        ->execute();
    }

    // Create the entries in the advagg_bundles table.
    // TODO Please review the conversion of this statement to the D7 database API syntax.

    /* db_query("INSERT INTO {advagg_bundles} (bundle_md5, filename_md5, counter, porder, root, timestamp) VALUES ('%s', '%s', '%d', '%d', '%d', '%d')", $bundle_md5, $filename_md5, 0, $order, $root, REQUEST_TIME) */
    $id = db_insert('advagg_bundles')
      ->fields(array(
      'bundle_md5' => $bundle_md5,
      'filename_md5' => $filename_md5,
      'counter' => 0,
      'porder' => $order,
      'root' => $root,
      'timestamp' => REQUEST_TIME,
    ))
      ->execute();
  }
  lock_release($lock_name);
}