Rev 8550 | AutorÃa | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Cache\Storage\Adapter\AbstractAdapter;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\Mvc\I18n\Translator;use Laminas\Authentication\AuthenticationService;use LeadersLinked\Library\Functions;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Mapper\UserProfileMapper;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Mapper\GroupMapper;use LeadersLinked\Mapper\JobMapper;use LeadersLinked\Mapper\ChatUserMapper;use LeadersLinked\Mapper\ChatGroupMapper;class StorageController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @param AdapterInterface $adapter* @param AbstractAdapter $cache* @param LoggerInterface $logger* @param array $config*/public function __construct($adapter, $cache , $logger, $config){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;}public function downloadAction(){// Get the file name from GET variable.$code = $this->params()->fromRoute('code', '');$code2 = $this->params()->fromRoute('code2', '');$fileName = $this->params()->fromRoute('filename', '');$type = $this->params()->fromRoute('type', 'user');$no_image = $this->config['leaderslinked.images_default.no_image'];$path = '';switch($type){case 'user' :$no_image = $this->config['leaderslinked.images_default.user_image'];$path = $this->config['leaderslinked.fullpath.user'];break;case 'user-profile' :$no_image = $this->config['leaderslinked.images_default.user_profile'];$path = $this->config['leaderslinked.fullpath.user'];break;case 'user-cover' :$no_image = $this->config['leaderslinked.images_default.user_cover'];$path = $this->config['leaderslinked.fullpath.user'];break;case 'company' :$no_image = $this->config['leaderslinked.images_default.company_profile'];$path = $this->config['leaderslinked.fullpath.company'];break;case 'company-cover' :$no_image = $this->config['leaderslinked.images_default.company_cover'];$path = $this->config['leaderslinked.fullpath.company'];break;case 'group' :$no_image = $this->config['leaderslinked.images_default.group_profile'];$path = $this->config['leaderslinked.fullpath.group'];break;case 'group-cover' :$no_image = $this->config['leaderslinked.images_default.group_cover'];$path = $this->config['leaderslinked.fullpath.group'];break;case 'job' :$path = $this->config['leaderslinked.fullpath.job'];break;case 'chat' :$path = $this->config['leaderslinked.fullpath.chat'];break;case 'feed' :$path = $this->config['leaderslinked.fullpath.feed'];break;case 'post' :$path = $this->config['leaderslinked.fullpath.post'];break;case 'message' :$path = $this->config['leaderslinked.fullpath.message'];break;case 'microlearning-topic' :$path = $this->config['leaderslinked.fullpath.microlearning_topic'];break;case 'microlearning-capsule' :$path = $this->config['leaderslinked.fullpath.microlearning_capsule'];break;case 'microlearning-slide' :$path = $this->config['leaderslinked.fullpath.microlearning_slide'];break;case 'recruitment-selection' :$path = $this->config['leaderslinked.fullpath.recruitment_selection'];break;default :$path = $this->config['leaderslinked.fullpath.image'];break;}if($code && $fileName) {if (empty($code2)) {$request_fullpath = $path . $code . DIRECTORY_SEPARATOR . $fileName;} else {$request_fullpath = $path . $code . DIRECTORY_SEPARATOR. $code2. DIRECTORY_SEPARATOR . $fileName;}} else {$request_fullpath = $no_image;}if(empty($fileName)) {$extensions = explode('.',$request_fullpath);$extension = strtolower(trim($extensions[count($extensions)-1]));if ($extension=='jpg' || $extension=='jpeg' || $extension=='gif' || $extension == 'png') {$request_fullpath = $no_image;}}//echo $request_fullpath; exit;if(file_exists($request_fullpath)) {// Try to open fileif (!is_readable($request_fullpath)) {return $this->getResponse()->setStatusCode(500);}// Get file size in bytes.$fileSize = filesize($request_fullpath);// Get MIME type of the file.$mimeType = mime_content_type($request_fullpath);if($mimeType===false) {$mimeType = 'application/octet-stream';}$fileContent = file_get_contents($request_fullpath);$response = $this->getResponse();$headers = $response->getHeaders();$headers->addHeaderLine('Content-type: ' . $mimeType);$headers->addHeaderLine('Content-length: ' . $fileSize);if($fileContent!==false) {$response->setContent($fileContent);} else {$this->getResponse()->setStatusCode(500);return;}} else {return $this->getResponse()->setStatusCode(404);}return $this->getResponse();}}