X-Git-Url: https://git.p6c8.net/jirafeau_mojo42.git/blobdiff_plain/2bc76d8baee16b7ba0814c12da52c665158a6d98..6d2f72029699314db90926f57861154ae76d3852:/lib/functions.php
diff --git a/lib/functions.php b/lib/functions.php
index f564db6..5800190 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -20,7 +20,7 @@
*/
/**
- * Transform a string in a path by seperating each letters by a '/'.
+ * Transform a string in a path by separating each letters by a '/'.
* @return path finishing with a '/'
*/
function s2p($s)
@@ -142,6 +142,11 @@ function jirafeau_fatal_error($errorText, $cfg = array())
exit;
}
+function jirafeau_non_fatal_error($errorText)
+{
+ echo '
' . $errorText . '
';
+}
+
function jirafeau_clean_rm_link($link)
{
$p = s2p("$link");
@@ -190,20 +195,23 @@ function jirafeau_ini_to_bytes($value)
$modifier = substr($value, -1);
$bytes = substr($value, 0, -1);
switch (strtoupper($modifier)) {
- case 'P':
- $bytes *= 1024;
- // no break
- case 'T':
- $bytes *= 1024;
- // no break
- case 'G':
- $bytes *= 1024;
- // no break
- case 'M':
- $bytes *= 1024;
- // no break
- case 'K':
- $bytes *= 1024;
+ default:
+ return intval($value);
+ break;
+ case 'P':
+ $bytes *= 1024;
+ // no break
+ case 'T':
+ $bytes *= 1024;
+ // no break
+ case 'G':
+ $bytes *= 1024;
+ // no break
+ case 'M':
+ $bytes *= 1024;
+ // no break
+ case 'K':
+ $bytes *= 1024;
}
return $bytes;
}
@@ -229,6 +237,30 @@ function jirafeau_get_max_upload_size()
return jirafeau_human_size(jirafeau_get_max_upload_size_bytes());
}
+/**
+ * get the maximal upload size for a data chunk in async uploads
+ * @param max_upload_chunk_size_bytes
+ */
+function jirafeau_get_max_upload_chunk_size_bytes($max_upload_chunk_size_bytes = 0)
+{
+ if ($max_upload_chunk_size_bytes == 0) {
+ $size = jirafeau_get_max_upload_size_bytes();
+ // Jirafeau must choose an arbitrary number as PHP config does not give any limit nor $max_upload_chunk_size_bytes
+ if ($size == 0) {
+ return 10000000; // 10MB
+ }
+ return $size;
+ }
+ $size = min(
+ jirafeau_get_max_upload_size_bytes(),
+ $max_upload_chunk_size_bytes
+ );
+ if ($size == 0) {
+ return $max_upload_chunk_size_bytes;
+ }
+ return $size;
+}
+
/**
* gets a string explaining the error
* @param $code the error code
@@ -237,19 +269,19 @@ function jirafeau_get_max_upload_size()
function jirafeau_upload_errstr($code)
{
switch ($code) {
- case UPLOAD_ERR_INI_SIZE:
- case UPLOAD_ERR_FORM_SIZE:
- return t('Your file exceeds the maximum authorized file size. ');
+ case UPLOAD_ERR_INI_SIZE:
+ case UPLOAD_ERR_FORM_SIZE:
+ return t('Your file exceeds the maximum authorized file size. ');
- case UPLOAD_ERR_PARTIAL:
- case UPLOAD_ERR_NO_FILE:
- return
- t('Your file was not uploaded correctly. You may succeed in retrying. ');
+ case UPLOAD_ERR_PARTIAL:
+ case UPLOAD_ERR_NO_FILE:
+ return
+ t('Your file was not uploaded correctly. You may succeed in retrying. ');
- case UPLOAD_ERR_NO_TMP_DIR:
- case UPLOAD_ERR_CANT_WRITE:
- case UPLOAD_ERR_EXTENSION:
- return t('Internal error. You may not succeed in retrying. ');
+ case UPLOAD_ERR_NO_TMP_DIR:
+ case UPLOAD_ERR_CANT_WRITE:
+ case UPLOAD_ERR_EXTENSION:
+ return t('Internal error. You may not succeed in retrying. ');
}
return t('Unknown error. ');
}
@@ -418,7 +450,7 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
}
}
- /* file informations */
+ /* file information */
$hash = jirafeau_hash_file($file_hash_method, $file['tmp_name']);
$name = str_replace(NL, '', trim($file['name']));
$mime_type = $file['type'];
@@ -509,10 +541,15 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
function jirafeau_is_viewable($mime)
{
if (!empty($mime)) {
- /* Actually, verify if mime-type is an image or a text. */
- $viewable = array('image', 'text', 'video', 'audio');
+ $viewable = array('image', 'video', 'audio');
$decomposed = explode('/', $mime);
- return in_array($decomposed[0], $viewable);
+ if (in_array($decomposed[0], $viewable) && strpos($mime, 'image/svg+xml') === false) {
+ return true;
+ }
+ $viewable = array('text/plain');
+ if (in_array($mime, $viewable)) {
+ return true;
+ }
}
return false;
}
@@ -559,13 +596,15 @@ function show_errors()
function check_errors($cfg)
{
- if (file_exists(JIRAFEAU_ROOT . 'install.php')
- && !($cfg['installation_done'] === true)) {
- header('Location: install.php');
- exit;
+ if (!($cfg['installation_done'] === true)) {
+ if (file_exists(JIRAFEAU_ROOT . 'install.php')) {
+ header('Location: install.php');
+ exit;
+ } else {
+ add_error(t('INSTALL_FILE_NOT_FOUND_TITLE'), t('INSTALL_FILE_NOT_FOUND_DESC'));
+ }
}
- /* Checking for errors. */
if (!is_writable(VAR_FILES)) {
add_error(t('FILE_DIR_W'), VAR_FILES);
}
@@ -585,11 +624,19 @@ function check_errors($cfg)
if ($cfg['one_time_download'] && $cfg['litespeed_workaround']) {
add_error(t('INCOMPATIBLE_OPTIONS_W'), 'one_time_download=true litespeed_workaround=true');
}
+ if ($cfg['upload_ldap_auth'] === true) {
+ if (sizeof($cfg['upload_password']) > 0) {
+ add_error(t('INCOMPATIBLE_OPTIONS_W'), 'upload_ldap_auth=true sizeof(upload_password) > 0');
+ }
+ if (sizeof($cfg['upload_ip_nopassword']) > 0) {
+ add_error(t('INCOMPATIBLE_OPTIONS_W'), 'upload_ldap_auth=true sizeof(upload_ip_nopassword) > 0');
+ }
+ }
}
/**
- * Read link informations
- * @return array containing informations.
+ * Read link information
+ * @return array containing information.
*/
function jirafeau_get_link($hash)
{
@@ -654,7 +701,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
/* Push new found directory. */
$stack[] = $d . $node . '/';
} elseif (is_file($d . $node)) {
- /* Read link informations. */
+ /* Read link information. */
$l = jirafeau_get_link($node);
if (!count($l)) {
continue;
@@ -670,7 +717,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
if (!empty($link_hash) && $link_hash != $node) {
continue;
}
- /* Print link informations. */
+ /* Print link information. */
echo '