You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							192 lines
						
					
					
						
							6.2 KiB
						
					
					
				
			
		
		
	
	
							192 lines
						
					
					
						
							6.2 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
/**
 | 
						|
 * Plugin.
 | 
						|
 *
 | 
						|
 * @author Jose Angel Ruiz
 | 
						|
 */
 | 
						|
$cidReset = true;
 | 
						|
require_once __DIR__.'/config.php';
 | 
						|
 | 
						|
api_protect_admin_script();
 | 
						|
 | 
						|
/** @var \CleanDeletedFilesPlugin $plugin */
 | 
						|
$plugin = CleanDeletedFilesPlugin::create();
 | 
						|
$plugin_info = $plugin->get_info();
 | 
						|
$isPlatformAdmin = api_is_platform_admin();
 | 
						|
 | 
						|
if ($plugin->isEnabled() && $isPlatformAdmin) {
 | 
						|
    $htmlHeadXtra[] = '<script>
 | 
						|
    $(function() {
 | 
						|
        $(".delete-file").click(function(e) {
 | 
						|
            e.preventDefault();
 | 
						|
            var path = $(this).prop("href").substr(7);
 | 
						|
            if (confirm("'.$plugin->get_lang("ConfirmDelete").'")) {
 | 
						|
                $.post(
 | 
						|
                    "src/ajax.php",
 | 
						|
                    {a:"delete-file", path:path},
 | 
						|
                    function(data){
 | 
						|
                        if (data.status == "false") {
 | 
						|
                            alert(data.message);
 | 
						|
                        } else {
 | 
						|
                            location.reload();
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    "json"
 | 
						|
                );
 | 
						|
            }
 | 
						|
        });
 | 
						|
 | 
						|
        $(".select_all").click(function(e) {
 | 
						|
            var id = $(this).prop("id").substr(7);
 | 
						|
            if( $(this).prop("checked") ) {
 | 
						|
                $(".checkbox-"+id).prop( "checked", true);
 | 
						|
            } else {
 | 
						|
                $(".checkbox-"+id).prop( "checked", false);
 | 
						|
            }
 | 
						|
        });
 | 
						|
 | 
						|
        $("#delete-selected-files").click(function(e) {
 | 
						|
            if (confirm("'.$plugin->get_lang("ConfirmDeleteFiles").'")) {
 | 
						|
                var list = [];
 | 
						|
                $.each($(".checkbox-item:checked"), function() {
 | 
						|
                    list.push($(this).prop("id"));
 | 
						|
                });
 | 
						|
 | 
						|
                $.post(
 | 
						|
                    "src/ajax.php",
 | 
						|
                    {a:"delete-files-list", list:list},
 | 
						|
                    function(data){
 | 
						|
                        if (data.status == "false") {
 | 
						|
                            alert(data.message);
 | 
						|
                        } else {
 | 
						|
                            location.reload();
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    "json"
 | 
						|
                );
 | 
						|
            }
 | 
						|
        });
 | 
						|
    });
 | 
						|
    </script>';
 | 
						|
 | 
						|
    $nameTools = $plugin->get_lang("FileList");
 | 
						|
    Display::display_header($nameTools);
 | 
						|
    echo Display::page_header($nameTools);
 | 
						|
 | 
						|
    $pathList = [
 | 
						|
        "app/courses",
 | 
						|
        "app/upload",
 | 
						|
    ];
 | 
						|
 | 
						|
    function findDeletedFiles($pathRelative)
 | 
						|
    {
 | 
						|
        global $sizePath;
 | 
						|
        $pathAbsolute = api_get_path(SYS_PATH).$pathRelative;
 | 
						|
        $result = [];
 | 
						|
        if (is_dir($pathAbsolute)) {
 | 
						|
            $dir = dir($pathAbsolute);
 | 
						|
            while ($file = $dir->read()) {
 | 
						|
                if (is_file($pathAbsolute.'/'.$file)) {
 | 
						|
                    $filesize = round(filesize($pathAbsolute.'/'.$file) / 1024, 1);
 | 
						|
                    $pos = strpos($file, "DELETED");
 | 
						|
                    if ($pos !== false) {
 | 
						|
                        $result[] = [
 | 
						|
                            'path_complete' => $pathAbsolute.'/'.$file,
 | 
						|
                            'path_relative' => $pathRelative.'/'.$file,
 | 
						|
                            'size' => $filesize,
 | 
						|
                        ];
 | 
						|
                        $sizePath += $filesize;
 | 
						|
                    }
 | 
						|
                } else {
 | 
						|
                    if ($file != '..' && $file != '.') {
 | 
						|
                        $result = array_merge($result, findDeletedFiles($pathRelative.'/'.$file));
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    $sizeTotal = 0;
 | 
						|
    $i = 0;
 | 
						|
    foreach ($pathList as $pathItem) {
 | 
						|
        $sizePath = 0;
 | 
						|
        $filesDeletedList = findDeletedFiles($pathItem);
 | 
						|
        echo Display::page_subheader($plugin->get_lang("path_dir").": ".$pathItem);
 | 
						|
 | 
						|
        if (count($filesDeletedList) > 0) {
 | 
						|
            echo "<ul>";
 | 
						|
            echo "<li>".$plugin->get_lang('FilesDeletedMark').": <strong>".count($filesDeletedList)."</strong>";
 | 
						|
            echo "<li>".$plugin->get_lang('FileDirSize').": ";
 | 
						|
            if ($sizePath >= 1024) {
 | 
						|
                echo "<strong>".round($sizePath / 1024, 1)." Mb</strong>";
 | 
						|
            } else {
 | 
						|
                echo "<strong>".$sizePath." Kb</strong>";
 | 
						|
            }
 | 
						|
            echo "</ul>";
 | 
						|
 | 
						|
            $header = [
 | 
						|
                [
 | 
						|
                    '<input type="checkbox" id="select_'.$i.'" class="select_all" />',
 | 
						|
                    false,
 | 
						|
                    null,
 | 
						|
                    ['style' => 'text-align:center'],
 | 
						|
                ],
 | 
						|
                [$plugin->get_lang('path_dir'), true],
 | 
						|
                [$plugin->get_lang('size'), true, null, ['style' => 'min-width:85px']],
 | 
						|
                [get_lang('Actions'), false],
 | 
						|
            ];
 | 
						|
 | 
						|
            $data = [];
 | 
						|
            $deleteIcon = Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL);
 | 
						|
 | 
						|
            foreach ($filesDeletedList as $value) {
 | 
						|
                $tools = Display::url(
 | 
						|
                    $deleteIcon,
 | 
						|
                    'file://'.$value['path_complete'],
 | 
						|
                    ['class' => 'delete-file']
 | 
						|
                );
 | 
						|
 | 
						|
                $row = [
 | 
						|
                    '<input type="checkbox"
 | 
						|
                        class="checkbox-'.$i.' checkbox-item"
 | 
						|
                        id="file://'.$value['path_complete'].'" />',
 | 
						|
                    $value['path_relative'],
 | 
						|
                    $value['size'].' '.($value['size'] >= 1024 ? 'Mb' : 'Kb'),
 | 
						|
                    $tools,
 | 
						|
                ];
 | 
						|
                $data[] = $row;
 | 
						|
            }
 | 
						|
 | 
						|
            echo Display::return_sortable_table(
 | 
						|
                $header,
 | 
						|
                $data,
 | 
						|
                [],
 | 
						|
                ['per_page' => 100],
 | 
						|
                []
 | 
						|
            );
 | 
						|
        } else {
 | 
						|
            $message = $plugin->get_lang('NoFilesDeleted');
 | 
						|
            echo Display::return_message($message, 'warning', false);
 | 
						|
        }
 | 
						|
        $sizeTotal += $sizePath;
 | 
						|
        echo '<hr>';
 | 
						|
        $i++;
 | 
						|
    }
 | 
						|
 | 
						|
    if ($sizeTotal >= 1024) {
 | 
						|
        echo $plugin->get_lang('SizeTotalAllDir').": <strong>".round($sizeTotal / 1024, 1).' Mb</strong>';
 | 
						|
    } else {
 | 
						|
        echo $plugin->get_lang('SizeTotalAllDir').": <strong>".$sizeTotal.' Kb</strong>';
 | 
						|
    }
 | 
						|
    echo '<hr>';
 | 
						|
    echo '<a href="#" id="delete-selected-files" class="btn btn-primary">'.
 | 
						|
        $plugin->get_lang("DeleteSelectedFiles").
 | 
						|
        '</a>';
 | 
						|
 | 
						|
    Display::display_footer();
 | 
						|
}
 | 
						|
 |