X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FFile.php;h=a8ca3b77c3c17fb6955fd9a0bf4374cebd8a6197;hb=9f87b14bf20919f5896ac2ff91805a1669d58c10;hp=70adaed6cccf4e6a32cd513a3cec53f0b5b7515f;hpb=b7ff0a0a5544c5a5d510c685c8fdbdaecad7a5d0;p=civicrm-core.git diff --git a/CRM/Utils/File.php b/CRM/Utils/File.php index 70adaed6cc..a8ca3b77c3 100644 --- a/CRM/Utils/File.php +++ b/CRM/Utils/File.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -28,7 +28,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2014 + * @copyright CiviCRM LLC (c) 2004-2015 * $Id: $ * */ @@ -176,6 +176,28 @@ class CRM_Utils_File { } } + /** + * Concatenate several files. + * + * @param array $files + * List of file names. + * @param string $delim + * An optional delimiter to put between files. + * @return string + */ + public static function concat($files, $delim = '') { + $buf = ''; + $first = TRUE; + foreach ($files as $file) { + if (!$first) { + $buf .= $delim; + } + $buf .= file_get_contents($file); + $first = FALSE; + } + return $buf; + } + /** * @param string $source * @param string $destination @@ -498,6 +520,24 @@ HTACCESS; return $_path; } + /** + * Determine if a path is absolute. + * + * @return bool + * TRUE if absolute. FALSE if relative. + */ + public static function isAbsolute($path) { + if (substr($path, 0, 1) === DIRECTORY_SEPARATOR) { + return TRUE; + } + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + if (preg_match('!^[a-zA-Z]:[/\\\\]!', $path)) { + return TRUE; + } + } + return FALSE; + } + /** * @param $directory * @@ -510,7 +550,7 @@ HTACCESS; } // check if directory is relative, if so return immediately - if (substr($directory, 0, 1) != DIRECTORY_SEPARATOR) { + if (!self::isAbsolute($directory)) { return $directory; } @@ -558,6 +598,10 @@ HTACCESS; * @return string */ public static function relativize($directory, $basePath) { + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $directory = strtr($directory, '\\', '/'); + $basePath = strtr($basePath, '\\', '/'); + } if (substr($directory, 0, strlen($basePath)) == $basePath) { return substr($directory, strlen($basePath)); }