Populate the filesize_processed field in the advagg_files table.

File

./advagg.install, line 607

Code

function advagg_update_7211(&$sandbox) {
    drupal_load('module', 'advagg');
    module_load_include('inc', 'advagg', 'advagg');
    $types = array(
        'css',
        'js',
    );
    // If first run of this update function then set progress variables.
    if (!isset($sandbox['progress'])) {
        $count = db_select('advagg_files', 'af')->fields('af')
            ->condition('filesize_processed', 0)
            ->countQuery()
            ->execute()
            ->fetchField();
        $sandbox['progress'] = 0;
        $sandbox['max'] = $count;
    }
    // How many items should be processed per pass.
    $limit = 20;
    foreach ($types as $type) {
        $query = db_select('advagg_files', 'af')->fields('af')
            ->condition('filesize_processed', 0)
            ->condition('filetype', $type)
            ->range($sandbox['progress'], $limit)
            ->execute();
        foreach ($query as $row) {
            $row->filesize_processed = (int) advagg_generate_filesize_processed($row->filename, $type);
            if (!empty($row->filesize_processed)) {
                $write = (array) $row;
                db_merge('advagg_files')->key(array(
                    'filename_hash' => $write['filename_hash'],
                ))
                    ->fields($write)
                    ->execute();
            }
        }
    }
    // Update our progress information.
    $sandbox['progress'] += $limit;
    // Set the value for finished.
    $sandbox['#finished'] = $sandbox['progress'] >= $sandbox['max'] ? TRUE : $sandbox['progress'] / $sandbox['max'];
    if ($sandbox['#finished']) {
        return t('The filesize_processed field has been populated inside the advagg_files table.');
    }
}