/** * @todo add typehinting */ function main(&$param, &$obj) { $xml = new \DOMDocument('1.0', 'utf-8'); $xml->substituteEntities = FALSE; $xml->loadHTML(mb_convert_encoding($param['pObj']->content, 'HTML-ENTITIES', "UTF-8")); $xPath = new \DOMXpath($xml); $linkElements = $xPath->query("//link[@rel='stylesheet']"); #echo "KayStrobach\Dyncss\Hooks\TslibFeContentPostProcAllHook - elements found " . $linkElements->length . "\n"; if ($linkElements->length > 0) { for ($i = 0; $i < $linkElements->length; $i++) { $cssFile = $linkElements->item($i)->attributes->getNamedItem('href')->nodeValue; $questionMarkPos = strpos($cssFile, '?'); if ($questionMarkPos !== FALSE) { $cssFile = substr($cssFile, 0, $questionMarkPos); } $compiledFile = \KayStrobach\Dyncss\Service\DyncssService::getCompiledFile($cssFile); if ($compiledFile !== $cssFile) { #$linkElements->item($i)->attributes->getNamedItem('href')->nodeValue = $compiledFile . '?' . filemtime($compiledFile); $param['pObj']->content = str_replace($cssFile, $compiledFile, $param['pObj']->content); } } } #$param['pObj']->content = $xml->saveHTML(); // @todo remove refactored comments ... }
/** * @param string $file * @throws StopActionException */ public function compileCommand($file = '') { if (!file_exists($file)) { $this->outputLine($file . ' not found'); throw new StopActionException(); } $this->outputLine(DyncssService::getCompiledFile($file)); }
/** * This function iterates over the arrays and rebuild them to keep the order, as keynames may change. * * @param array $params * @param \TYPO3\CMS\Core\Page\PageRenderer $pagerenderer */ public function execute(&$params, &$pagerenderer) { if (!is_array($params['cssFiles'])) { return; } $cssFilesArray = []; foreach ($params['cssFiles'] as $cssFile => $cssFileSettings) { $compiledFile = \KayStrobach\Dyncss\Service\DyncssService::getCompiledFile($cssFile); if ($compiledFile !== $cssFile) { $cssFileSettings['file'] = $compiledFile; //needed for TYPO3 4.6+ ;) $cssFileSettings['compress'] = 0; $cssFilesArray[$compiledFile] = $cssFileSettings; } else { $cssFilesArray[$cssFile] = $cssFileSettings; } } $params['cssFiles'] = $cssFilesArray; }
/** * @test */ public function getCompiledFileCss() { $this->assertEquals('test.css', \KayStrobach\Dyncss\Service\DyncssService::getCompiledFile('test.css'), 'check wether css files are untouched'); }