yo lo manejaría desde una base de datos, y en vez de limitar por espacio, limitaria por cantidad de contenido (buscando algun tipo de equivalencia entre ambos), por ejemplo el plan A solo puede agregar 3 modulos, cargar 10 plantillas y agregar 50 articulos, el plan B el doble, y asi.
En la base de datos es simple de validar que nadie sobrepase esos limites.
si quieres manejar carpetas, cada usuario tendria su propia carpeta, puedes medir el tamaño de una carpeta con una funcion como esta:
Código PHP:
Ver originalfunction dirSize($path) {
$size = 0;
if($path!==false) {
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $file) {
try {
$size += $file->getSize();
} catch (Exception $e) {
// Broken simlinks.
}
}
}
// Size in bytes.
return $size;
// Size in other unit.
/*
$units = ["B", "KB", "MB", "GB", "TB", "PB"];
for($u = 0; $size > 1024; $u++)
$size /= 1024;
return round($size, 2)." ".$units[$u];
*/
}