function ctools_css_cache

Write a chunk of CSS to a temporary cache file and return the file name.

This function optionally filters the CSS (always compressed, if so) and generates a unique filename based upon md5. It returns that filename that can be used with drupal_add_css(). Note that as a cache file, technically this file is volatile so it should be checked before it is used to ensure that it exists.

You can use file_exists() to test for the file and file_delete() to remove it if it needs to be cleared.

Parameters

$css: A chunk of well-formed CSS text to cache.

bool $filter: If TRUE the css will be filtered. If FALSE the text will be cached as-is.

Return value

string The filename the CSS will be cached in.

3 calls to ctools_css_cache()
CtoolsCSSObjectCache::testCssCache in tests/css_cache.test
Tests the custom CSS cache handler.
ctools_css_retrieve in includes/css.inc
Retrieve a filename associated with an id of previously cached CSS.
ctools_css_store in includes/css.inc
Store CSS with a given id and return the filename to use.
1 string reference to 'ctools_css_cache'
ctools_update_6002 in ./ctools.install
Add the new css cache table.

File

includes/css.inc, line 159

Code

function ctools_css_cache($css, $filter = TRUE) {
    if ($filter) {
        $css = ctools_css_filter($css);
    }
    // Create the css/ within the files folder.
    $path = 'public://ctools/css';
    if (!file_prepare_directory($path, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS)) {
        drupal_set_message(t('Unable to create CTools CSS cache directory. Check the permissions on your files directory.'), 'error');
        return;
    }
    // @todo Is this slow? Does it matter if it is?
    $filename = $path . '/' . md5($css) . '.css';
    // Generally md5 is considered unique enough to sign file downloads.
    // So this replaces already existing files based on the assumption that two
    // files with the same hash are identical content wise.
    // If we rename, the cache folder can potentially fill up with thousands of
    // files with the same content.
    $filename = file_unmanaged_save_data($css, $filename, FILE_EXISTS_REPLACE);
    return $filename;
}