Move listdir to utility class
[gitphp.git] / include / Util.class.php
blob:a/include/Util.class.php -> blob:b/include/Util.class.php
--- a/include/Util.class.php
+++ b/include/Util.class.php
@@ -1,32 +1,20 @@
 <?php
 /**
- * GitPHP Util
- *
- * Utility functions
+ * Utility function class
  *
  * @author Christopher Han <xiphux@gmail.com>
  * @copyright Copyright (c) 2010 Christopher Han
- * @package GitPHP
- */
-
-/**
- * Util class
- *
  * @package GitPHP
  */
 class GitPHP_Util
 {
 
 	/**
-	 * AddSlash
-	 *
 	 * Adds a trailing slash to a directory path if necessary
 	 *
-	 * @access public
-	 * @static
 	 * @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)
-	 * @return string $path with a trailing slash
+	 * @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
 	 */
 	public static function AddSlash($path, $filesystem = true)
 	{
@@ -47,12 +35,8 @@
 	}
 
 	/**
-	 * IsWindows
-	 *
 	 * Tests if this is running on windows
 	 *
-	 * @access public
-	 * @static
 	 * @return bool true if on windows
 	 */
 	public static function IsWindows()
@@ -61,12 +45,8 @@
 	}
 
 	/**
-	 * Is64Bit
-	 *
 	 * Tests if this is a 64 bit machine
 	 *
-	 * @access public
-	 * @static
 	 * @return bool true if on 64 bit
 	 */
 	public static function Is64Bit()
@@ -75,13 +55,9 @@
 	}
 
 	/**
-	 * MakeSlug
-	 *
 	 * Turn a string into a filename-friendly slug
 	 *
-	 * @access public
 	 * @param string $str string to slugify
-	 * @static
 	 * @return string slug
 	 */
 	public static function MakeSlug($str)
@@ -96,16 +72,12 @@
 	}
 
 	/**
-	 * BaseName
-	 *
 	 * 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 $suffix optionally trim this suffix
-	 * @static
 	 * @return string filename
 	 */
 	public static function BaseName($path, $suffix = null)
@@ -130,14 +102,10 @@
 	}
 
 	/**
-	 * GeshiFilenameToLanguage
-	 *
 	 * Provides a geshi language for a given filename
 	 *
-	 * @access public
 	 * @param string $filename file name
 	 * @return string language
-	 * @static
 	 */
 	public static function GeshiFilenameToLanguage($filename)
 	{
@@ -149,14 +117,10 @@
 	}
 
 	/**
-	 * ListDir
-	 *
 	 * Recurses into a directory and lists files inside
 	 *
-	 * @access public
-	 * @static
 	 * @param string $dir directory
-	 * @return array array of filenames
+	 * @return string[] array of filenames
 	 */
 	public static function ListDir($dir)
 	{
@@ -180,5 +144,50 @@
 		return $files;
 	}
 
+	/**
+	 * Get the base install url (without index)
+	 *
+	 * @param boolean $full true to return full url (include protocol and hostname)
+	 * @return string base url
+	 */
+	public static function BaseUrl($full = false)
+	{
+		$baseurl = $_SERVER['SCRIPT_NAME'];
+		if (substr_compare($baseurl, 'index.php', -9) === 0)
+			$baseurl = dirname($baseurl);
+		if ($full) {
+			$baseurl = $_SERVER['HTTP_HOST'] . $baseurl;
+			if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'))
+				$baseurl = 'https://' . $baseurl;
+			else
+				$baseurl = 'http://' . $baseurl;
+		}
+		if (GitPHP_Util::IsWindows())
+			$baseurl = rtrim($baseurl, "\\");
+		return rtrim($baseurl, "/");
+	}
+
+	/**
+	 * Tests whether a function is allowed to be called
+	 *
+	 * @param string $function functio name
+	 * @return true if allowed
+	 */
+	public static function FunctionAllowed($function)
+	{
+		if (empty($function))
+			return false;
+
+		$disabled = @ini_get('disable_functions');
+		if (!$disabled) {
+			// no disabled functions
+			// or ini_get is disabled so we can't reliably figure this out
+			return true;
+		}
+
+		$disabledlist = explode(', ', $disabled);
+		return !in_array($function, $disabledlist);
+	}
+
 }
 

comments