/**
  * Constructs object and loads files if possible
  *
  * If a key is used files will be tried to be loaded off that key, if base64
  * that will be loaded and finally the files string
  *
  * @param   array   $config      (Optional) An array of config options based
  *                               off app.yml
  * @param   string  $key         (Optional) A sha1 hash to the database table
  * @param   string  $base64      (Optional) A base64 string of files to load
  * @param   string  $fileString  (Optional) A string of files to load
  *
  * @return  void
  */
 public function __construct($config = array(), $key = '', $base64 = '', $fileString = '')
 {
     $this->setConfig($config);
     $files = array();
     if ($key) {
         $files = sfCombineUrl::getFilesByKey($key);
     } else {
         if ($base64) {
             $files = sfCombineUrl::getFilesByBase64($base64);
         } else {
             if ($fileString) {
                 $files = sfCombineUrl::getFiles($fileString, true);
             }
         }
     }
     $this->setFiles($files);
 }
Ejemplo n.º 2
0
/**
 * @see get_combined_javascripts
 */
function get_combined_stylesheets($groups = null, $groupType = sfCombineManager::GROUP_INCLUDE, $onlyUnusedGroups = true, $markGroupsUsed = true)
{
    // because of groups its better to run this through when sfCombine is disabled
    // but just set all files to do not combine
    $sfCombineEnabled = sfConfig::get('app_sfCombinePlugin_enabled', false);
    $manager = sfCombineManager::getCssManager();
    sfConfig::set('symfony.asset.stylesheets_included', true);
    $response = sfContext::getInstance()->getResponse();
    $config = sfConfig::get('app_sfCombinePlugin_css', array());
    $doNotCombine = isset($config['combine_skip']) ? $config['combine_skip'] : array();
    $manager->setSkips(array_merge($manager->getSkips(), $doNotCombine));
    $groupedFiles = $manager->getAssetsByGroup($response->getStylesheets(), $sfCombineEnabled ? $config['combine'] : false, $groups, $groupType, $onlyUnusedGroups, $markGroupsUsed, array(new sfCombineCombinerCss(), 'getAssetPath'));
    $html = '';
    $timestampConfig = sfConfig::get('app_sfCombinePlugin_timestamp', array());
    foreach ($groupedFiles as $fileDetails) {
        if (!$fileDetails['combinable']) {
            $file = $fileDetails['files'];
            if (isset($timestampConfig['uncombinable']) && $timestampConfig['uncombinable'] && $fileDetails['timestamp']) {
                if (strpos($file, '?') !== false) {
                    $file .= '&t=' . $fileDetails['timestamp'];
                } else {
                    $file .= '?t=' . $fileDetails['timestamp'];
                }
            }
            $html .= stylesheet_tag($file, $fileDetails['options']);
        } else {
            $route = isset($config['route']) ? $config['route'] : 'sfCombine';
            $html .= stylesheet_tag(url_for('@' . $route . '?module=sfCombine&action=css&' . sfCombineUrl::getUrlString($fileDetails['files'], $fileDetails['timestamp'])), $fileDetails['options']);
        }
    }
    return $html;
}