public function view(array $params) { if (!isset($params['id']) || !($photoId = (int) $params['id'])) { throw new Redirect404Exception(); } $lang = OW::getLanguage(); $photo = $this->photoService->findPhotoById($photoId); if (!$photo) { throw new Redirect404Exception(); } $album = $this->photoAlbumService->findAlbumById($photo->albumId); $this->assign('album', $album); $ownerName = BOL_UserService::getInstance()->getUserName($album->userId); $albumUrl = OW::getRouter()->urlForRoute('photo_user_album', array('album' => $album->id, 'user' => $ownerName)); $this->assign('albumUrl', $albumUrl); // is owner $contentOwner = $this->photoService->findPhotoOwner($photo->id); $userId = OW::getUser()->getId(); $ownerMode = $contentOwner == $userId; $this->assign('ownerMode', $ownerMode); // is moderator $modPermissions = OW::getUser()->isAuthorized('photo'); $this->assign('moderatorMode', $modPermissions); $this->assign('url', $this->photoService->getPhotoUrl($photo->id, false, $photo->hash)); if (!$ownerMode && !$modPermissions && !OW::getUser()->isAuthorized('photo', 'view')) { $status = BOL_AuthorizationService::getInstance()->getActionStatus('photo', 'view'); $this->assign('authError', $status['msg']); return; } // permissions check if (!$ownerMode && !$modPermissions) { $privacyParams = array('action' => 'photo_view_album', 'ownerId' => $contentOwner, 'viewerId' => $userId); $event = new OW_Event('privacy_check_permission', $privacyParams); OW::getEventManager()->trigger($event); } $photo->description = UTIL_HtmlTag::autoLink($photo->description); $this->assign('photo', $photo); $fullsizeUrl = (int) OW::getConfig()->getValue('photo', 'store_fullsize') && $photo->hasFullsize ? $this->photoService->getPhotoFullsizeUrl($photo->id, $photo->hash) : null; $this->assign('fullsizeUrl', $fullsizeUrl); $this->assign('nextPhoto', $this->photoService->getNextPhotoId($photo->albumId, $photo->id)); $this->assign('previousPhoto', $this->photoService->getPreviousPhotoId($photo->albumId, $photo->id)); $photoCount = $this->photoAlbumService->countAlbumPhotos($photo->albumId); $this->assign('photoCount', $photoCount); $photoIndex = $this->photoService->getPhotoIndex($photo->albumId, $photo->id); $this->assign('photoIndex', $photoIndex); $avatar = BOL_AvatarService::getInstance()->getDataForUserAvatars(array($contentOwner), true, true, true, false); $this->assign('avatar', $avatar[$contentOwner]); $cmtParams = new BASE_CommentsParams('photo', 'photo_comments'); $cmtParams->setEntityId($photo->id); $cmtParams->setOwnerId($contentOwner); $cmtParams->setDisplayType(BASE_CommentsParams::DISPLAY_TYPE_BOTTOM_FORM_WITH_FULL_LIST); $photoCmts = new BASE_MCMP_Comments($cmtParams); $this->addComponent('comments', $photoCmts); OW::getDocument()->setHeading($album->name); $description = strip_tags($photo->description); $description = mb_strlen($description) ? $description : $photo->id; OW::getDocument()->setTitle($lang->text('photo', 'meta_title_photo_view', array('title' => $description))); }