PR Documents Size: Fix blank spaces, var types for compatibility, reuse fuction

pull/3944/head
Tony ID 4 years ago committed by Yannick Warnier
parent 87ab21458d
commit 04de152ce2
  1. 10
      main/document/document.php
  2. 2
      main/inc/ajax/document.ajax.php
  3. 83
      main/inc/lib/document.lib.php

@ -1894,7 +1894,7 @@ $userIsSubscribed = CourseManager::is_user_subscribed_in_course(
$courseInfo['code']
);
$getSizesURL = api_get_path(WEB_AJAX_PATH) . 'document.ajax.php?a=get_dirs_size&' . api_get_cidreq();
$getSizesURL = api_get_path(WEB_AJAX_PATH).'document.ajax.php?a=get_dirs_size&'.api_get_cidreq();
if (!empty($documentAndFolders)) {
if ($groupId == 0 || $userAccess) {
@ -2005,7 +2005,7 @@ if (!empty($documentAndFolders)) {
if ($document_data['filetype'] === 'folder') {
$displaySize = '<span id="document_size_'.$document_data['id']
. '" data-id= "' . $document_data['id']
.'" data-id= "'.$document_data['id']
.'" class="document_size"></span>';
} else {
$displaySize = format_file_size($document_data['size']);
@ -2273,7 +2273,7 @@ if (false === $disableQuotaMessage && count($documentAndFolders) > 1) {
echo '<script>
$(function() {
let requests = [];
var requests = [];
$(".document_size").each(function(i, obj) {
requests.push(obj.getAttribute("data-id"));
});
@ -2281,9 +2281,9 @@ if (false === $disableQuotaMessage && count($documentAndFolders) > 1) {
});
function getPathsSizes(requests){
$.ajax({
url:"' . $getSizesURL . '&requests="+requests,
url:"'.$getSizesURL.'&requests="+requests,
success:function(data){
const response = JSON.parse(data)
var response = JSON.parse(data)
response.forEach(function(data) {
$("#document_size_"+data.id).html(data.size);
});

@ -22,7 +22,7 @@ switch ($action) {
$response = [];
$requests = explode(',', $requests);
foreach ($requests as $request) {
$fileSize = DocumentManager::getTotalFolderSizeById($request, $isAllowedToEdit);
$fileSize = DocumentManager::getTotalFolderSize($request, $isAllowedToEdit);
$data = [
"id" => $request,
"size" => format_file_size($fileSize),

@ -6485,14 +6485,14 @@ class DocumentManager
* Calculates the total size of a directory by adding the sizes (that
* are stored in the database) of all files & folders in this directory.
*
* @param int $id
* @param bool $can_see_invisible
* @param string $value = document path or document id
* @param bool $can_see_invisible
* @param bool $by_id = default true, if is getting size by document id or false if getting by path
*
* @return int Total size
*/
public static function getTotalFolderSizeById($id, $can_see_invisible = false)
public static function getTotalFolderSize($value, $can_see_invisible = false, $by_id = true)
{
$id = (int)$id;
$table_itemproperty = Database::get_course_table(TABLE_ITEM_PROPERTY);
$table_document = Database::get_course_table(TABLE_DOCUMENT);
$tool_document = TOOL_DOCUMENT;
@ -6510,72 +6510,21 @@ class DocumentManager
return 0;
}
$visibility_rule = ' props.visibility ' . ($can_see_invisible ? '<> 2' : '= 1');
$query = "SELECT path FROM $table_document WHERE id = $id";
$result1 = Database::query($query);
$path = null;
if ($result1 && Database::num_rows($result1) != 0) {
$row = Database::fetch_row($result1);
$path = $row[0];
}
if ($path) {
$sql = "SELECT SUM(table1.size) FROM (
SELECT props.ref, size
FROM $table_itemproperty AS props
INNER JOIN $table_document AS docs
ON (docs.id = props.ref AND docs.c_id = props.c_id)
WHERE
docs.c_id = $course_id AND
docs.path LIKE '$path/%' AND
props.c_id = $course_id AND
props.tool = '$tool_document' AND
$visibility_rule
$session_condition
GROUP BY ref
) as table1";
$result = Database::query($sql);
if ($result && Database::num_rows($result) != 0) {
$row = Database::fetch_row($result);
$visibility_rule = ' props.visibility '.($can_see_invisible ? '<> 2' : '= 1');
return $row[0];
if ($by_id) {
$id = (int) $value;
$query = "SELECT path FROM $table_document WHERE id = $id";
$result1 = Database::query($query);
if ($result1 && Database::num_rows($result1) != 0) {
$row = Database::fetch_row($result1);
$path = $row[0];
} else {
return 0;
}
} else {
$path = Database::escape_string($value);
}
return 0;
}
/**
* Calculates the total size of a directory by adding the sizes (that
* are stored in the database) of all files & folders in this directory.
*
* @param string $path
* @param bool $can_see_invisible
*
* @return int Total size
*/
public static function getTotalFolderSize($path, $can_see_invisible = false)
{
$table_itemproperty = Database::get_course_table(TABLE_ITEM_PROPERTY);
$table_document = Database::get_course_table(TABLE_DOCUMENT);
$tool_document = TOOL_DOCUMENT;
$course_id = api_get_course_int_id();
$session_id = api_get_session_id();
$session_condition = api_get_session_condition(
$session_id,
true,
true,
'props.session_id'
);
if (empty($course_id)) {
return 0;
}
$path = Database::escape_string($path);
$visibility_rule = ' props.visibility '.($can_see_invisible ? '<> 2' : '= 1');
$sql = "SELECT SUM(table1.size) FROM (
SELECT props.ref, size

Loading…
Cancel
Save