regenerates a missing css file.

Paramètres

$filename: filename

$type: css or js

Return value

false if bundle couldn't be generated.

2 calls to advagg_missing_regenerate()
advagg_missing_css dans includes/missing.inc
Menu Callback; regenerates a missing css file.
advagg_missing_js dans includes/missing.inc
Menu Callback; regenerates a missing js file.

Fichier

includes/missing.inc, line 45

Code

function advagg_missing_regenerate() {
    global $base_path, $conf;
    // Get filename from request.
    $arg = arg();
    $filename = array_pop($arg);
    $filename = explode('?', $filename);
    $filename = array_shift($filename);
    $data = advagg_get_bundle_from_filename($filename);
    if (is_array($data)) {
        list($type, $md5, $counter) = $data;
    }
    else {
        return $data;
    }
    $_GET['redirect_counter'] = isset($_GET['redirect_counter']) ? intval($_GET['redirect_counter']) : 0;
    if ($_GET['redirect_counter'] > 5) {
        watchdog('advagg', 'This request could not generate correctly. Loop detected. Request data: %info', array(
            '%info' => $_GET['q'],
        ));
        return t('In a Loop.');
    }
    // Counter in database.
    $counter_in_db = db_query("SELECT counter FROM {advagg_bundles} WHERE bundle_md5 = :bundle_md5", array(
        ':bundle_md5' => $md5,
    ))->fetchField();
    if ($counter_in_db === FALSE) {
        return t('Not a valid bundle.');
    }
    // Cast counter as int
    $counter_in_db = intval($counter_in_db);
    $counter = intval($counter);
    // Set file(s) in cache to FALSE.
    $arg[] = $filename;
    cache_set(implode('/', $arg), FALSE, 'cache_advagg', TRUE);
    advagg_missing_remove_cache($md5);
    // Build filepath.
    list($css_path, $js_path) = advagg_get_root_files_dir();
    if ($type == 'js') {
        $file_type_path = $js_path;
    }
    if ($type == 'css') {
        $file_type_path = $css_path;
    }
    $new_filename = advagg_build_filename($type, $md5, $counter);
    $filepath = $file_type_path . '/' . $new_filename;
    // Only process if we got an older counter.
    // If we have an out of range counter see if a simlar file exists and serve
    // that up.
    if ($counter > $counter_in_db || $counter < 0) {
        $new_filename = advagg_build_filename($type, $md5, $counter_in_db);
        $filepath = $file_type_path . '/' . $new_filename;
        advagg_missing_send_file($filepath, advagg_build_uri($filepath), $type);
        exit;
    }
    // Break connection and do generation in the background.
    if (!empty($_GET['generator'])) {
        advagg_missing_async_opp($md5 . ' ' . $counter);
    }
    // Rebuild file.
    $conf['advagg_async_generation'] = FALSE;
    $good = advagg_rebuild_bundle($md5, $counter, TRUE);
    if (!$good) {
        watchdog('advagg', 'This request could not generate correctly. Aggregate not generated. Request data: %info', array(
            '%info' => $_GET['q'],
        ));
        return t('Rebuild Failed.');
    }
    // Serve direct or redirect to file.
    $_GET['redirect_counter']++;
    $uri = $base_path . $_GET['q'] . '?redirect_counter=' . $_GET['redirect_counter'];
    advagg_missing_send_file($filepath, $uri, $type);
    exit;
}