Passed
Push — master ( 2f2d8f...df17d5 )
by
unknown
14:39 queued 07:31
created

AdminController   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 39
dl 0
loc 63
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A registerCampus() 0 16 2
A __construct() 0 6 1
A listFilesInfo() 0 33 3
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Controller\Admin;
8
9
use Chamilo\CoreBundle\Controller\BaseController;
10
use Chamilo\CoreBundle\Repository\ResourceFileRepository;
11
use Chamilo\CoreBundle\Repository\ResourceNodeRepository;
12
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
13
use Chamilo\CoreBundle\Settings\SettingsManager;
14
use Doctrine\ORM\EntityManagerInterface;
15
use Symfony\Component\HttpFoundation\Request;
16
use Symfony\Component\HttpFoundation\Response;
17
use Symfony\Component\Routing\Annotation\Route;
18
use Symfony\Component\Security\Http\Attribute\IsGranted;
19
use Vich\UploaderBundle\Storage\StorageInterface;
20
21
#[Route('/admin')]
22
class AdminController extends BaseController
23
{
24
    private const ITEMS_PER_PAGE = 50;
25
26
    public function __construct(
27
        private EntityManagerInterface $entityManager,
28
        private ResourceNodeRepository $resourceNodeRepository,
29
        private StorageInterface $storage,
30
        private AccessUrlHelper $accessUrlHelper
31
    ) {}
32
33
    #[IsGranted('ROLE_ADMIN')]
34
    #[Route('/register-campus', name: 'admin_register_campus', methods: ['POST'])]
35
    public function registerCampus(Request $request, SettingsManager $settingsManager): Response
36
    {
37
        $requestData = $request->toArray();
38
        $doNotListCampus = (bool) $requestData['donotlistcampus'];
39
40
        $settingsManager->setUrl($this->accessUrlHelper->getCurrent());
41
        $settingsManager->updateSetting('platform.registered', 'true');
42
43
        $settingsManager->updateSetting(
44
            'platform.donotlistcampus',
45
            $doNotListCampus ? 'true' : 'false'
46
        );
47
48
        return new Response('', Response::HTTP_NO_CONTENT);
49
    }
50
51
    #[IsGranted('ROLE_ADMIN')]
52
    #[Route('/files_info', name: 'admin_files_info', methods: ['GET'])]
53
    public function listFilesInfo(Request $request, ResourceFileRepository $resourceFileRepository): Response
54
    {
55
        $page = $request->query->getInt('page', 1);
56
        $search = $request->query->get('search', '');
57
        $offset = ($page - 1) * self::ITEMS_PER_PAGE;
58
59
        $files = $resourceFileRepository->searchFiles($search, $offset, self::ITEMS_PER_PAGE);
60
        $totalItems = $resourceFileRepository->countFiles($search);
61
        $totalPages = ceil($totalItems / self::ITEMS_PER_PAGE);
62
63
        $fileUrls = [];
64
        $filePaths = [];
65
        foreach ($files as $file) {
66
            $resourceNode = $file->getResourceNode();
67
            if ($resourceNode) {
68
                $fileUrls[$file->getId()] = $this->resourceNodeRepository->getResourceFileUrl($resourceNode);
69
                $creator = $resourceNode->getCreator();
70
            } else {
71
                $fileUrls[$file->getId()] = null;
72
                $creator = null;
73
            }
74
            $filePaths[$file->getId()] = '/upload/resources'.$this->resourceNodeRepository->getFilename($file);
75
        }
76
77
        return $this->render('@ChamiloCore/Admin/files_info.html.twig', [
78
            'files' => $files,
79
            'fileUrls' => $fileUrls,
80
            'filePaths' => $filePaths,
81
            'totalPages' => $totalPages,
82
            'currentPage' => $page,
83
            'search' => $search,
84
        ]);
85
    }
86
}
87