| 
<?php
/**
 * @package                : Disk Drives Informations
 * @source                 : /drives-info/drives.php
 * @version                : 1.0.0
 * @created                : 2024-11-27 07:00:00 UTC+3
 * @updated                :
 * @author                 : Drogidis Christos
 * @authorSite             : www.alexsoft.gr
 * @license             : AGL-F
 *
 * @since PHP 8.2.0
 */
 declare(strict_types=1);
 //require_once "[YOUR ROOT SITE PATH]/afw/autoload.php";
 //require_once "../afw/autoload.php";
 
 require_once "libs/functions.php";
 
 
 
 use ASCOOS\FRAMEWORK\Kernel\Core\TError;
 use ASCOOS\FRAMEWORK\Kernel\Disks\TDriveInfo;
 
 $script_path = str_replace('\\', '/', __DIR__);
 
 // It contains a table with the block settings.
 $conf = require "$script_path/conf/config.php";
 
 // It contains a table with the texts in the selected language.
 $lang = require "$script_path/langs/".$conf['lang'].".php";
 
 // Contains a table with error messages in the selected language.
 $errors = require "$script_path/langs/".$conf['lang'].".error.php";
 
 $user = null; // OR User. If null, in Linux = /home/
 
 try {
 $objDriveInfo = new TDriveInfo;        //
 $objDriveInfo->setUser($user);         // Set user. If null, in Linux = /home/ else /home/$user
 $info = $objDriveInfo->execute();      // Execute and return Drives data
 $dsizes = $objDriveInfo->getDrivesSize();    // ????????? ???? ?????? ??? ???????? ?? ?????? ??? ??????.
 } catch (TError $e) {
 echo $e;        // Display Error Message
 $e->Free($e);    // Free memory for object $e<TError>
 } finally {
 $objDriveInfo->Free($objDriveInfo); // Free memory for object $objDriveInfo<TDriveInfo>
 }
 
 
 $text = '';
 $text .= '<div class="block-drives-info-'.$conf['theme'].'">';
 if ($conf['show_title']) {
 $text .= '<div class="header"><h3>'.$lang['title'].'</h3></div><div class="clear"></div>';
 }
 
 $text .= '<div class="text"><div class="table">';
 
 $text .= '<div class="th">';
 $text .= '<div class="cell">'.$lang['title_drives'].'</div>';
 if ($conf['show_total_size']) $text .= '<div class="cell right">'.$lang['total_size'].'</div>';
 $text .= '</div>'; // row
 
 //print_r($dsizes);
 
 foreach ($info as $drive => $sizes) {
 if (is_array($sizes)) {
 if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
 $type = $lang['drive'].' ';
 $text2 = $errors['NotValidDisk'];
 } else {
 $type = $lang['directory'].' ';
 $text2 = $errors['NotValidDirectory'];
 }
 
 
 $free_percentage = (int) (($dsizes[$drive]['free'] / $dsizes[$drive]['total']) * 100);
 $text_percentage = ' (Free : '.$free_percentage.'%)';
 $disk_icon = GetPercentageIcon($free_percentage);
 
 $text .= '<div class="row">';
 $text .= '<div class="cell"><details><summary>'.$disk_icon.$type.'<b>'.$drive.'</b>'.$text_percentage.'</summary>';
 $text .= '<div class="row"><div class="cell">'.$lang['used_space'].'</div><div class="cell right">'.$sizes['used'].'</div></div>';
 $text .= '<div class="row"><div class="cell">'.$lang['free_space'].'</div><div class="cell right">'.$sizes['free'].'</div></div>';
 $text .= '</details></div>'; // details
 if ($conf['show_total_size']) $text .= '<div class="cell right">'.$sizes['total'].'</div>';
 $text .= '</div>'; // row
 } else { // Error Data
 $free_percentage = -1;
 $text_percentage = $errors['NoFoundData'];
 $disk_icon = GetPercentageIcon($free_percentage);
 
 $text .= '<div class="row">';
 $text .= '<div class="cell"><details><summary>'.$disk_icon.$type.'<b>'.$drive.'</b>'.$text_percentage.'</summary>';
 $text .= '<div class="row"><div class="cell">'.$text2.'</div>';
 $text .= '</details></div>'; // details
 if ($conf['show_total_size']) $text .= '<div class="cell right"> ----- </div>';
 $text .= '</div>'; // row
 }
 }
 
 $text .= '</div></div>'; // table/text
 $text .= '<div class="more"><a target="_blank" href="https://extensions.ascoos.com/"><strong>...'.$lang['more'].'</strong></a></div>';
 $text .= '</div>'; // block
 echo $text;
 ?>
 
 <script type="text/javascript">
 $(document).ready(function() {
 $('head').append('<link rel="stylesheet" type="text/css" href="<?php echo 'themes/'.$conf['theme'].'/theme.css';?>">');
 $('details').on('toggle', function() {
 if (this.open) {
 $(this).find('summary').addClass('open');
 } else {
 $(this).find('summary').removeClass('open');
 }
 });
 });
 </script>
 |