Test all given files with the w3c validator.

Return value

array An array of files with the result from the w3c validator.

6 calls to advagg_validator_test_css_files()
advagg_validator_admin_test_advagg_css_directory_callback dans advagg_validator/advagg_validator.admin.inc
Display file info via ajax callback.
advagg_validator_admin_test_advagg_css_directory_submit dans advagg_validator/advagg_validator.admin.inc
Display file info in a drupal message.
advagg_validator_admin_test_advagg_css_subdirectory_callback dans advagg_validator/advagg_validator.admin.inc
Display file info via ajax callback.
advagg_validator_admin_test_advagg_css_subdirectory_submit dans advagg_validator/advagg_validator.admin.inc
Display file info in a drupal message.
advagg_validator_test_advagg_css dans advagg_validator/advagg_validator.inc
Test all css files used by AdvAgg.

... See full list

Fichier

advagg_validator/advagg_validator.inc, line 69

Code

function advagg_validator_test_css_files($files, $options = array()) {
    $output = array();
    foreach ($files as $filename) {
        // Skip missing files.
        if (!file_exists($filename)) {
            continue;
        }
        $file_contents = (string) @advagg_file_get_contents($filename);
        $lines = file($filename);
        $filename_hash = drupal_hash_base64($filename);
        $content_hash = drupal_hash_base64($file_contents);
        // See if this file needs to be scanned.
        $file_ok = db_select('advagg_validator', 'av')->fields('av', array(
            'content_hash',
            'data',
        ))
            ->condition('filename_hash', $filename_hash)
            ->condition('filetype', 'css')
            ->execute()
            ->fetchAllKeyed();
        if (!empty($file_ok)) {
            foreach ($file_ok as $content_hash_db => $serialized_data) {
                if ($content_hash_db == $content_hash) {
                    $output[$filename] = unserialize($serialized_data);
                    continue 2;
                }
            }
        }
        // Run jigsaw.w3.org validator.
        $output[$filename]['jigsaw.w3.org'] = advagg_validator_test_css_file_w3c($filename, $options);
        // Get extra context for errors.
        if (!empty($output[$filename]['jigsaw.w3.org']['errors'])) {
            foreach ($output[$filename]['jigsaw.w3.org']['errors'] as &$value) {
                if (isset($value['line'])) {
                    $value['linedata'] = $lines[$value['line'] - 1];
                    if (strlen($value['linedata']) > 512) {
                        unset($value['linedata']);
                    }
                }
            }
            unset($value);
        }
        if (!empty($output[$filename]['jigsaw.w3.org']['warnings'])) {
            foreach ($output[$filename]['jigsaw.w3.org']['warnings'] as &$value) {
                if (isset($value['line'])) {
                    $value['linedata'] = $lines[$value['line'] - 1];
                    if (strlen($value['linedata']) > 512) {
                        unset($value['linedata']);
                    }
                }
            }
            unset($value);
        }
        // Save data.
        if (empty($output[$filename]['jigsaw.w3.org']['error'])) {
            $record = array(
                'filename' => $filename,
                'filename_hash' => $filename_hash,
                'content_hash' => $content_hash,
                'filetype' => 'css',
                'data' => serialize($output[$filename]),
            );
            db_merge('advagg_validator')->key(array(
                'filename_hash' => $record['filename_hash'],
            ))
                ->fields($record)
                ->execute();
        }
    }
    return $output;
}