Exemplo n.º 1
0
 function testBlockedCombinedJavascript()
 {
     $combinedFilePath = Director::baseFolder() . '/' . 'RequirementsTest_bc.js';
     /* BLOCKED COMBINED FILES ARE NOT INCLUDED */
     $this->setupCombinedRequirements();
     Requirements::block('RequirementsTest_bc.js');
     Requirements::delete_combined_files('RequirementsTest_bc.js');
     clearstatcache();
     // needed to get accurate file_exists() results
     $html = Requirements::includeInHTML(false, self::$html_template);
     $this->assertFalse((bool) preg_match('/src=".*\\/RequirementsTest_bc\\.js/', $html), 'blocked combined files are not included ');
     Requirements::unblock('RequirementsTest_bc.js');
     /* BLOCKED UNCOMBINED FILES ARE NOT INCLUDED */
     // need to re-add requirements, as Requirements::process_combined_includes() alters the
     // original arrays grml...
     $this->setupCombinedRequirements();
     Requirements::block('sapphire/tests/forms/RequirementsTest_b.js');
     Requirements::delete_combined_files('RequirementsTest_bc.js');
     clearstatcache();
     // needed to get accurate file_exists() results
     $html = Requirements::includeInHTML(false, self::$html_template);
     $this->assertFalse(strpos(file_get_contents($combinedFilePath), "alert('b')") !== false, 'blocked uncombined files are not included');
     Requirements::unblock('RequirementsTest_b.js');
     /* A SINGLE FILE CAN'T BE INCLUDED IN TWO COMBINED FILES */
     $this->setupCombinedRequirements();
     clearstatcache();
     // needed to get accurate file_exists() results
     // This throws a notice-level error, so we prefix with @
     @Requirements::combine_files('RequirementsTest_ac.js', array('sapphire/tests/forms/RequirementsTest_a.js', 'sapphire/tests/forms/RequirementsTest_c.js'));
     $combinedFiles = Requirements::get_combine_files();
     $this->assertEquals(array_keys($combinedFiles), array('RequirementsTest_bc.js'), "A single file can't be included in two combined files");
     Requirements::delete_combined_files('RequirementsTest_bc.js');
 }
 public static function CombineThemeRelativeFile($combine_name, $pathrelativetotheme, $makeFirstItem = false)
 {
     $themedir = SSViewer::current_theme();
     $file = "themes/{$themedir}/{$pathrelativetotheme}";
     $to_combine = array($file);
     $combine_name = "{$themedir}-{$combine_name}";
     $previously_included = Requirements::get_combine_files();
     // append to existing array, if any
     if (array_key_exists($combine_name, $previously_included)) {
         if ($makeFirstItem) {
             $to_combine = array_merge($to_combine, $previously_included[$combine_name]);
         } else {
             $to_combine = array_merge($previously_included[$combine_name], $to_combine);
         }
     }
     Requirements::combine_files($combine_name, $to_combine);
 }
Exemplo n.º 3
0
 /**
  * Returns the HTTP error response.
  * 
  * @param string $code    Error code
  * @param string $message Error message
  * 
  * @return void
  * 
  * @throws SS_HTTPResponse_Exception
  * @author Sebastian Diel <*****@*****.**>
  * @since 07.05.2015
  */
 public function httpError($code, $message = null)
 {
     $combined_files = Requirements::get_combine_files();
     try {
         $response = parent::httpError($code, $message);
     } catch (SS_HTTPResponse_Exception $e) {
         $originalResponse = $e->getResponse();
         Requirements::restore();
         foreach ($combined_files as $combinedFileName => $files) {
             Requirements::combine_files($combinedFileName, $files);
             Requirements::process_combined_files();
         }
         $response = $this->request->isMedia() ? null : self::error_response_for($code);
         throw new SS_HTTPResponse_Exception($response ? $response : ($originalResponse ? $originalResponse : $message), $code);
     }
 }