1<?php
2
3use ILIAS\FileUpload\Handler\AbstractCtrlAwareUploadHandler;
4use ILIAS\FileUpload\Handler\BasicFileInfoResult;
5use ILIAS\FileUpload\Handler\BasicHandlerResult;
6use ILIAS\FileUpload\Handler\FileInfoResult;
7use ILIAS\FileUpload\Handler\HandlerResult;
8
9/**
10 * Class ilUIDemoFileUploadHandlerGUI
11 *
12 * @ilCtrl_isCalledBy ilUIDemoFileUploadHandlerGUI: ilUIPluginRouterGUI
13 */
14class ilUIDemoFileUploadHandlerGUI extends AbstractCtrlAwareUploadHandler
15{
16
17    /**
18     * @inheritDoc
19     */
20    public function getUploadURL() : string
21    {
22        $this->ctrl->initBaseClass(ilUIPluginRouterGUI::class);
23
24        return $this->ctrl->getLinkTargetByClass([ilUIPluginRouterGUI::class, self::class], self::CMD_UPLOAD);
25    }
26
27
28    /**
29     * @inheritDoc
30     */
31    public function getExistingFileInfoURL() : string
32    {
33        $this->ctrl->initBaseClass(ilUIPluginRouterGUI::class);
34
35        return $this->ctrl->getLinkTargetByClass([ilUIPluginRouterGUI::class, self::class], self::CMD_INFO);
36    }
37
38
39    /**
40     * @inheritDoc
41     */
42    public function getFileRemovalURL() : string
43    {
44        $this->ctrl->initBaseClass(ilUIPluginRouterGUI::class);
45
46        return $this->ctrl->getLinkTargetByClass([ilUIPluginRouterGUI::class, self::class], self::CMD_REMOVE);
47    }
48
49
50    /**
51     * @inheritDoc
52     */
53    public function getFileIdentifierParameterName() : string
54    {
55        return 'my_file_id';
56    }
57
58
59    /**
60     * @inheritDoc
61     */
62    protected function getUploadResult() : HandlerResult
63    {
64        $status = HandlerResult::STATUS_OK;
65        $identifier = md5(random_bytes(65));
66        $message = 'Everything ok';
67
68        return new BasicHandlerResult($this->getFileIdentifierParameterName(), $status, $identifier, $message);
69    }
70
71
72    protected function getRemoveResult(string $identifier) : HandlerResult
73    {
74        $status = HandlerResult::STATUS_OK;
75        $message = 'File Deleted';
76
77        return new BasicHandlerResult($this->getFileIdentifierParameterName(), $status, $identifier, $message);
78    }
79
80
81    protected function getInfoResult(string $identifier) : FileInfoResult
82    {
83        return new BasicFileInfoResult($this->getFileIdentifierParameterName(), $identifier, "My funny Testfile $identifier.txt", 64);
84    }
85
86
87    public function getInfoForExistingFiles(array $file_ids) : array
88    {
89        $infos = [];
90        foreach ($file_ids as $file_id) {
91            $infos[] = new BasicFileInfoResult($this->getFileIdentifierParameterName(), $file_id, "Name $file_id.txt", rand(1000, 2000), "text/plain");
92        }
93
94        return $infos;
95    }
96}
97