public function download(array $params) { $config = OW::getConfig(); $canDownload = $config->getValue('gphotoviewer', 'can_users_to_download_photos'); if (!$canDownload) { throw new Redirect404Exception(); } if (!isset($params['id']) || !($photoId = (int) $params['id'])) { throw new Redirect404Exception(); } $photo = $this->photoService->findPhotoById($photoId); if (!$photo) { throw new Redirect404Exception(); } $canView = true; if (!$ownerMode && !$modPermissions && !OW::getUser()->isAuthorized('photo', 'view')) { $canView = false; throw new Redirect404Exception(); } if ((int) BOL_PluginService::getInstance()->findPluginByKey('photo')->build > 6272) { $url = $this->photoService->getPhotoPath($photo->id, $photo->hash); } else { $url = $this->photoService->getPhotoPath($photo->id); } if (file_exists($url) && is_readable($url)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($url)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($url)); ob_clean(); flush(); readfile($url); exit; } else { throw new Redirect404Exception(); } exit; }
public function getPhotoForAvatar(OW_Event $e) { $params = $e->getParams(); if ($params['entityType'] == 'photo_album') { $id = $params['id']; $photo = $this->photoService->findPhotoById($id); if ($photo) { $type = (bool) $photo->hasFullsize ? PHOTO_BOL_PhotoService::TYPE_ORIGINAL : PHOTO_BOL_PhotoService::TYPE_MAIN; $data = array('url' => $this->photoService->getPhotoUrlByType($photo->id, $type, $photo->hash, $photo->dimension), 'path' => $this->photoService->getPhotoPath($photo->id, $photo->hash, $type)); $e->setData($data); return $data; } } }