Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6858 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
6849 efrain 7
 
1 www 8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
 
11
 
12
class StorageController extends AbstractActionController
13
{
14
    /**
15
     *
16
     * @var AdapterInterface
17
     */
18
    private $adapter;
6849 efrain 19
 
6859 efrain 20
 
1 www 21
    /**
22
     *
23
     * @var  LoggerInterface
24
     */
25
    private $logger;
26
 
27
 
28
    /**
29
     *
30
     * @var array
31
     */
32
    private $config;
33
 
34
    /**
35
     *
36
     * @param AdapterInterface $adapter
37
     * @param LoggerInterface $logger
38
     * @param array $config
39
     */
6858 efrain 40
    public function __construct($adapter, $logger, $config)
1 www 41
    {
42
        $this->adapter      = $adapter;
43
        $this->logger       = $logger;
44
        $this->config       = $config;
45
    }
46
 
47
    public function downloadAction()
48
    {
49
 
50
 
51
        // Get the file name from GET variable.
52
        $code       = $this->params()->fromRoute('code', '');
53
        $fileName   = $this->params()->fromRoute('filename', '');
54
        $type       = $this->params()->fromRoute('type', 'user');
55
 
56
 
57
 
58
       // echo 'Code = '. $code . ' Filename = ' . $fileName . ' type = ' . $type; exit;
59
 
60
 
61
 
62
        $no_image = $this->config['leaderslinked.images_default.no_image'];
63
        $path = '';
64
        switch($type)
65
        {
66
            case 'user' :
67
                $no_image = $this->config['leaderslinked.images_default.user_image'];
68
                $path = $this->config['leaderslinked.fullpath.user'];
69
                break;
70
 
71
 
72
            case 'user-profile' :
73
                $no_image = $this->config['leaderslinked.images_default.user_profile'];
74
                $path = $this->config['leaderslinked.fullpath.user'];
75
                break;
76
 
77
            case 'user-cover' :
78
                $no_image = $this->config['leaderslinked.images_default.user_cover'];
79
                $path = $this->config['leaderslinked.fullpath.user'];
80
                break;
81
 
82
            case 'company' :
83
                $no_image = $this->config['leaderslinked.images_default.company_profile'];
84
                $path = $this->config['leaderslinked.fullpath.company'];
85
                break;
86
 
87
            case 'company-cover' :
88
                $no_image = $this->config['leaderslinked.images_default.company_cover'];
89
 
90
 
91
                $path = $this->config['leaderslinked.fullpath.company'];
92
                break;
93
 
94
            case 'group' :
95
                $no_image = $this->config['leaderslinked.images_default.group_profile'];
96
                $path = $this->config['leaderslinked.fullpath.group'];
97
                break;
98
 
99
            case 'group-cover' :
100
                $no_image = $this->config['leaderslinked.images_default.group_cover'];
101
                $path = $this->config['leaderslinked.fullpath.group'];
102
                break;
103
 
104
            case 'job' :
105
                $path = $this->config['leaderslinked.fullpath.job'];
106
                break;
107
 
108
            case 'chat' :
109
                $path = $this->config['leaderslinked.fullpath.chat'];
110
                break;
111
 
112
            case 'feed' :
113
                $path = $this->config['leaderslinked.fullpath.feed'];
114
                break;
115
 
116
            case 'post' :
117
                $path = $this->config['leaderslinked.fullpath.post'];
118
                break;
119
 
120
            case 'message' :
121
                $path = $this->config['leaderslinked.fullpath.message'];
122
                break;
123
 
124
            case 'microlearning-topic' :
125
                $path = $this->config['leaderslinked.fullpath.microlearning_topic'];
126
                break;
127
 
128
            case 'microlearning-capsule' :
129
                $path = $this->config['leaderslinked.fullpath.microlearning_capsule'];
130
                break;
131
 
132
            case 'microlearning-slide' :
133
                $path = $this->config['leaderslinked.fullpath.microlearning_slide'];
134
                break;
135
 
5205 efrain 136
            case 'daily-pulse' :
137
                $path = $this->config['leaderslinked.fullpath.daily_pulse'];
138
                break;
139
 
5223 efrain 140
            case 'engagement-reward' :
141
                $path = $this->config['leaderslinked.fullpath.engagement_reward'] ;
142
                break;
143
 
6056 efrain 144
            case 'knowledge-area' :
145
                $path = $this->config['leaderslinked.fullpath.knowledge_area'] ;
146
                break;
147
 
1 www 148
            default :
149
                $path = $this->config['leaderslinked.fullpath.image'];
150
                break;
151
 
152
        }
153
        if($code && $fileName) {
154
            $request_fullpath = $path . $code . DIRECTORY_SEPARATOR . $fileName;
155
        } else {
156
            $request_fullpath = $no_image;
157
        }
6803 efrain 158
 
159
 
160
        $extensions     = explode('.',$request_fullpath);
161
        $extension      = strtolower(trim($extensions[count($extensions)-1]));
162
        if ($extension=='jpg' || $extension=='jpeg' || $extension=='gif' || $extension == 'png') {
163
 
164
            if(empty($fileName) ||  !file_exists($request_fullpath )) {
1 www 165
                $request_fullpath =  $no_image;
166
            }
6803 efrain 167
 
168
 
169
 
1 www 170
        }
171
 
172
 
173
 
6803 efrain 174
 
1 www 175
        if(file_exists($request_fullpath)) {
176
 
177
            // Try to open file
178
            if (!is_readable($request_fullpath)) {
179
                return $this->getResponse()->setStatusCode(500);
180
            }
181
 
182
            // Get file size in bytes.
183
            $fileSize = filesize($request_fullpath);
184
 
185
            // Get MIME type of the file.
186
            $mimeType = mime_content_type($request_fullpath);
187
            if($mimeType===false) {
188
                $mimeType = 'application/octet-stream';
189
            }
190
 
191
            $fileContent = file_get_contents($request_fullpath);
192
 
193
            $response = $this->getResponse();
194
            $headers = $response->getHeaders();
195
            $headers->addHeaderLine('Content-type: ' . $mimeType);
196
            $headers->addHeaderLine('Content-length: ' . $fileSize);
197
 
198
            if($fileContent!==false) {
199
                $response->setContent($fileContent);
200
            } else {
201
                $this->getResponse()->setStatusCode(500);
202
                return;
203
            }
204
        } else {
205
            return $this->getResponse()->setStatusCode(404);
206
        }
207
 
208
        return $this->getResponse();
209
    }
210
 
211
}