aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrvelices <rv-github@modusoptimus.com>2012-08-30 19:20:00 +0000
committerrvelices <rv-github@modusoptimus.com>2012-08-30 19:20:00 +0000
commitc918bb9209202bf9c7172890db626f07381346ac (patch)
tree5a5e6141716c401c5e0f9330989763f6587ee5b3
parentd9854148a5100e2a1056441057deac40cbd67379 (diff)
bug 2725: Piwigo isn't compatible with suPHP + better handling of watermark upload errors
git-svn-id: http://piwigo.org/svn/trunk@17675 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to '')
-rw-r--r--admin/include/configuration_watermark_process.inc.php28
-rw-r--r--admin/include/functions_upload.inc.php1
-rw-r--r--admin/themes/default/template/configuration.tpl2
-rw-r--r--i.php1
-rw-r--r--include/template.class.php26
-rw-r--r--include/ws_functions.inc.php20
6 files changed, 26 insertions, 52 deletions
diff --git a/admin/include/configuration_watermark_process.inc.php b/admin/include/configuration_watermark_process.inc.php
index 6efabac06..3038d5948 100644
--- a/admin/include/configuration_watermark_process.inc.php
+++ b/admin/include/configuration_watermark_process.inc.php
@@ -43,16 +43,24 @@ if (isset($_FILES['watermarkImage']) and !empty($_FILES['watermarkImage']['tmp_n
else
{
$upload_dir = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks';
-
- include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
- prepare_directory($upload_dir);
-
- $new_name = get_filename_wo_extension($_FILES['watermarkImage']['name']).'.png';
- $file_path = $upload_dir.'/'.$new_name;
-
- move_uploaded_file($_FILES['watermarkImage']['tmp_name'], $file_path);
-
- $pwatermark['file'] = substr($file_path, strlen(PHPWG_ROOT_PATH));
+ if (mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
+ {
+ $new_name = get_filename_wo_extension($_FILES['watermarkImage']['name']).'.png';
+ $file_path = $upload_dir.'/'.$new_name;
+
+ if (move_uploaded_file($_FILES['watermarkImage']['tmp_name'], $file_path))
+ {
+ $pwatermark['file'] = substr($file_path, strlen(PHPWG_ROOT_PATH));
+ }
+ else
+ {
+ $page['errors'][] = $errors['watermarkImage'] = "$file_path " .l10n('no write access');
+ }
+ }
+ else
+ {
+ $page['errors'][] = $errors['watermarkImage'] = sprintf( l10n('Add write access to the "%s" directory'), $upload_dir);
+ }
}
}
diff --git a/admin/include/functions_upload.inc.php b/admin/include/functions_upload.inc.php
index eecdcdff0..d2b101dbb 100644
--- a/admin/include/functions_upload.inc.php
+++ b/admin/include/functions_upload.inc.php
@@ -246,6 +246,7 @@ SELECT
{
rename($source_filepath, $file_path);
}
+ @chmod($file_path, 0644);
if (pwg_image::get_library() != 'gd')
{
diff --git a/admin/themes/default/template/configuration.tpl b/admin/themes/default/template/configuration.tpl
index 75c956eab..651df8eba 100644
--- a/admin/themes/default/template/configuration.tpl
+++ b/admin/themes/default/template/configuration.tpl
@@ -518,7 +518,7 @@ jQuery(document).ready(function() {
<span id="addWatermark"{if isset($ferrors.watermarkImage)} style="display:inline"{/if}>
{'add a new watermark'|@translate} {'... or '|@translate}<a href="#" class="addWatermarkOpen">{'Select a file'|@translate}</a>
<br><input type="file" size="60" id="watermarkImage" name="watermarkImage"{if isset($ferrors.watermarkImage)} class="dError"{/if}> (png)
- {if isset($ferrors.watermarkImage)}<span class="dErrorDesc" title="{$ferrors.watermarkImage}">!</span>{/if}
+ {if isset($ferrors.watermarkImage)}<span class="dErrorDesc" title="{$ferrors.watermarkImage|@htmlspecialchars}">!</span>{/if}
</span>{* #addWatermark *}
</li>
diff --git a/i.php b/i.php
index ae85251bf..7a74fcb88 100644
--- a/i.php
+++ b/i.php
@@ -623,6 +623,7 @@ if ($d_size[0]*$d_size[1] < 256000)
$image->set_compression_quality( ImageStdParams::$quality );
$image->write( $page['derivative_path'] );
$image->destroy();
+@chmod($page['derivative_path'], 0644);
$timing['save'] = time_step($step);
send_derivative($expires);
diff --git a/include/template.class.php b/include/template.class.php
index 3bc386c80..6d81b7169 100644
--- a/include/template.class.php
+++ b/include/template.class.php
@@ -78,28 +78,6 @@ class Template {
}
}
- if (!isset($conf['combined_dir_checked']))
- {
- $dir = PHPWG_ROOT_PATH.PWG_COMBINED_DIR;
- mkgetdir($dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
- if (!is_writable($dir))
- {
- load_language('admin.lang');
- fatal_error(
- sprintf(
- l10n('Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'),
- PWG_COMBINED_DIR
- ),
- l10n('an error happened'),
- false // show trace
- );
- }
- if (function_exists('pwg_query')) {
- conf_update_param('combined_dir_checked', 1);
- }
- }
-
-
$compile_dir = PHPWG_ROOT_PATH.$conf['data_location'].'templates_c';
mkgetdir( $compile_dir );
@@ -1343,7 +1321,9 @@ final class FileCombiner
$output .= "\n";
}
- file_put_contents( PHPWG_ROOT_PATH . $file, $output );
+ mkgetdir( dirname(PHPWG_ROOT_PATH.$file) );
+ file_put_contents( PHPWG_ROOT_PATH.$file, $output );
+ @chmod(PHPWG_ROOT_PATH.$file, 0644);
$out_file = $file;
$out_version = false;
$this->clear();
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index 4e439af88..c25ed02ee 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -1507,27 +1507,11 @@ function ws_images_add_chunk($params, &$service)
$upload_dir = $conf['upload_dir'].'/buffer';
// create the upload directory tree if not exists
- if (!is_dir($upload_dir)) {
- umask(0000);
- if (!@mkdir($upload_dir, 0777, true))
- {
- return new PwgError(500, 'error during buffer directory creation');
- }
- }
-
- if (!is_writable($upload_dir))
+ if (!mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
{
- // last chance to make the directory writable
- @chmod($upload_dir, 0777);
-
- if (!is_writable($upload_dir))
- {
- return new PwgError(500, 'buffer directory has no write access');
- }
+ return new PwgError(500, 'error during buffer directory creation');
}
- secure_directory($upload_dir);
-
$filename = sprintf(
'%s-%s-%05u.block',
$params['original_sum'],