Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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