Clean up docblock on base namespace objects
[gitphp.git] / include / Util.class.php
blob:a/include/Util.class.php -> blob:b/include/Util.class.php
<?php <?php
/** /**
* GitPHP Util * Utility function class
*  
* Utility functions  
* *
* @author Christopher Han <xiphux@gmail.com> * @author Christopher Han <xiphux@gmail.com>
* @copyright Copyright (c) 2010 Christopher Han * @copyright Copyright (c) 2010 Christopher Han
* @package GitPHP  
*/  
   
/**  
* Util class  
*  
* @package GitPHP * @package GitPHP
*/ */
class GitPHP_Util class GitPHP_Util
{ {
   
/** /**
* AddSlash  
*  
* Adds a trailing slash to a directory path if necessary * Adds a trailing slash to a directory path if necessary
* *
* @access public  
* @static  
* @param string $path path to add slash to * @param string $path path to add slash to
* @param $filesystem true if this is a filesystem path (to also check for backslash for windows paths) * @param boolean $filesystem true if this is a filesystem path (to also check for backslash for windows paths)
* @return string $path with a trailing slash * @return string path with a trailing slash
*/ */
public static function AddSlash($path, $filesystem = true) public static function AddSlash($path, $filesystem = true)
{ {
if (empty($path)) if (empty($path))
return $path; return $path;
   
$end = substr($path, -1); $end = substr($path, -1);
   
if (!(( ($end == '/') || ($end == ':')) || ($filesystem && GitPHP_Util::IsWindows() && ($end == '\\')))) { if (!(( ($end == '/') || ($end == ':')) || ($filesystem && GitPHP_Util::IsWindows() && ($end == '\\')))) {
if (GitPHP_Util::IsWindows() && $filesystem) { if (GitPHP_Util::IsWindows() && $filesystem) {
$path .= '\\'; $path .= '\\';
} else { } else {
$path .= '/'; $path .= '/';
} }
} }
   
return $path; return $path;
} }
   
/** /**
* IsWindows  
*  
* Tests if this is running on windows * Tests if this is running on windows
* *
* @access public  
* @static  
* @return bool true if on windows * @return bool true if on windows
*/ */
public static function IsWindows() public static function IsWindows()
{ {
return (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'); return (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
} }
   
/** /**
* Is64Bit  
*  
* Tests if this is a 64 bit machine * Tests if this is a 64 bit machine
* *
* @access public  
* @static  
* @return bool true if on 64 bit * @return bool true if on 64 bit
*/ */
public static function Is64Bit() public static function Is64Bit()
{ {
return (strpos(php_uname('m'), '64') !== false); return (strpos(php_uname('m'), '64') !== false);
} }
   
/** /**
* MakeSlug  
*  
* Turn a string into a filename-friendly slug * Turn a string into a filename-friendly slug
* *
* @access public  
* @param string $str string to slugify * @param string $str string to slugify
* @static  
* @return string slug * @return string slug
*/ */
public static function MakeSlug($str) public static function MakeSlug($str)
{ {
$from = array( $from = array(
'/' '/'
); );
$to = array( $to = array(
'-' '-'
); );
return str_replace($from, $to, $str); return str_replace($from, $to, $str);
} }
   
/** /**
* BaseName  
*  
* Get the filename of a given path * Get the filename of a given path
* *
* based on Drupal's basename * Based on Drupal's basename
* *
* @access public  
* @param string $path path * @param string $path path
* @param string $suffix optionally trim this suffix * @param string $suffix optionally trim this suffix
* @static  
* @return string filename * @return string filename
*/ */
public static function BaseName($path, $suffix = null) public static function BaseName($path, $suffix = null)
{ {
$sep = '/'; $sep = '/';
if (GitPHP_Util::IsWindows()) { if (GitPHP_Util::IsWindows()) {
$sep .= '\\'; $sep .= '\\';
} }
   
$path = rtrim($path, $sep); $path = rtrim($path, $sep);
   
if (!preg_match('@[^' . preg_quote($sep) . ']+$@', $path, $matches)) { if (!preg_match('@[^' . preg_quote($sep) . ']+$@', $path, $matches)) {
return ''; return '';
} }
   
$filename = $matches[0]; $filename = $matches[0];
   
if ($suffix) { if ($suffix) {
$filename = preg_replace('@' . preg_quote($suffix, '@') . '$@', '', $filename); $filename = preg_replace('@' . preg_quote($suffix, '@') . '$@', '', $filename);
} }
return $filename; return $filename;
} }
   
/** /**
* GeshiFilenameToLanguage  
*  
* Provides a geshi language for a given filename * Provides a geshi language for a given filename
* *
* @access public  
* @param string $filename file name * @param string $filename file name
* @return string language * @return string language
* @static  
*/ */
public static function GeshiFilenameToLanguage($filename) public static function GeshiFilenameToLanguage($filename)
{ {
if (strncasecmp($filename, 'Makefile', 8) === 0) { if (strncasecmp($filename, 'Makefile', 8) === 0) {
return 'make'; return 'make';
} }
   
return null; return null;
} }
   
/** /**
* ListDir  
*  
* Recurses into a directory and lists files inside * Recurses into a directory and lists files inside
* *
* @access public  
* @static  
* @param string $dir directory * @param string $dir directory
* @return array array of filenames * @return string[] array of filenames
*/ */
public static function ListDir($dir) public static function ListDir($dir)
{ {
$files = array(); $files = array();
if ($dh = opendir($dir)) { if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) { while (($file = readdir($dh)) !== false) {
if (($file == '.') || ($file == '..')) { if (($file == '.') || ($file == '..')) {
continue; continue;
} }
$fullFile = $dir . '/' . $file; $fullFile = $dir . '/' . $file;
if (is_dir($fullFile)) { if (is_dir($fullFile)) {
$subFiles = GitPHP_Util::ListDir($fullFile); $subFiles = GitPHP_Util::ListDir($fullFile);
if (count($subFiles) > 0) { if (count($subFiles) > 0) {
$files = array_merge($files, $subFiles); $files = array_merge($files, $subFiles);
} }
} else { } else {
$files[] = $fullFile; $files[] = $fullFile;
} }
} }
} }
return $files; return $files;
} }
   
} }
   
comments