From e6af7a2cd3964fc02a3bd91978ca1b29bcd24abd Mon Sep 17 00:00:00 2001
From: robocoder <anthon.pang@gmail.com>
Date: Sun, 25 Jul 2010 14:11:23 +0000
Subject: [PATCH] refs #1507 - override umask only on public folders

git-svn-id: http://dev.piwik.org/svn/trunk@2669 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 core/Piwik.php | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/core/Piwik.php b/core/Piwik.php
index 060817cbb7..5fd809edd8 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -290,6 +290,10 @@ class Piwik
 	 */
 	static public function checkDirectoriesWritable($directoriesToCheck = null)
 	{
+		static $publicFolders = array(
+			'/tmp/assets/',
+		);
+
 		if( $directoriesToCheck == null )
 		{
 			$directoriesToCheck = array(
@@ -305,6 +309,7 @@ class Piwik
 		$resultCheck = array();
 		foreach($directoriesToCheck as $directoryToCheck)
 		{
+			$overrideUmask = in_array($directoryToCheck, $publicFolders);
 			if( !preg_match('/^'.preg_quote(PIWIK_USER_PATH, '/').'/', $directoryToCheck) )
 			{
 				$directoryToCheck = PIWIK_USER_PATH . $directoryToCheck;
@@ -312,7 +317,14 @@ class Piwik
 
 			if(!file_exists($directoryToCheck))
 			{
+				// the mode in mkdir is modified by the current umask
 				Piwik_Common::mkdir($directoryToCheck, 0755, false);
+
+				// override an overly restrictive umask for public folders only
+				if($overrideUmask)
+				{
+					@chmod($directoryToCheck, 0755);
+				}
 			}
 
 			$directory = Piwik_Common::realpath($directoryToCheck);
-- 
GitLab