[Piwik-svn] r467 - trunk/modules

svnmaster at piwik.org svnmaster at piwik.org
Thu May 8 23:39:34 CEST 2008


Author: matt
Date: 2008-05-08 23:39:32 +0200 (Thu, 08 May 2008)
New Revision: 467

Modified:
   trunk/modules/Piwik.php
Log:
- fix #202 it seems this fix does the trick or suggesting the right directories at installation. Please apply the diff and report any problem.

Modified: trunk/modules/Piwik.php
===================================================================
--- trunk/modules/Piwik.php	2008-05-06 23:37:22 UTC (rev 466)
+++ trunk/modules/Piwik.php	2008-05-08 21:39:32 UTC (rev 467)
@@ -52,8 +52,6 @@
 	// path without trailing slash!!
 	static public function mkdir( $path, $mode = 0755, $denyAccess = true )
 	{
-		$path = '/' . $path;
-		
 		if(!is_dir($path))
 		{
 			$directoryParent = realpath(dirname($path));
@@ -72,33 +70,43 @@
 	}
 	
 	/**
-	 * Throws an exception if the directories are not writable
+	 * Checks if directories are writable and create them if they do not exist.
+	 * 
+	 * @param array $directoriesToCheck array of directories to check - if not given default Piwik directories that needs write permission are checked
+	 *
+	 * @return array direcory name => true|false (is writable)
 	 */
-	static public function checkDirectoriesWritable()
-	{		
-		$directoriesToCheck = array(
-			'/config',
-			'/tmp',
-			'/tmp/templates_c',
-			'/tmp/cache',
-		); 
+	static public function checkDirectoriesWritable($directoriesToCheck = null)
+	{
+		if( $directoriesToCheck == null )		
+		{
+			$directoriesToCheck = array(
+				'/',
+				'/config',
+				'/tmp',
+				'/tmp/templates_c',
+				'/tmp/cache',
+			); 
+		}
 		
 		$resultCheck = array();
 		
-		foreach($directoriesToCheck as $name)
+		foreach($directoriesToCheck as $directoryToCheck)
 		{
-			$directoryToCheck = PIWIK_INCLUDE_PATH . $name;
+			if( !ereg('^'.preg_quote(PIWIK_INCLUDE_PATH), $directoryToCheck) )
+			{
+				$directoryToCheck = PIWIK_INCLUDE_PATH . $directoryToCheck;
+			}
 			
 			$directory = realpath($directoryToCheck);
 			
-			$resultCheck[$directory] = false;
 			
-			if(!is_writable($directoryToCheck))
+			if(!file_exists($directoryToCheck))
 			{			
 				Piwik::mkdir($directoryToCheck, 0755, false);
 			}
 			
-			
+			$resultCheck[$directory] = false;
 			if(is_writable($directoryToCheck))
 			{
 				$resultCheck[$directory] = true;
@@ -107,7 +115,7 @@
 		
 		return $resultCheck;
 	}
-	
+		
 	static public function getJavascriptCode($idSite, $piwikUrl, $actionName = "''")
 	{	
 		$jsTag = file_get_contents( "modules/LogStats/javascriptTag.tpl");



More information about the Piwik-svn mailing list