From 7305cebf389d1fb1cb6c29d041633a46fdb06806 Mon Sep 17 00:00:00 2001 From: flyskyko Date: Tue, 5 Feb 2013 01:42:28 +0000 Subject: [PATCH] issue 2119. supporting php 5.4. frontend file handler, handler and xe http request classes. git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@12689 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../FrontEndFileHandler.class.php | 106 ++++++++++-------- classes/handler/Handler.class.php | 2 + classes/httprequest/XEHttpRequest.class.php | 64 +++++++---- 3 files changed, 107 insertions(+), 65 deletions(-) diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index 62a351e68..277349483 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -1,10 +1,12 @@ * case js - * $args[0]: file name - * $args[1]: type (head | body) - * $args[2]: target IE - * $args[3]: index + * $args[0]: file name + * $args[1]: type (head | body) + * $args[2]: target IE + * $args[3]: index * case css - * $args[0]: file name - * $args[1]: media - * $args[2]: target IE - * $args[3]: index + * $args[0]: file name + * $args[1]: media + * $args[2]: target IE + * $args[3]: index * * * If $useCdn set true, use CDN instead local file. * CDN path = $cdnPrefix . $cdnVersion . $args[0]
- *
+ *
* i.e.
* $cdnPrefix = 'http://static.xpressengine.com/core/';
* $cdnVersion = 'ardent1';
@@ -91,10 +100,13 @@ class FrontEndFileHandler extends Handler * @param string $cdnPrefix CDN url prefix. (http://static.xpressengine.com/core/) * @param string $cdnVersion CDN version string (ardent1) * @return void - **/ - function loadFile($args, $useCdn = false, $cdnPrefix = '', $cdnVersion = '') + * */ + function loadFile($args, $useCdn = FALSE, $cdnPrefix = '', $cdnVersion = '') { - if (!is_array($args)) $args = array($args); + if(!is_array($args)) + { + $args = array($args); + } $pathInfo = pathinfo($args[0]); $file = new stdClass(); @@ -132,26 +144,32 @@ class FrontEndFileHandler extends Handler $file->cdnVersion = $cdnVersion; } - $availableExtension = array('css'=>1, 'js'=>1); - if (!isset($availableExtension[$file->fileExtension])) return; + $availableExtension = array('css' => 1, 'js' => 1); + if(!isset($availableExtension[$file->fileExtension])) + { + return; + } $file->targetIe = $args[2]; - $file->index = (int)$args[3]; + $file->index = (int) $args[3]; - if ($file->fileExtension == 'css') + if($file->fileExtension == 'css') { $file->media = $args[1]; - if (!$file->media) $file->media = 'all'; + if(!$file->media) + { + $file->media = 'all'; + } $map = &$this->cssMap; $mapIndex = &$this->cssMapIndex; $key = $file->filePath . $file->keyName . "\t" . $file->targetIe . "\t" . $file->media; $this->_arrangeCssIndex($pathInfo['dirname'], $file); } - else if ($file->fileExtension == 'js') + else if($file->fileExtension == 'js') { $type = $args[1]; - if ($type == 'body') + if($type == 'body') { $map = &$this->jsBodyMap; $mapIndex = &$this->jsBodyMapIndex; @@ -164,8 +182,8 @@ class FrontEndFileHandler extends Handler $key = $file->filePath . $file->keyName . "\t" . $file->targetIe; } - (is_null($file->index))?$file->index=0:$file->index=$file->index; - if (!isset($map[$file->index][$key]) || $mapIndex[$key] > $file->index) + (is_null($file->index)) ? $file->index = 0 : $file->index = $file->index; + if(!isset($map[$file->index][$key]) || $mapIndex[$key] > $file->index) { $this->unloadFile($args[0], $args[2], $args[1]); $map[$file->index][$key] = $file; @@ -189,7 +207,7 @@ class FrontEndFileHandler extends Handler $fileExtension = strtolower($pathInfo['extension']); $key = $filePath . $fileName . "\t" . $targetIe; - if ($fileExtension == 'css') + if($fileExtension == 'css') { if(empty($media)) { @@ -197,7 +215,7 @@ class FrontEndFileHandler extends Handler } $key .= "\t" . $media; - if (isset($this->cssMapIndex[$key])) + if(isset($this->cssMapIndex[$key])) { $index = $this->cssMapIndex[$key]; unset($this->cssMap[$index][$key]); @@ -206,13 +224,13 @@ class FrontEndFileHandler extends Handler } else { - if (isset($this->jsHeadMapIndex[$key])) + if(isset($this->jsHeadMapIndex[$key])) { $index = $this->jsHeadMapIndex[$key]; unset($this->jsHeadMap[$index][$key]); unset($this->jsHeadMapIndex[$key]); } - if (isset($this->jsBodyMapIndex[$key])) + if(isset($this->jsBodyMapIndex[$key])) { $index = $this->jsBodyMapIndex[$key]; unset($this->jsBodyMap[$index][$key]); @@ -229,13 +247,13 @@ class FrontEndFileHandler extends Handler */ function unloadAllFiles($type = 'all') { - if ($type == 'css' || $type == 'all') + if($type == 'css' || $type == 'all') { $this->cssMap = array(); $this->cssMapIndex = array(); } - if ($type == 'js' || $type == 'all') + if($type == 'js' || $type == 'all') { $this->jsHeadMap = array(); $this->jsBodyMap = array(); @@ -264,14 +282,14 @@ class FrontEndFileHandler extends Handler { foreach($indexedMap as $file) { - if ($this->isSsl() == false && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') + if($this->isSsl() == FALSE && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') { $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; } else { - $noneCache = (is_readable($file->cdnPath.'/'.$file->fileName))?'?'.date('YmdHis', filemtime($file->cdnPath.'/'.$file->fileName)):''; - $fullFilePath = $file->filePath . '/' . $file->fileName.$noneCache; + $noneCache = (is_readable($file->cdnPath . '/' . $file->fileName)) ? '?' . date('YmdHis', filemtime($file->cdnPath . '/' . $file->fileName)) : ''; + $fullFilePath = $file->filePath . '/' . $file->fileName . $noneCache; } $result[] = array('file' => $fullFilePath, 'media' => $file->media, 'targetie' => $file->targetIe); } @@ -288,7 +306,7 @@ class FrontEndFileHandler extends Handler */ function getJsFileList($type = 'head') { - if ($type == 'head') + if($type == 'head') { $map = &$this->jsHeadMap; $mapIndex = &$this->jsHeadMapIndex; @@ -309,14 +327,14 @@ class FrontEndFileHandler extends Handler { foreach($indexedMap as $file) { - if ($this->isSsl() == false && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') + if($this->isSsl() == FALSE && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') { $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; } else { - $noneCache = (is_readable($file->cdnPath.'/'.$file->fileName))?'?'.date('YmdHis', filemtime($file->cdnPath.'/'.$file->fileName)):''; - $fullFilePath = $file->filePath . '/' . $file->fileName.$noneCache; + $noneCache = (is_readable($file->cdnPath . '/' . $file->fileName)) ? '?' . date('YmdHis', filemtime($file->cdnPath . '/' . $file->fileName)) : ''; + $fullFilePath = $file->filePath . '/' . $file->fileName . $noneCache; } $result[] = array('file' => $fullFilePath, 'targetie' => $file->targetIe); } @@ -345,7 +363,7 @@ class FrontEndFileHandler extends Handler */ function _normalizeFilePath($path) { - if (strpos($path, '://') === false && $path{0} != '/' && $path{0} != '.') + if(strpos($path, '://') === FALSE && $path{0} != '/' && $path{0} != '.') { $path = './' . $path; } @@ -372,7 +390,7 @@ class FrontEndFileHandler extends Handler if(strpos($path, './') === 0) { - if (dirname($_SERVER['SCRIPT_NAME']) == '/' || dirname($_SERVER['SCRIPT_NAME']) == '\\') + if(dirname($_SERVER['SCRIPT_NAME']) == '/' || dirname($_SERVER['SCRIPT_NAME']) == '\\') { $path = '/' . substr($path, 2); } @@ -383,7 +401,7 @@ class FrontEndFileHandler extends Handler } else if(strpos($file, '../') === 0) { - $path= $this->_normalizeFilePath(dirname($_SERVER['SCRIPT_NAME']) . "/{$path}"); + $path = $this->_normalizeFilePath(dirname($_SERVER['SCRIPT_NAME']) . "/{$path}"); } return $path; @@ -406,10 +424,10 @@ class FrontEndFileHandler extends Handler $dirName = str_replace('./', '', $dirName); $tmp = explode('/', $dirName); - $cssSortList = array('common'=>-100000, 'layouts'=>-90000, 'modules'=>-80000, 'widgets'=>-70000, 'addons'=>-60000); + $cssSortList = array('common' => -100000, 'layouts' => -90000, 'modules' => -80000, 'widgets' => -70000, 'addons' => -60000); $file->index = $cssSortList[$tmp[0]]; } -} +} /* End of file FrontEndFileHandler.class.php */ /* Location: ./classes/frontendfile/FrontEndFileHandler.class.php */ diff --git a/classes/handler/Handler.class.php b/classes/handler/Handler.class.php index 524d290e7..f2f201156 100644 --- a/classes/handler/Handler.class.php +++ b/classes/handler/Handler.class.php @@ -1,4 +1,5 @@ addToHeader('Host', $this->m_host); $this->addToHeader('Connection', 'close'); $method = strtoupper($method); - if(!$allow_methods) $allow_methods = explode(' ', 'GET POST PUT'); - if(!in_array($method, $allow_methods)) $method = $allow_methods[0]; + if(!$allow_methods) + { + $allow_methods = explode(' ', 'GET POST PUT'); + } + if(!in_array($method, $allow_methods)) + { + $method = $allow_methods[0]; + } // $timeout should be an integer that is bigger than zero - $timout = max((int)$timeout, 0); + $timout = max((int) $timeout, 0); // list of post variables - if(!is_array($post_vars)) $post_vars = array(); + if(!is_array($post_vars)) + { + $post_vars = array(); + } - if(false && is_callable('curl_init')) + if(FALSE && is_callable('curl_init')) { return $this->sendWithCurl($target, $method, $timeout, $post_vars); } @@ -101,40 +114,43 @@ class XEHttpRequest } $headers = $this->m_headers + array(); - if(!isset($headers['Accept-Encoding'])) $headers['Accept-Encoding'] = 'identity'; + if(!isset($headers['Accept-Encoding'])) + { + $headers['Accept-Encoding'] = 'identity'; + } // post body $post_body = ''; if($method == 'POST' && count($post_vars)) { - foreach($post_vars as $key=>$value) + foreach($post_vars as $key => $value) { - $post_body .= urlencode($key).'='.urlencode($value).'&'; + $post_body .= urlencode($key) . '=' . urlencode($value) . '&'; } $post_body = substr($post_body, 0, -1); $headers['Content-Length'] = strlen($post_body); - $headers['Content-Type'] = 'application/x-www-form-urlencoded'; + $headers['Content-Type'] = 'application/x-www-form-urlencoded'; } $request = "$method $target HTTP/1.1$crlf"; - foreach($headers as $equiv=>$content) + foreach($headers as $equiv => $content) { $request .= "$equiv: $content$crlf"; } - $request .= $crlf.$post_body; + $request .= $crlf . $post_body; fwrite($sock, $request); list($httpver, $code, $status) = preg_split('/ +/', rtrim(fgets($sock)), 3); // read response headers - $is_chunked = false; + $is_chunked = FALSE; while(strlen(trim($line = fgets($sock)))) { list($equiv, $content) = preg_split('/ *: */', rtrim($line), 1); if(!strcasecmp($equiv, 'Transfer-Encoding') && $content == 'chunked') { - $is_chunked = true; + $is_chunked = TRUE; } } @@ -144,7 +160,10 @@ class XEHttpRequest if($is_chunked) { $chunk_size = hexdec(fgets($sock)); - if($chunk_size) $body .= fread($sock, $chunk_size); + if($chunk_size) + { + $body .= fread($sock, $chunk_size); + } } else { @@ -179,16 +198,18 @@ class XEHttpRequest // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "http://{$this->m_host}{$target}"); - curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_PORT, $this->m_port); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); switch($method) { - case 'GET': curl_setopt($ch, CURLOPT_HTTPGET, true); break; - case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); break; + case 'GET': curl_setopt($ch, CURLOPT_HTTPGET, true); + break; + case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); + break; case 'POST': curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars); @@ -196,7 +217,7 @@ class XEHttpRequest } $arr_headers = array(); - foreach($headers as $key=>$value) + foreach($headers as $key => $value) { $arr_headers[] = "$key: $value"; } @@ -217,6 +238,7 @@ class XEHttpRequest return $ret; } + } /* End of file XEHttpRequest.class.php */ /* Location: ./classes/httprequest/XEHttpRequest.class.php */