Replace inline drupal settings script.

Parameters

string $subject: Inline js.

string $replace: JS settings replacement.

Return value

string Returns the subject with the replacement in place if this is a drupal settings json blob.

1 call to advagg_replace_drupal_settings_string()
_advagg_process_html in ./advagg.module
Replacement for template_process_html().

File

./advagg.module, line 2481

Code

function advagg_replace_drupal_settings_string($subject, $replace) {
    $start = strpos($subject, 'jQuery.extend(Drupal.settings,');
    if ($start === FALSE) {
        return $subject;
    }
    // Find the end of the Drupal.settings.
    $script_end = stripos($subject, '</script>', $start);
    $settings_substring = substr($subject, $start, $script_end - $start);
    $json_end = strripos($settings_substring, '});');
    // Check if LABjs has added an additional wrapper around Drupal settings.
    $script_tag_start = strripos(substr($subject, 0, $start), '<script');
    if (strpos(substr($subject, $script_tag_start, $start), '$L.wait(') !== FALSE) {
        // Refine JSON end position.
        $_json_end = strripos(substr($settings_substring, 0, $json_end), '});');
        if ($_json_end !== FALSE) {
            $json_end = $_json_end;
        }
    }
    // Replace Drupal.settings json.
    $subject = substr($subject, 0, $start + 30) . $replace . substr($subject, $json_end + $start + 1);
    return $subject;
}