parent
fd4f13f5e0
commit
7dbed8004f
@ -0,0 +1,117 @@ |
|||||||
|
<?php |
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
require_once __DIR__.'/../inc/global.inc.php'; |
||||||
|
require_once __DIR__.'/../../vendor/autoload.php'; |
||||||
|
|
||||||
|
/** |
||||||
|
* Checks total platform size |
||||||
|
* @param bool $debug |
||||||
|
* |
||||||
|
* @return bool |
||||||
|
*/ |
||||||
|
function isTotalPortalSizeBiggerThanLimit($debug = true) |
||||||
|
{ |
||||||
|
$sizeLimit = api_get_configuration_value('hosting_total_size_limit'); |
||||||
|
if (empty($sizeLimit)) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
$updateFile = true; |
||||||
|
$file = api_get_path(SYS_COURSE_PATH).'hosting_total_size.php'; |
||||||
|
|
||||||
|
// Default data |
||||||
|
$hostingData = array( |
||||||
|
'frequency' => 86400, |
||||||
|
); |
||||||
|
|
||||||
|
$log = null; |
||||||
|
|
||||||
|
// Check if file exists and if it is updated |
||||||
|
if (file_exists($file)) { |
||||||
|
$hostingDataFromFile = require $file; |
||||||
|
|
||||||
|
// Check time() is UTC |
||||||
|
if (isset($hostingDataFromFile['updated_at']) && |
||||||
|
isset($hostingDataFromFile['frequency']) && |
||||||
|
isset($hostingDataFromFile['size']) |
||||||
|
) { |
||||||
|
$hostingData = $hostingDataFromFile; |
||||||
|
|
||||||
|
$time = $hostingData['updated_at'] + $hostingData['frequency']; |
||||||
|
$diff = $time - time(); |
||||||
|
|
||||||
|
if ($time > time()) { |
||||||
|
$log .= "You need to wait $diff seconds to update the file \n"; |
||||||
|
$updateFile = false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Now get values for total portal size |
||||||
|
$log .= "Frequency loaded: ".$hostingData['frequency']."\n"; |
||||||
|
|
||||||
|
if ($updateFile) { |
||||||
|
$log .= "Updating total size ... \n"; |
||||||
|
$totalSize = calculateTotalPortalSize($debug); |
||||||
|
$log .= "Total size calculated: $totalSize \n"; |
||||||
|
|
||||||
|
$hostingData['updated_at'] = time(); |
||||||
|
$hostingData['size'] = $totalSize; |
||||||
|
|
||||||
|
$writer = new Zend\Config\Writer\PhpArray(); |
||||||
|
$phpCode = $writer->toString($hostingData); |
||||||
|
file_put_contents($file, $phpCode); |
||||||
|
$log .= "File saved in $file \n"; |
||||||
|
} else { |
||||||
|
$log .= "Total size not updated \n"; |
||||||
|
$totalSize = $hostingData['size']; |
||||||
|
} |
||||||
|
|
||||||
|
$result = true; |
||||||
|
|
||||||
|
if ($totalSize > $sizeLimit) { |
||||||
|
$log .= "Total size is bigger than limit: $sizeLimit MB \n"; |
||||||
|
$result = false; |
||||||
|
} |
||||||
|
|
||||||
|
if ($debug) { |
||||||
|
echo $log; |
||||||
|
} |
||||||
|
|
||||||
|
return $result; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param bool $debug |
||||||
|
* |
||||||
|
* @return int |
||||||
|
*/ |
||||||
|
function calculateTotalPortalSize($debug) |
||||||
|
{ |
||||||
|
$table = Database::get_course_table(TABLE_DOCUMENT); |
||||||
|
// Documents |
||||||
|
$sql = "SELECT SUM(size) total FROM $table |
||||||
|
WHERE filetype = 'file' AND c_id <> ''"; |
||||||
|
$result = Database::query($sql); |
||||||
|
$row = Database::fetch_array($result, 'ASSOC'); |
||||||
|
$totalSize = $row['total']; |
||||||
|
|
||||||
|
if ($debug) { |
||||||
|
echo "Total size in table $table " . (round($totalSize / 1024)) . " MB \n"; |
||||||
|
} |
||||||
|
|
||||||
|
$table = Database::get_course_table(TABLE_FORUM_ATTACHMENT); |
||||||
|
$sql = "SELECT SUM(size) total FROM $table WHERE c_id <> ''"; |
||||||
|
$result = Database::query($sql); |
||||||
|
$row = Database::fetch_array($result, 'ASSOC'); |
||||||
|
$subTotal = $row['total']; |
||||||
|
$totalSize += $subTotal; |
||||||
|
if ($debug) { |
||||||
|
echo "Total size in table $table " . (round($subTotal / 1024)) . " MB \n"; |
||||||
|
} |
||||||
|
|
||||||
|
return $totalSize; |
||||||
|
} |
||||||
|
|
||||||
|
isTotalPortalSizeBiggerThanLimit(true); |
Loading…
Reference in new issue