Created
January 21, 2013 19:21
-
-
Save jmather/4588509 to your computer and use it in GitHub Desktop.
Media/CDN server w/ Symfony1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# You can find more information about this file on the symfony website: | |
# http://www.symfony-project.org/reference/1_4/en/12-Filters | |
rendering: ~ | |
remember_me: | |
class: sfGuardRememberMeFilter | |
security: ~ | |
# insert your own filters here | |
mediaServer: | |
class: MediaServerFilter | |
cache: ~ | |
execution: ~ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class MediaServerFilter extends sfFilter | |
{ | |
public function execute($filterChain) | |
{ | |
$filterChain->execute(); | |
// Execute this filter only once | |
if ($this->isFirstCall() && sfConfig::get('app_media_filter_disable', false) == false) { | |
// Filters don't have direct access to the request and user objects. | |
// You will need to use the context object to get them | |
$site = dcmsContext::getSite(); | |
$response = $this->getContext()->getResponse(); | |
$cont = $response->getContent(); | |
$host = $site->hostname; | |
if (preg_match('/^[a-z0-9]+\.yourdomain\.com/', $host)) { | |
$host = preg_replace('/^[0-9a-z]+\./', 'media.', $host); | |
} | |
$cont = str_replace('"/css/', '"http://' . $host . '/css/', $cont); | |
$cont = str_replace('"/js/', '"http://' . $host . '/js/', $cont); | |
$cont = str_replace('"/images/', '"http://' . $host . '/images/', $cont); | |
$cont = str_replace('url(/media_cache/', 'url(http://' . $host . '/media_cache/', $cont); | |
$cont = str_replace('"/media_cache/', '"http://' . $host . '/media_cache/', $cont); | |
$cont = str_replace('"/cache/', '"http://' . $host . '/cache/', $cont); | |
$cont = str_replace('\'/media_cache/', '\'http://' . $host . '/media_cache/', $cont); | |
$cont = str_replace('\'/media/', '\'http://' . $host . '/media/', $cont); | |
$cont = str_replace('\'/flash/', '\'http://' . $host . '/flash/', $cont); | |
// conflicts with far-future expires. | |
//$cont = preg_replace_callback('/'.preg_quote($host).'/', function($matches) { return str_replace('media', 'media'.rand(1, 5), $matches[0]); }, $cont); | |
$response->setContent($cont); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment