/**
  * Retrieves the base supercache directory (absolute or relative)
  *
  * @param  boolean $absolute -- if true, gives the filesystem path. If false,
  *                              gives the web path.
  * @return string
  */
 public static function getSuperCacheDir($absolute = false)
 {
     if ($absolute) {
         return sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . sfDynamicsConfig::getSuperCacheDir();
     } else {
         return '/' . sfDynamicsConfig::getSuperCacheDir();
     }
 }
 public function getFilteredContent(sfDynamicsAssetCollectionDefinition $package)
 {
     $code = parent::getFilteredContent($package);
     // @todo move isSomethingEnabled to $package->isSomethingEnabled()
     if (sfDynamicsConfig::isStylesheetImportResolutionEnabled($package)) {
         $callback = create_function('$v', sprintf('return file_get_contents(%s.\'/\'.$v[2]);', var_export(dirname($this->path), true)));
         $code = preg_replace_callback('/@import\\s+url\\((["\']?)([a-z\\/\\._-]+)(\\1)\\);/i', $callback, $code);
     }
     $findUrlRegexp = '/url\\((\'|")?([^\\/][^\'"]+)(\'|")?\\)/iU';
     if (isset($this->options['image_path_prefix'])) {
         $callback = create_function('$v', sprintf('return %s::addImagePrefixPathCallback($v, \'%s\');', __CLASS__, $this->options['image_path_prefix']));
         $code = preg_replace_callback($findUrlRegexp, $callback, $code);
     }
     if (sfDynamicsConfig::isStylesheetRelativePathsResolutionEnabled($package)) {
         $callback = create_function('$v', sprintf('return %s::resolveRelativePathsCallback($v, \'%s\');', __CLASS__, $this->path));
         $code = preg_replace_callback($findUrlRegexp, $callback, $code);
     }
     return sprintf('%s /* */', $code);
     // this avoid CSS hacks to break next stylesheet
 }
<html>
  <head>
    <link rel="stylesheet" type="text/css" media="screen" href="/bar.css" />
    <script type="text/javascript" src="/bar.js"></script>
  <link rel="stylesheet" type="text/css" media="screen" href="/dynamics/foo.css" />
<script type="text/javascript" src="/dynamics/foo.js"></script>
</head>
  <body>
    <p>Lorem ipsum</p>
  </body>
</html>
END;
    $t->is($manager->filterContent(new sfEvent('lorem', 'event.name'), $content), $waited, '->addSfDynamicsTags() inserts tags at the bottom of <head> if position "append" and placeholder not found "(default)"');
}
sfConfig::set('app_sfDynamicsPlugin_assets_position_in_head', 'prepend');
if ('prepend' !== sfDynamicsConfig::getAssetsPositionInHead()) {
    $t->error('We can’t test prepend inclusion');
    $t->skip('skip 1 tests', 1);
} else {
    $content = <<<END
<html>
  <head>
    <link rel="stylesheet" type="text/css" media="screen" href="/bar.css" />
    <script type="text/javascript" src="/bar.js"></script>
  </head>
  <body>
    <p>Lorem ipsum</p>
  </body>
</html>
END;
    $waited = <<<END
 public function filterContent(sfEvent $event, $content)
 {
     $prepend = sfDynamicsConfig::getAssetsPositionInHead() == 'prepend';
     $response = $event->getSubject();
     $pos = $prepend ? strpos($content, '<head>') + 6 : strpos($content, '</head>');
     if (false !== $pos) {
         $html = $this->generateAssetsHtml();
         if ($html) {
             $content = substr($content, 0, $pos) . "\n" . $html . substr($content, $pos);
         }
     }
     return $content;
 }
 /**
  * Add sfDynamics css and js tags to the content
  */
 protected function addSfDynamicsTags($content, $ext)
 {
     if (!in_array($ext, array('css', 'js'))) {
         throw new sfDynamicsException(sprintf('"%s" is an unknown file extension', $type));
     }
     // Retrieve placeholders dedicated to this extension
     $placeholder = call_user_func(array('sfDynamicsConfig', 'get' . ucfirst($ext) . 'Placeholder'));
     // Retrieve the tags to insert
     if (!($sfDynamicTags = $this->{'generate' . ucfirst($ext) . 'Html'}())) {
         // Nothing to add, same content whithout placeholder
         return str_ireplace($placeholder, '', $content);
     }
     if (false !== stripos($content, $placeholder)) {
         return str_ireplace($placeholder, $sfDynamicTags, $content);
     }
     // Placeholder not found, insertion in the <head> section
     if ('prepend' === sfDynamicsConfig::getAssetsPositionInHead()) {
         return str_ireplace('<head>', '<head>' . "\n" . $sfDynamicTags, $content);
     }
     return str_ireplace('</head>', $sfDynamicTags . "\n" . '</head>', $content);
 }
 /**
  * generateSupercache - creates supercache file for given packages
  *
  * @param mixed $url
  * @param mixed $packages
  * @param mixed $assets
  * @param mixed $type
  * @return void
  */
 public function generateSupercache($url, $packages, $assets, $type)
 {
     if (!sfDynamicsConfig::isSupercacheEnabled()) {
         throw new BadMethodCallException('Supercache is disabled.');
     }
     if (!file_exists($filename = sfConfig::get('sf_web_dir') . '/' . $url)) {
         $src = '';
         foreach ($packages as $name => $package) {
             if ($renderedSrc = trim($this->getAsset($name, $package, $type))) {
                 $src .= '/* ' . $name . ' */ ' . $renderedSrc . "\n";
             }
         }
         @file_put_contents($filename, $src);
         if (!file_exists($filename)) {
             throw new sfException('Supercache could not be written: ' . $filename);
         }
     }
 }