aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCash Costello <cash.costello@gmail.com>2012-06-02 07:14:18 -0700
committerCash Costello <cash.costello@gmail.com>2012-06-02 07:14:18 -0700
commit4abe9e6727108efd1f834a80a7942ed92cae2a52 (patch)
tree14cb4712274f343ecc1dffb277b7521b19e9db3e
parentb546494ea20aad1514f4127341a303c435e0d8f4 (diff)
parent7c0215018897bfb578e6116ef9d36e5edc1fe5cf (diff)
downloadelgg-4abe9e6727108efd1f834a80a7942ed92cae2a52.tar.gz
elgg-4abe9e6727108efd1f834a80a7942ed92cae2a52.tar.bz2
Merge pull request #222 from mrclay/issue2411
Fixes #2411: Show message when upload exceeds PHP limits
-rw-r--r--engine/lib/actions.php15
-rw-r--r--languages/en.php4
-rw-r--r--views/default/admin/statistics/server/php.php17
3 files changed, 34 insertions, 2 deletions
diff --git a/engine/lib/actions.php b/engine/lib/actions.php
index c6613e6d6..3a7c02488 100644
--- a/engine/lib/actions.php
+++ b/engine/lib/actions.php
@@ -273,8 +273,19 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL)
} else if ($visibleerrors) {
register_error(elgg_echo('actiongatekeeper:tokeninvalid'));
}
- } else if ($visibleerrors) {
- register_error(elgg_echo('actiongatekeeper:missingfields'));
+ } else {
+ if (! empty($_SERVER['CONTENT_LENGTH']) && empty($_POST)) {
+ // The size of $_POST or uploaded file has exceed the size limit
+ $error_msg = elgg_trigger_plugin_hook('action_gatekeeper:upload_exceeded_msg', 'all', array(
+ 'post_size' => $_SERVER['CONTENT_LENGTH'],
+ 'visible_errors' => $visibleerrors,
+ ), elgg_echo('actiongatekeeper:uploadexceeded'));
+ } else {
+ $error_msg = elgg_echo('actiongatekeeper:missingfields');
+ }
+ if ($visibleerrors) {
+ register_error($error_msg);
+ }
}
return FALSE;
diff --git a/languages/en.php b/languages/en.php
index 7b51b0c7d..ff730a018 100644
--- a/languages/en.php
+++ b/languages/en.php
@@ -741,6 +741,9 @@ $english = array(
'admin:server:label:mem_avail' => 'Memory available',
'admin:server:label:mem_used' => 'Memory used',
'admin:server:error_log' => "Web server's error log",
+ 'admin:server:label:post_max_size' => 'POST maximum size',
+ 'admin:server:label:upload_max_filesize' => 'Upload maximum size',
+ 'admin:server:warning:post_max_too_small' => '(Note: <code>post_max_size</code> must be larger than this value to support uploads of this size)',
'admin:user:label:search' => "Find users:",
'admin:user:label:searchbutton' => "Search",
@@ -1171,6 +1174,7 @@ You cannot reply to this email.",
'actiongatekeeper:tokeninvalid' => "We encountered an error (token mismatch). This probably means that the page you were using expired.",
'actiongatekeeper:timeerror' => 'The page you were using has expired. Please refresh and try again.',
'actiongatekeeper:pluginprevents' => 'A extension has prevented this form from being submitted.',
+ 'actiongatekeeper:uploadexceeded' => 'The size of file(s) uploaded exceeded the limit set by your site administrator',
/**
diff --git a/views/default/admin/statistics/server/php.php b/views/default/admin/statistics/server/php.php
index 4a59b95fb..7c6a51383 100644
--- a/views/default/admin/statistics/server/php.php
+++ b/views/default/admin/statistics/server/php.php
@@ -8,6 +8,15 @@ if (!$php_log) {
$php_log = elgg_echo('admin:server:error_log');
}
+$post_max_size = elgg_get_ini_setting_in_bytes('post_max_size');
+$upload_max_filesize = elgg_get_ini_setting_in_bytes('upload_max_filesize');
+
+$post_max_size_warning = '';
+if ($upload_max_filesize > $post_max_size) {
+ // @todo show a link to something like http://nigel.mcnie.name/blog/uploadmaxfilesizepostmaxsize-experimentation ?
+ $post_max_size_warning = elgg_echo('admin:server:warning:post_max_too_small');
+}
+
?>
<table class="elgg-table-alt">
<tr class="odd">
@@ -30,4 +39,12 @@ if (!$php_log) {
<td><b><?php echo elgg_echo('admin:server:label:mem_used'); ?> :</b></td>
<td><?php echo number_format(memory_get_peak_usage()); ?></td>
</tr>
+ <tr class="even">
+ <td><b><?php echo elgg_echo('admin:server:label:post_max_size'); ?> :</b></td>
+ <td><?php echo number_format($post_max_size); ?></td>
+ </tr>
+ <tr class="odd">
+ <td><b><?php echo elgg_echo('admin:server:label:upload_max_filesize'); ?> :</b></td>
+ <td><?php echo number_format($upload_max_filesize) . '&nbsp; ' . $post_max_size_warning; ?></td>
+ </tr>
</table>