Файловый менеджер - Редактировать - /var/www/html/components/com_community/views/photos/view.html.php
Ðазад
<?php /** * @copyright (C) 2013 iJoomla, Inc. - All rights reserved. * @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html) * @author iJoomla.com <webmaster@ijoomla.com> * @url https://www.jomsocial.com/license-agreement * The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0 * More info at https://www.jomsocial.com/license-agreement */ use Joomla\CMS\Date\Date; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Table\Table; // no direct access defined('_JEXEC') or die('Restricted access'); if (!class_exists('CommunityViewPhotos')) { class CommunityViewPhotos extends CommunityView { public function regen() { /** * Opengraph */ CHeadHelper::setType('website', Text::_('Running the Utility')); $tmpl = new CTemplate(); echo $tmpl->fetch('photos.regen'); } public function _addSubmenu() { $handler = $this->_getHandler(); $handler->setSubmenus(); } public function _flashuploader() { $jinput = Factory::getApplication()->input; $groupId = $jinput->request->getInt('groupid', ''); $pageId = $jinput->request->getInt('pageid', ''); $model = CFactory::getModel('photos'); // Since upload will always be the browser's photos, use the browsers id $my = CFactory::getUser(); // Maintenance mode, clear out tokens that are older than 1 hours $model->cleanUpTokens(); $token = $model->getUserUploadToken($my->id); // We need to generate our own session management since there // are some bridges causes the flash browser to not really work. if (!$token && $my->id != 0) { // Get the current browsers session object. $mySession = Factory::getSession(); // Generate a session handler for this user. $myToken = $mySession->getToken(true); $date = JDate::getInstance(); $token = new stdClass(); $token->userid = $my->id; $token->datetime = $date->toSql(); $token->token = $myToken; $model->addUserUploadSession($token); } $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $config = CFactory::getConfig(); $albumId = $jinput->request->get('albumid', '', 'INT'); $handler = $this->_getHandler(); $uploadURI = $handler->getFlashUploadURI($token, $albumId); $albums = ''; $createAlbumLink = ''; $photoUploaded = ''; $photoUploadLimit = ''; $viewAlbumLink = ''; if (!empty($groupId)) { //CFactory::load( 'models' , 'groups' ); $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $albums = $model->getGroupAlbums($groupId, false, false, '', ( $group->isAdmin($my->id) || COwnerHelper::isCommunityAdmin())); $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $groupId); $photoUploaded = $model->getPhotosCount($groupId, PHOTOS_GROUP_TYPE); $photoUploadLimit = $config->get('groupphotouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&groupid=' . $groupId . '&albumid=' . $albumId); } else if (!empty($pageId)) { $page = Table::getInstance('Page', 'CTable'); $page->load($groupId); $albums = $model->getPageAlbums($pageId, false, false, '', ( $page->isAdmin($my->id) || COwnerHelper::isCommunityAdmin())); $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $pageId); $photoUploaded = $model->getPhotosCount($pageId, PHOTOS_PAGE_TYPE); $photoUploadLimit = $config->get('pagephotouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&pageid=' . $pageId . '&albumid=' . $albumId); } else { $albums = $model->getAlbums($my->id); $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id); $photoUploaded = $model->getPhotosCount($my->id, PHOTOS_USER_TYPE); $photoUploadLimit = $config->get('photouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&userid=' . $my->id . '&albumid=' . $albumId); } $tmpl = new CTemplate(); echo $tmpl->set('createAlbumLink', $createAlbumLink) ->set('albums', $albums) ->set('uploadURI', $uploadURI) ->set('albumId', $albumId) ->set('uploadLimit', $config->get('maxuploadsize')) ->set('photoUploaded', $photoUploaded) ->set('viewAlbumLink', $viewAlbumLink) ->set('photoUploadLimit', $photoUploadLimit) ->fetch('photos.flashuploader'); } /** * Display the multi upload form * */ public function _htmluploader() { $jinput = Factory::getApplication()->input; $groupId = $jinput->getInt('groupid', ''); $pageId = $jinput->getInt('pageid', ''); $model = CFactory::getModel('photos'); $my = CFactory::getUser(); $config = CFactory::getConfig(); $albumId = $jinput->request->getInt('albumid', ''); if (!empty($groupId)) { $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $albums = $model->getGroupAlbums($groupId, false, false, '', ( $group->isAdmin($my->id) || COwnerHelper::isCommunityAdmin())); $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $groupId); $photoUploaded = $model->getPhotosCount($groupId, PHOTOS_GROUP_TYPE); $photoUploadLimit = $config->get('groupphotouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&groupid=' . $groupId . '&albumid=' . $albumId); } else if (!empty($pageId)) { $page = Table::getInstance('Group', 'CTable'); $page->load($pageId); $albums = $model->getPageAlbums($pageId, false, false, '', ( $page->isAdmin($my->id) || COwnerHelper::isCommunityAdmin())); $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $pageId); $photoUploaded = $model->getPhotosCount($pageId, PHOTOS_PAGE_TYPE); $photoUploadLimit = $config->get('pagephotouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&pageid=' . $pageId . '&albumid=' . $albumId); } else { $albums = $model->getAlbums($my->id); if (empty($albumId) && !empty($albums) && !empty($albums[0]->id)) { $albumId = $albums[0]->id; } $createAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id); $photoUploaded = $model->getPhotosCount($my->id, PHOTOS_USER_TYPE); $photoUploadLimit = $config->get('photouploadlimit'); $viewAlbumLink = CRoute::_('index.php?option=com_community&view=photos&task=album&userid=' . $my->id . '&albumid=' . $albumId); } // Attach the photo upload css. // CTemplate::addStylesheet( 'photouploader' ); $tmpl = new CTemplate(); echo $tmpl->set('createAlbumLink', $createAlbumLink) ->set('albums', $albums) ->set('my', CFactory::getUser()) ->set('albumId', $albumId) ->set('photoUploaded', $photoUploaded) ->set('viewAlbumLink', $viewAlbumLink) ->set('photoUploadLimit', $photoUploadLimit) ->set('uploadLimit', $config->get('maxuploadsize')) ->set('submenu', $this->showSubmenu(false)) ->fetch('photos.htmluploader'); } public function showSubmenu($display=true) { $this->_addSubmenu(); return parent::showSubmenu($display); } public function page(){ $this->display(null,'page'); } public function group(){ $this->display(null,'group'); } public function event(){ $this->display(null,'event'); } /** * Default view method * Display all photos in the whole system * @param null $tpl * @param string $albumType either to show group,event or profile */ public function display($tpl = null, $albumType = 'special') { $document = Factory::getDocument(); $my = CFactory::getUser(); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; // Set pathway for group photos // Community > Groups > Group Name > Photos $pageId = $jinput->get->get('pageid', ''); $groupId = $jinput->get->get('groupid', ''); $sortBy = $jinput->getString('sort', 'date'); //event $eventId = $jinput->get->get('eventid', ''); if (!empty($pageId)) { $page = Table::getInstance('Page', 'CTable'); $page->load($pageId); // @rule: Test if the group is unpublished, don't display it at all. if (!$page->published) { $this->_redirectUnpublishPage(); return; } $params = new CParameter($page->params); if ($params->get('photopermission', 0) <= 0) { $mainframe->redirect(CRoute::_('index.php?option=com_community&view=pages&task=viewpagep&pageid='.$pageId, false)); } $pathway = $mainframe->getPathway(); $pathway->addItem(Text::_('COM_COMMUNITY_PAGES'), CRoute::_('index.php?option=com_community&view=pages')); $pathway->addItem($page->name, CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $pageId)); /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_PAGES_PHOTO_LISTING',$page->name)); } else if (!empty($groupId)) { $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); // @rule: Test if the group is unpublished, don't display it at all. if (!$group->published) { $this->_redirectUnpublishGroup(); return; } $params = new CParameter($group->params); if ($params->get('photopermission', 0) <= 0) { $mainframe->redirect(CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid='.$groupId, false)); } $pathway = $mainframe->getPathway(); $pathway->addItem(Text::_('COM_COMMUNITY_GROUPS'), CRoute::_('index.php?option=com_community&view=groups')); $pathway->addItem($group->name, CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $groupId)); /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_GROUPS_PHOTO_LISTING',$group->name)); } else if (!empty($eventId)) { $event = Table::getInstance('Event', 'CTable'); $event->load($eventId); $params = new CParameter($event->params); if ($params->get('photopermission', 0) <= 0) { $mainframe->redirect(CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid='.$eventId, false)); } } else { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS_TITLE')); } $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS_TITLE')); $model = CFactory::getModel('photos'); $limitstart = $jinput->getInt('limitstart', 0); if($eventId || $albumType == PHOTOS_EVENT_TYPE){ $type = PHOTOS_EVENT_TYPE; }elseif($groupId || $albumType == PHOTOS_GROUP_TYPE){ $type = PHOTOS_GROUP_TYPE; }elseif($pageId || $albumType == PHOTOS_PAGE_TYPE){ $type = PHOTOS_PAGE_TYPE; }else{ $type = PHOTOS_USER_TYPE; } $handler = $this->_getHandler($type); $handler->setMiniHeader(); $groupLink = !empty($groupId) ? '&groupid=' . $groupId : ''; $feedLink = CRoute::_('index.php?option=com_community&view=photos' . $groupLink . '&format=feed'); $feed = '<link rel="alternate" type="application/rss+xml" title="' . Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS_FEED') . '" href="' . $feedLink . '"/>'; $document->addCustomTag($feed); $albumsData = $handler->getAllAlbumData($sortBy, $albumType); if ($albumsData === FALSE) { return; } $albumList = array(); foreach ($albumsData['data'] as $album) { if($album->type == "page"){ $page = Table::getInstance('Page', 'CTable'); $page->load($album->pageid); if($page->approvals == 1 ){ if($page->isMember($my->id) || CFactory::getUser()->authorise('community.pageedit', 'com_community') || CFactory::getUser()->authorise('community.pageeditstate', 'com_community') || CFactory::getUser()->authorise('community.pagedelete', 'com_community')) $albumList[] = $album; } else { $albumList[] = $album; } } else if($album->type == "group"){ $group = Table::getInstance('Group', 'CTable'); $group->load($album->groupid); if($group->approvals == 1 ){ if($group->isMember($my->id) || CFactory::getUser()->authorise('community.groupedit', 'com_community') || CFactory::getUser()->authorise('community.groupeditstate', 'com_community') || CFactory::getUser()->authorise('community.groupdelete', 'com_community')) $albumList[] = $album; } else { $albumList[] = $album; } } else { $albumList[] = $album; } } $albumHTML = $this->_getAllAlbumsHTML($albumList, $type, $albumsData['pagination']); $featuredList = array(); if (empty($groupId)) { $featured = new CFeatured(FEATURED_ALBUMS); $featuredAlbums = $featured->getItemIds(); foreach ($featuredAlbums as $album) { $table = Table::getInstance('Album', 'CTable'); $table->load($album); $table->thumbnail = $table->getCoverThumbPath(); $table->thumbnail = ($table->thumbnail) ? JURI::root(true) ."/". $table->thumbnail : JURI::root(true) . '/components/com_community/assets/album_thumb.jpg'; $featuredList[] = $table; } } $tmpl = new CTemplate(); echo $tmpl->set('albumsHTML', $albumHTML) ->set('pageId', $pageId) ->set('groupId', $groupId) ->fetch('photos.index'); } /* * @since 2.4 */ public function modFeaturedAlbum() { return $this->_getFeaturedAlbum(); } /* * @since 2.4 */ private function _getFeaturedAlbum() { $featuredList = array(); $config = CFactory::getConfig(); $featured = new CFeatured(FEATURED_ALBUMS); $featuredAlbums = $featured->getItemIds(); foreach ($featuredAlbums as $album) { $table = Table::getInstance('Album', 'CTable'); $table->load($album); //exclude Albums that has Stricter permissions (non-public) if ($table->permissions > 0) continue; if (empty($table->id)) continue; $table->thumbnail = $table->getCoverThumbPath(); if ($table->location != '') { $zoomableMap = CMapping::drawZoomableMap($table->location, 220, 150); } else { $zoomableMap = ""; } $table->zoomableMap = $zoomableMap; $featuredList[] = $table; } $tmpl = new CTemplate(); $photoTag = CFactory::getModel('phototagging'); //add photos info in featured list $photoModel = CFactory::getModel('photos'); if (is_array($featuredList)) { foreach ($featuredList as &$fl) { // bind photo links $photos = $photoModel->getPhotos($fl->id, 5, 0); $maxTime = ''; $tagRecords = array(); // Get all photos from album if (count($photos)) { for ($i = 0; $i < count($photos); $i++) { $item = Table::getInstance('Photo', 'CTable'); $item->bind($photos[$i]); $photos[$i] = $item; $photo = $photos[$i]; $photo->link = CRoute::_('index.php?option=com_community&view=photos&task=photo&userid=' . $fl->creator . '&albumid=' . $photo->albumid) . '&photoid=' . $photo->id; //Get last update $maxTime = ($photo->created > $maxTime) ? $photo->created : $maxTime; } } //bind album desc if (!$maxTime) { $maxTime = $fl->created; } $maxTime = new JDate($maxTime); $fl->lastUpdated = CActivityStream::_createdLapse($maxTime, false); $fl->photos = $photos; $fl->commentCount = CWallLibrary::getWallCount('albums', $fl->id); } } //try to get the photos within this album // Get show photo location map by default $photoMapsDefault = $config->get('photosmapdefault'); return $tmpl->set('isCommunityAdmin', COwnerHelper::isCommunityAdmin()) ->set('showFeatured', $config->get('show_featured')) ->set('featuredList', $featuredList) ->set('photoModel', $photoModel) ->set('photoMapsDefault', $photoMapsDefault) ->fetch('photos.album.featured'); } public function myphotos() { $my = CFactory::getUser(); $document = Factory::getDocument(); $jinput = Factory::getApplication()->input; $userid = $jinput->getInt('userid', $my->id); $sortBy = $jinput->getString('sort', 'date'); if ($userid) { $user = CFactory::getUser($userid); } else { $user = CFactory::getUser(); } // set bread crumbs if ($userid == $my->id) { $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos')); $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS_MY_PHOTOS_TITLE')); } else { $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos')); $this->addPathway(Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $user->getDisplayName()), CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid=' . $userid)); } $blocked = $user->isBlocked(); if ($blocked && !COwnerHelper::isCommunityAdmin()) { $tmpl = new CTemplate(); echo $tmpl->fetch('profile.blocked'); return; } if ($my->id == $user->id) { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_PHOTOS_MY_PHOTOS_TITLE')); } else { /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $user->getDisplayName())); } $this->attachMiniHeaderUser($user->id); $feedLink = CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid=' . $user->id . '&format=feed'); $feed = '<link rel="alternate" type="application/rss+xml" title="' . Text::_('COM_COMMUNITY_SUBSCRIBE_MY_PHOTOS_FEED') . '" href="' . $feedLink . '"/>'; $document->addCustomTag($feed); $model = CFactory::getModel('photos'); $albums = $model->getProfileAlbums($user->id, true, true, $sortBy, array('group','event')); $tmpl = new CTemplate(); echo $tmpl->set('albumsHTML', $this->_getAllAlbumsHTML($albums, PHOTOS_USER_TYPE, $model->getPagination(),true)) ->fetch('photos.myphotos'); } public function _getAllAlbumsHTML($albums, $type = PHOTOS_USER_TYPE, $pagination = NULL, $isMyOwnPhoto = false) { $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $task = $jinput->getCmd('task'); $my = CFactory::getUser(); $config = CFactory::getConfig(); $pageId = $jinput->get('pageid',0,'int'); $groupId = $jinput->get('groupid',0,'int'); $eventId = $jinput->get('eventid',0,'int'); $handler = $this->_getHandler(); $tmpl = new CTemplate(); // Use for redirect after editAlbum $displaygrp = ($groupId == 0) ? 'display' : 'displaygrp'; $photoModel = CFactory::getModel('Photos'); for ($i = 0; $i < count($albums); $i++) { $albums[$i]->count = count($photoModel->getPhotos($albums[$i]->id,100000,0)); //change the album name according to the latest name of profile, event or groups avatars // act as trigger, have to move this somewhere later. //change album name switch($albums[$i]->type){ case 'page.avatar': $table = Table::getInstance('Page', 'CTable'); $table->load($albums[$i]->pageid); $tmpName = Text::sprintf('COM_COMMUNITY_PAGE_AVATAR_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'group.avatar': $table = Table::getInstance('Group', 'CTable'); $table->load($albums[$i]->groupid); $tmpName = Text::sprintf('COM_COMMUNITY_GROUP_AVATAR_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'event.avatar': $table = Table::getInstance('Event', 'CTable'); $table->load($albums[$i]->eventid); $tmpName = Text::sprintf('COM_COMMUNITY_EVENT_AVATAR_NAME', ucfirst($table->title)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'profile.avatar': $creator = CFactory::getUser($albums[$i]->creator); $tmpName = Text::sprintf('COM_COMMUNITY_PROFILE_AVATAR_NAME', ucfirst($creator->getDisplayName())); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'user' : //default album only if($albums[$i]->default == 1){ $creator = CFactory::getUser($albums[$i]->creator); $tmpName = Text::sprintf('COM_COMMUNITY_PROFILE_DEFAULT_ALBUM_NAME', ucfirst($creator->getDisplayName())); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } // reset the default album to public, always. if($albums[$i]->permission != COMMUNITY_STATUS_PRIVACY_PUBLIC){ $photoModel->updateAlbumPermission($albums[$i]->id); // reset to default } } break; case 'profile.Cover': $creator = CFactory::getUser($albums[$i]->creator); $tmpName = Text::sprintf('COM_COMMUNITY_PROFILE_COVER_NAME'); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'event.Cover': $table = Table::getInstance('Event', 'CTable'); $table->load($albums[$i]->eventid); $tmpName = Text::sprintf('COM_COMMUNITY_EVENT_COVER_NAME', ucfirst($table->title)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'page.Cover': $table = Table::getInstance('Page', 'CTable'); $table->load($albums[$i]->pageid); $tmpName = Text::sprintf('COM_COMMUNITY_PAGE_COVER_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'group.Cover': $table = Table::getInstance('Group', 'CTable'); $table->load($albums[$i]->groupid); $tmpName = Text::sprintf('COM_COMMUNITY_GROUP_COVER_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } break; case 'group': //group default photo if($albums[$i]->default == 1){ $table = Table::getInstance('Group', 'CTable'); $table->load($albums[$i]->groupid); $tmpName = Text::sprintf('COM_COMMUNITY_GROUP_DEFAULT_ALBUM_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } } break; case 'page': //page default photo if($albums[$i]->default == 1){ $table = Table::getInstance('Page', 'CTable'); $table->load($albums[$i]->pageid); $tmpName = Text::sprintf('COM_COMMUNITY_PAGE_DEFAULT_ALBUM_NAME', ucfirst($table->name)); if($albums[$i]->name != $tmpName){ $photoModel->updateAlbumName($albums[$i]->id, $tmpName); $albums[$i]->name = $tmpName; } } break; } $albums[$i]->user = CFactory::getUser($albums[$i]->creator); $albums[$i]->totalComments = CWallLibrary::getWallCount('albums', $albums[$i]->id); $albumLike = new CLike(); $albums[$i]->likeCount = $albumLike->getLikeCount('album', $albums[$i]->id); //$albums[$i]->totalPhotos = $photosModel->getTotalPhotos($albums[$i]->id); if ($type == PHOTOS_PAGE_TYPE) { $albums[$i]->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$albums[$i]->id}&pageid={$albums[$i]->pageid}"); $albums[$i]->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$albums[$i]->id}&pageid={$albums[$i]->pageid}&referrer={$displaygrp}"); $albums[$i]->uploadLink = "javascript:joms.notifications.showUploadPhoto({$albums[$i]->id},{$albums[$i]->pageid});"; $page = Table::getInstance('Page', 'CTable'); $page->load($pageId); $albums[$i]->isOwner = $page->isAdmin($my->id); } else if ($type == PHOTOS_GROUP_TYPE) { $albums[$i]->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$albums[$i]->id}&groupid={$albums[$i]->groupid}"); $albums[$i]->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$albums[$i]->id}&groupid={$albums[$i]->groupid}&referrer={$displaygrp}"); $albums[$i]->uploadLink = "javascript:joms.notifications.showUploadPhoto({$albums[$i]->id},{$albums[$i]->groupid});"; //CRoute::_("index.php?option=com_community&view=photos&task=uploader&albumid={$albums[$i]->id}&groupid={$albums[$i]->groupid}"); $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $albums[$i]->isOwner = $group->isAdmin($my->id); } else { $albums[$i]->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$albums[$i]->id}"); $albums[$i]->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$albums[$i]->id}&userid={$albums[$i]->creator}&referrer=myphotos"); $albums[$i]->uploadLink = "javascript:joms.notifications.showUploadPhoto({$albums[$i]->id});"; //CRoute::_("index.php?option=com_community&view=photos&task=uploader&albumid={$albums[$i]->id}&userid={$albums[$i]->creator}"); $albums[$i]->isOwner = ($my->id == $albums[$i]->creator); } // If new albums that has just been created and // does not contain any images, the lastupdated will always be 0000-00-00 00:00:00:00 // Try to use the albums creation date instead. if ($albums[$i]->lastupdated == '0000-00-00 00:00:00' || $albums[$i]->lastupdated == '') { $albums[$i]->lastupdated = $albums[$i]->created; if ($albums[$i]->lastupdated == '' || $albums[$i]->lastupdated == '0000-00-00 00:00:00') { $albums[$i]->lastupdated = Text::_('COM_COMMUNITY_PHOTOS_NO_ACTIVITY'); } else { $lastUpdated = new JDate($albums[$i]->lastupdated); $albums[$i]->lastupdated = CActivityStream::_createdLapse($lastUpdated, false); } } else { $params = new CParameter($albums[$i]->params); $lastUpdated = new Date($params->get('lastupdated')); $albums[$i]->lastupdated = CActivityStream::_createdLapse($lastUpdated, false); } } $featured = new CFeatured(FEATURED_ALBUMS); $featuredList = $featured->getItemIds(); $createLink = $handler->getAlbumCreateLink(); if ($type == PHOTOS_PAGE_TYPE) { $isOwner = CPageHelper::allowManagePhoto($pageId); $baselink = "index.php?option=com_community&view=photos&pageid=".$pageId; $pageModel = CFactory::getModel('pages'); $page = Table::getInstance('Page', 'CTable'); $page->load($pageId); $params = $page->getParams(); $photopermission = ($params->get('photopermission') == PAGE_PHOTO_PERMISSION_ADMINS || $params->get('photopermission') == PAGE_PHOTO_PERMISSION_ALL ) ? 1 : 0; $isMember = $pageModel->isMember($my->id, $page->id); $isAdmin = $pageModel->isAdmin($my->id, $page->id); $tmpl->set('photoPermission', $photopermission) ->set('isMember', $isMember) ->set('isAdmin', $isAdmin); } else if ($type == PHOTOS_GROUP_TYPE) { $isOwner = CGroupHelper::allowManagePhoto($groupId); $baselink = "index.php?option=com_community&view=photos&groupid=".$groupId; $groupModel = CFactory::getModel('groups'); $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $params = $group->getParams(); $photopermission = ($params->get('photopermission') == GROUP_PHOTO_PERMISSION_ADMINS || $params->get('photopermission') == GROUP_PHOTO_PERMISSION_ALL ) ? 1 : 0; $isMember = $groupModel->isMember($my->id, $group->id); $isAdmin = $groupModel->isAdmin($my->id, $group->id); $tmpl->set('photoPermission', $photopermission) ->set('isMember', $isMember) ->set('isAdmin', $isAdmin); } else { $userId = $jinput->get('userid', ($task == 'myphotos' && $my->id) ? $my->id : '', 'int'); if($task){ $baselink = "index.php?option=com_community&view=photos&task=".$task; }else{ $baselink = "index.php?option=com_community&view=photos"; } $isOwner = ($my->id == $userId && $userId) ? true : false; } $sortBy = $jinput->get('sort', 'date'); $task = $jinput->get('task', ''); return $tmpl->set('isMember', $my->id != 0) ->set('isMyOwnPhoto', $isMyOwnPhoto) ->set('sortBy', $sortBy) ->set('baseLink', $baselink) ->set('config', $config) ->set('isOwner', $isOwner) ->set('type', $type) ->set('createLink', $createLink) ->set('currentTask', $task) ->set('showFeatured', $config->get('show_featured')) ->set('featuredList', $featuredList) ->set('isCommunityAdmin', COwnerHelper::isCommunityAdmin()) ->set('my', $my) ->set('albums', $albums) ->set('pagination', $pagination) ->set('isSuperAdmin', COwnerHelper::isCommunityAdmin()) ->set('pageId', $pageId) ->set('groupId', $groupId) ->set('eventId', $eventId) ->set('submenu', $this->showSubmenu(false)) ->fetch('album/list'); } public function _getAlbumsHTML($albums, $type = PHOTOS_USER_TYPE, $pagination = NULL) { $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $my = CFactory::getUser(); $groupId = $jinput->request->get('groupid', '', 'INT'); $pageId = $jinput->request->get('groupid', '', 'INT'); $tmpl = new CTemplate(); $handler = $this->_getHandler(); $photoTag = CFactory::getModel('phototagging'); $photos = array(); foreach ($albums as &$album) { $album->user = CFactory::getUser($album->creator); $album->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$album->id}&userid={$album->creator}"); $album->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$album->id}&userid={$album->creator}&referrer=myphotos"); $album->uploadLink = "javascript:joms.notifications.showUploadPhoto({$album->id});"; //CRoute::_("index.php?option=com_community&view=photos&task=uploader&albumid={$album->id}&userid={$album->creator}"); $album->isOwner = ($my->id == $album->creator); // Get all photos from album $photos[$album->id] = $handler->getAlbumPhotos($album->id); $photoCount = count($photos[$album->id]); if ($type == PHOTOS_GROUP_TYPE) { $album->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$album->id}&groupid={$album->groupid}"); $album->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$album->id}&groupid={$album->groupid}&referrer=myphotos"); $album->uploadLink = CRoute::_("index.php?option=com_community&view=photos&task=uploader&albumid={$album->id}&groupid={$album->groupid}"); $albums->isOwner = $my->authorise('community.view', 'photos.group.album.' . $groupId, $album); } else if ($type == PHOTOS_PAGE_TYPE) { $album->link = CRoute::_("index.php?option=com_community&view=photos&task=album&albumid={$album->id}&pageid={$album->pageid}"); $album->editLink = CRoute::_("index.php?option=com_community&view=photos&task=editAlbum&albumid={$album->id}&pageid={$album->pageid}&referrer=myphotos"); $album->uploadLink = CRoute::_("index.php?option=com_community&view=photos&task=uploader&albumid={$album->id}&pageid={$album->pageid}"); $albums->isOwner = $my->authorise('community.view', 'photos.group.album.' . $pageId, $album); } } $createLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id); if ($type == PHOTOS_PAGE_TYPE) { $createLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $pageId); $baselink = "index.php?option=com_community&view=photos&pageid=".$pageId; $isOwner = CGroupHelper::allowManagePhoto($pageId); } else if ($type == PHOTOS_GROUP_TYPE) { $createLink = CRoute::_('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $groupId); $baselink = "index.php?option=com_community&view=photos&groupid=".$groupId; $isOwner = CGroupHelper::allowManagePhoto($groupId); } else { $userId = $jinput->request->getInt('userid', ''); $baselink = "index.php?option=com_community&view=photos&task=myphotos&userid=".$userId; $user = CFactory::getUser($userId); $isOwner = ($my->id == $user->id) ? true : false; } $featured = new CFeatured(FEATURED_ALBUMS); $featuredList = $featured->getItemIds(); $config = CFactory::getConfig(); $task = $jinput->get('task', ''); return $tmpl->set('isMember', $my->id != 0) ->set('isOwner', $isOwner) ->set('type', $type) ->set('baseLink', $baselink) ->set('createLink', $createLink) ->set('currentTask', $task) ->set('isCommunityAdmin', COwnerHelper::isCommunityAdmin()) ->set('my', $my) ->set('albums', $albums) ->set('pagination', $pagination) ->set('isSuperAdmin', COwnerHelper::isCommunityAdmin()) ->set('featuredList', $featuredList) ->set('showFeatured', $config->get('show_featured')) ->set('pageId', $pageId) ->set('groupId', $groupId) ->set('config', $config) ->fetch('album/list'); } /** * Displays edit album form * */ public function editAlbum($bolSaveSuccess = true) { $document = Factory::getDocument(); $config = CFactory::getConfig(); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; // Load necessary libraries, models $album = Table::getInstance('Album', 'CTable'); $albumId = $jinput->getInt('albumid', ''); $referrer = $jinput->get->get('referrer', '', 'STRING'); $album->load($albumId); if (strpos($album->type, 'page') !== false) { $type = PHOTOS_PAGE_TYPE; } else if (strpos($album->type, 'group') !== false) { $type = PHOTOS_GROUP_TYPE; } else { $type = PHOTOS_USER_TYPE; } $permissions = $album->permissions ? $album->permissions : $jinput->post->get('permissions', '', 'NONE'); // Added to maintain user input value if there is save error if ($bolSaveSuccess === false) { $album->name = $jinput->post->get('name', '', 'STRING'); $album->location = $jinput->post->get('location', '', 'STRING'); $album->description = $jinput->post->get('description', '', 'STRING'); $album->permissions = $jinput->post->get('permissions', '', 'NONE'); $album->type = $jinput->post->get('type', '', 'NONE'); } $this->addPathway(Text::sprintf('COM_COMMUNITY_PHOTOS_EDIT_ALBUM_TITLE', $album->name)); if ($album->id == 0) { echo Text::_('COM_COMMUNITY_PHOTOS_INVALID_ALBUM'); return; } /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_PHOTOS_EDIT_ALBUM_TITLE', $album->name)); // $js = 'assets/validate-1.5.min.js'; // CFactory::attach($js, 'js'); $app = CAppPlugins::getInstance(); $appFields = $app->triggerEvent('onFormDisplay', array('jsform-photos-newalbum')); $beforeFormDisplay = CFormElement::renderElements($appFields, 'before'); $afterFormDisplay = CFormElement::renderElements($appFields, 'after'); $tmpl = new CTemplate(); echo $tmpl->set('album', $album) ->set('title', Text::sprintf('COM_COMMUNITY_PHOTOS_EDIT_ALBUM_TITLE', $album->name)) ->set('type', $type) ->set('referrer', $referrer) ->set('permissions', $permissions) ->set('beforeFormDisplay', $beforeFormDisplay) ->set('afterFormDisplay', $afterFormDisplay) ->set('enableLocation', $config->get('enable_photos_location')) ->set('submenu', $this->showSubmenu(false)) ->fetch('photos.editalbum'); } /** * Display the new album form * */ public function newalbum() { $config = CFactory::getConfig(); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_PHOTOS_CREATE_NEW_ALBUM_TITLE')); $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos')); $this->addPathway(Text::_('COM_COMMUNITY_PHOTOS_CREATE_NEW_ALBUM_TITLE')); // $js = 'assets/validate-1.5.min.js'; // CFactory::attach($js, 'js'); $handler = $this->_getHandler(); $type = $handler->getType(); $user = CFactory::getRequestUser(); $params = $user->getParams(); $album = Table::getInstance('Album', 'CTable'); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; // Added to maintain user input value if there is save error $album->name = $jinput->post->get('name', '', 'STRING'); $album->location = $jinput->post->get('location', '', 'STRING'); $album->description = $jinput->post->get('description', '', 'STRING'); $album->permissions = $jinput->post->get('permissions', $params->get('privacyPhotoView'), 'NONE'); $album->type = $jinput->post->get('type', '', 'NONE'); $album->eventid = $jinput->get('eventid',0,'INT'); $album->groupid = $jinput->get('groupid', '', 'NONE'); $app = CAppPlugins::getInstance(); $appFields = $app->triggerEvent('onFormDisplay', array('jsform-photos-newalbum')); $beforeFormDisplay = CFormElement::renderElements($appFields, 'before'); $afterFormDisplay = CFormElement::renderElements($appFields, 'after'); $tmpl = new CTemplate(); echo $tmpl->set('beforeFormDisplay', $beforeFormDisplay) ->set('afterFormDisplay', $afterFormDisplay) ->set('permissions', $album->permissions) ->set('type', $type) ->set('album', $album) ->set('referrer', '') ->set('enableLocation', $config->get('enable_photos_location')) ->set('submenu', $this->showSubmenu(false)) ->fetch('photos.editalbum'); } /** * Display the photo thumbnails from an album * */ public function album() { $document = Factory::getDocument(); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $config = CFactory::getConfig(); $my = CFactory::getUser(); //CFactory::load( 'libraries' , 'activities' ); // Get show photo location map by default $photoMapsDefault = $config->get('photosmapdefault'); $albumId = $jinput->get('albumid', 0, 'INT'); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $defaultId = $jinput->get('photoid', 0, 'INT'); $userId = $jinput->get('userid', $album->creator, 'INT'); $jinput->set('userid',$userId); $limitstart = $jinput->get->get('limitstart', '0', 'INT'); if (empty($limitstart)){ $limitstart = $jinput->get->get('start', '0', 'INT'); } $user = CFactory::getUser($album->creator); // Set pathway for group photos // Community > Groups > Group Name > Photos > Album Name $pathway = $mainframe->getPathway(); // add this to the request just in case its missing $jinput->set('eventid',$album->eventid); $jinput->set('groupid',$album->groupid); $jinput->set('pageid',$album->pageid); $pageId = $jinput->get->get('pageid', '', 'INT'); $groupId = $jinput->get->get('groupid', '', 'INT'); $eventId = $jinput->get->get('eventid', '', 'INT'); $handler = $this->_getHandler(); //we must make sure this album exists and not deleted if (!$album->id) { $tmpl = new CTemplate(); echo $tmpl->fetch('album/missingalbum'); return; } if($album->type == 'page'){ if(!$my->authorise('community.view', 'photos.page.album.'.$album->pageid, $album)){ $tmpl = new CTemplate(); echo $tmpl->fetch('album/missingalbum'); return; } } else if($album->type == 'group'){ if(!$my->authorise('community.view', 'photos.group.album.'.$album->groupid, $album)){ $tmpl = new CTemplate(); echo $tmpl->fetch('album/missingalbum'); return; } }else{ if(!$my->authorise('community.view', 'photos.user.album.'.$album->id)){ $tmpl = new CTemplate(); echo $tmpl->fetch('album/missingalbum'); return; } } $groupId = $album->groupid; $pageId = $album->pageid; if ($pageId > 0) { $page = Table::getInstance('Page', 'CTable'); $page->load($pageId); $pathway->addItem(Text::_('COM_COMMUNITY_PAGES'), CRoute::_('index.php?option=com_community&view=pages')); $pathway->addItem($page->name, CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $pageId)); $pathway->addItem(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos&pageid=' . $pageId)); } elseif ($groupId > 0) { $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $pathway->addItem(Text::_('COM_COMMUNITY_GROUPS'), CRoute::_('index.php?option=com_community&view=groups')); $pathway->addItem($group->name, CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $groupId)); $pathway->addItem(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos&groupid=' . $groupId)); } elseif (!empty($eventId)) { $event = Table::getInstance('Event', 'CTable'); $event->load($eventId); $pathway->addItem(Text::_('COM_COMMUNITY_EVENTS'), CRoute::_('index.php?option=com_community&view=events')); $pathway->addItem($event->title, CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid=' . $eventId)); $pathway->addItem(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos&eventid=' . $eventId)); } else { $pathway->addItem(Text::_('COM_COMMUNITY_PHOTOS'), CRoute::_('index.php?option=com_community&view=photos')); $pathway->addItem(Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $user->getDisplayName()), CRoute::_('index.php?option=com_community&view=photos&task=myphotos&userid=' . $userId)); } $handler->setMiniHeader(); if (is_null($album->id)) { echo Text::_('COM_COMMUNITY_ALBUM_DELETED'); return; } if (!$handler->isAlbumBrowsable($albumId)) { return; } //$photos = $handler->getAlbumPhotos( $album->id ); $photoPaginationLimit = intval($config->get('pagination')); $photoThumbLimit = $photoPaginationLimit; $model = CFactory::getModel('photos'); $photos = $model->getPhotos($album->id, $photoThumbLimit, $limitstart); $pagination = $model->getPagination(); $photo = Table::getInstance('Photo', 'CTable'); $photo->load($album->photoid); if ($album->photoid == '0') { $album->thumbnail = $photo->getThumbURI(); } else { $album->thumbnail = $photo->getImageURI(); } // Increment album's hit each time this page is loaded. $album->hit(); if ($pageId > 0) { $otherAlbums = $model->getPageAlbums($pageId); } elseif ($groupId > 0) { $otherAlbums = $model->getGroupAlbums($groupId); } elseif($eventId){ $otherAlbums = $model->getEventAlbums($eventId); }else { $otherAlbums = $model->getAlbums($user->id, true, true, '', array('profile.default','group','event','profile.Cover','profile.avatar','group.avatar','group.Cover','event.Cover','event.avatar')); } $totalAlbums = count($otherAlbums); $showOtherAlbum = 6; $randomAlbum = array(); if (count($otherAlbums) > 0) { $randomId = ($totalAlbums < $showOtherAlbum) ? array_rand($otherAlbums, $totalAlbums) : array_rand($otherAlbums, $showOtherAlbum); $count = 0; for ($i = 0; $i < $totalAlbums; $i++) { $num = (is_array($randomId)) ? $randomId[$i] : $randomId; if ($otherAlbums[$num]->id != $album->id) { $count++; $randomAlbum[] = $otherAlbums[$num]; } if (count($randomAlbum) == ($showOtherAlbum - 1)) { break; } } } /* set head meta */ if ( strtolower(trim(Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $handler->getCreatorName()))) == strtolower(trim($album->name))) { /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $handler->getCreatorName()), CStringHelper::escape($album->getDescription())); } else { /** * Opengraph */ CHeadHelper::setType('website', Text::sprintf('COM_COMMUNITY_PHOTOS_USER_PHOTOS_TITLE', $album->name), CStringHelper::escape($album->getDescription())); } $handler->setAlbumPathway(CStringHelper::escape($album->name)); $handler->setRSSHeader($albumId); // Set album thumbnail and description for social bookmarking sites linking $document->addHeadLink($album->getCoverThumbURI(), 'image_src', 'rel'); //$document->setDescription( CStringHelper::escape($album->getDescription()) ); //CFactory::load( 'libraries' , 'phototagging' ); $getTaggingUsers = new CPhotoTagging(); $people = array(); // @TODO temporary fix for undefined link $list= array (); foreach ( $photos as $photo ) { $photo->link = $handler->getPhotoURI($photo->id, $photo->albumid); $storage = CStorage::getStorage($photo->storage); CHeadHelper::addOpengraph('og:image', $storage->getURI($photo->image), true); $list[] = $photo; } $photos = $list; $albumParam = new Cparameter($album->params); $tagged = $albumParam->get('tagged'); if (!empty($tagged)) { $people = explode(',', $albumParam->get('tagged')); } //Update lastUpdated $lastUpdated = new JDate($album->lastupdated); $album->lastUpdated = CActivityStream::_createdLapse($lastUpdated, false); $people = array_unique($people); CFactory::loadUsers($people); foreach ($people as &$person) { $person = CFactory::getUser($person); } //CFactory::load( 'libraries' , 'bookmarks' ); $bookmarks = new CBookmarks($handler->getAlbumExternalURI($album->id)); // Get wall data. $wallCount = CWallLibrary::getWallCount('albums', $album->id); $viewAllLink = false; if ($jinput->request->get('task', '') != 'app') { $viewAllLink = CRoute::_('index.php?option=com_community&view=photos&task=app&albumid=' . $album->id . '&app=walls'); } $wallContent = CWallLibrary::getWallContents( 'albums', $album->id, ( COwnerHelper::isCommunityAdmin() || ($my->id == $album->creator && ($my->id != 0))), $config->get('stream_default_comments', 0), 0, 'wall/content', 'photos,album' ); $wallForm = CWallLibrary::getWallInputForm($album->id, 'photos,ajaxAlbumSaveWall', 'photos,ajaxAlbumRemoveWall', $viewAllLink); $viewAllLink = CRoute::_('index.php?option=com_community&view=photos&task=app&albumid=' . $album->id . '&app=walls'); $wallViewAll = ''; if ( $wallCount > $config->get('stream_default_comments', 0) ) { $wallViewAll = CWallLibrary::getViewAllLinkHTML($viewAllLink, $wallCount); } $redirectUrl = CRoute::getURI(false); $tmpl = new CTemplate(); if ($album->location != "") { $zoomableMap = CMapping::drawZoomableMap($album->location, 220, 150); } else { $zoomableMap = ""; } // Get the likes / dislikes item //CFactory::load( 'libraries' , 'like' ); $like = new CLike(); $likeCount = $like->getLikeCount('album', $album->id); $likeLiked = $like->userLiked('album', $album->id, $my->id) === COMMUNITY_LIKE; $owner = CFactory::getUser($album->creator); $document->setTitle($album->name); //change the name of the title for this page if this is a default album switch(strtolower($album->type)){ case 'profile.cover': $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_COVER_TITLE', CFactory::getUser($album->creator)->getDisplayName()); $document->setTitle(ucfirst($album->name)); break; case 'profile.avatar': $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_AVATAR_TITLE', CFactory::getUser($album->creator)->getDisplayName()); $document->setTitle(ucfirst($album->name)); break; case 'profile.gif': $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_ANIMATION_TITLE', CFactory::getUser($album->creator)->getDisplayName()); $document->setTitle(ucfirst($album->name)); break; case 'user': if($album->default){ // this is a stream photos $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_STREAM_TITLE', CFactory::getUser($album->creator)->getDisplayName()); $document->setTitle(ucfirst($album->name)); } break; case 'page.cover': $pageTable = Table::getInstance('Page', 'CTable'); $pageTable->load($album->pageid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_COVER_TITLE', $pageTable->name); $document->setTitle(ucfirst($album->name)); break; case 'page.avatar': $pageTable = Table::getInstance('Page', 'CTable'); $pageTable->load($album->pageid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_AVATAR_TITLE', $pageTable->name); $document->setTitle(ucfirst($album->name)); break; case 'page.gif': $pageTable = Table::getInstance('Page', 'CTable'); $pageTable->load($album->pageid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_ANIMATION_TITLE', $pageTable->name); $document->setTitle(ucfirst($album->name)); break; case 'page': $pageTable = Table::getInstance('Page', 'CTable'); $pageTable->load($album->pageid); if($album->default){ // this is a stream photos $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_STREAM_TITLE',$pageTable->name); $document->setTitle(ucfirst($album->name)); } break; case 'group.cover': $groupTable = Table::getInstance('Group', 'CTable'); $groupTable->load($album->groupid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_COVER_TITLE', $groupTable->name); $document->setTitle(ucfirst($album->name)); break; case 'group.avatar': $groupTable = Table::getInstance('Group', 'CTable'); $groupTable->load($album->groupid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_AVATAR_TITLE', $groupTable->name); $document->setTitle(ucfirst($album->name)); break; case 'group.gif': $groupTable = Table::getInstance('Group', 'CTable'); $groupTable->load($album->groupid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_ANIMATION_TITLE', $groupTable->name); $document->setTitle(ucfirst($album->name)); break; case 'group': $groupTable = Table::getInstance('Group', 'CTable'); $groupTable->load($album->groupid); if($album->default){ // this is a stream photos $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_STREAM_TITLE',$groupTable->name); $document->setTitle(ucfirst($album->name)); } break; case 'event.cover': $eventTable = Table::getInstance('Event', 'CTable'); $eventTable->load($album->eventid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_COVER_TITLE', $eventTable->title); $document->setTitle(ucfirst($album->name)); break; case 'event.gif': $eventTable = Table::getInstance('Event', 'CTable'); $eventTable->load($album->eventid); $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_ANIMATION_TITLE', $eventTable->title); $document->setTitle(ucfirst($album->name)); break; case 'event': $eventTable = Table::getInstance('Event', 'CTable'); $eventTable->load($album->eventid); if($album->default){ // this is a stream photos $album->name = Text::sprintf('COM_COMMUNITY_PHOTOS_ALBUM_DEFAULT_STREAM_TITLE',$eventTable->title); $document->setTitle(ucfirst($album->name)); } default: } echo $tmpl ->set('photosmapdefault', $photoMapsDefault) ->set('my', $my) ->set('bookmarksHTML', $bookmarks->getHTML()) ->set('isOwner', $handler->isAlbumOwner($album->id)) ->set('isAdmin', COwnerHelper::isCommunityAdmin()) ->set('owner', $owner) ->set('photos', $photos) ->set('people', $people) ->set('album', $album) ->set('pageId', $pageId) ->set('groupId', $groupId) ->set('eventId', $eventId) ->set('otherAlbums', $randomAlbum) ->set('likeCount', $likeCount) ->set('likeLiked', $likeLiked) ->set('wallContent', $wallContent) ->set('wallForm', $wallForm) ->set('wallCount', $wallCount) ->set('wallViewAll', $wallViewAll) ->set('zoomableMap', $zoomableMap) ->set('pagination', $pagination) ->set('photoId',$defaultId) ->set('submenu', $this->showSubmenu(false)) ->fetch('photos/list'); } /** * Displays single photo view * * */ public function photo() { $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $document = Factory::getDocument(); $photoId = $jinput->get('photoid', '', 'INT'); $photo = Table::getInstance('Photo', 'CTable'); $photo->load($photoId); $albumId = $jinput->get('albumid', $photo->albumid, 'INT'); $userId = $jinput->get('userid', $photo->creator, 'int'); $user = CFactory::getUser($userId); $my = CFactory::getUser(); $jinput->set('userid',$userId); $album = Table::getInstance('Album', 'CTable'); $album->load($photo->albumid); // add this to the request just in case its missing if($album->eventid){ $jinput->set('eventid',$album->eventid); }elseif($album->groupid){ $jinput->set('groupid',$album->groupid); }elseif($album->pageid){ $jinput->set('pageid',$album->pageid); } $handler = $this->_getHandler(); $handler->setMiniHeader(); echo $this->showSubmenu(); $document->setTitle($album->name); $document->setMetaData('title', $album->name); $document->setMetaData('description', $photo->caption); $storage = CStorage::getStorage($photo->storage); CHeadHelper::addOpengraph('og:image', $storage->getURI($photo->image), true); $tmpl = new CTemplate(); echo $tmpl ->set('album', $album) ->set('photo', $photo) ->set('my', $my) ->fetch('photos/single'); } /** * return the resized images */ public function showimage() { } /** * Return photos handlers * @param string $type if type is supplied, always follow the type * @return CommunityViewPhotosEventHandler|CommunityViewPhotosGroupHandler|CommunityViewPhotosUserHandler|null * @throws Exception * */ private function _getHandler($type = '') { $handler = null; $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $pageId = $jinput->get('pageid',0,'INT'); $groupId = $jinput->get('groupid',0,'INT'); $eventId = $jinput->get('eventid',0,'INT'); if ($pageId || $type == 'page') { // page photo $handler = new CommunityViewPhotosPageHandler($this); } elseif ($groupId || $type == 'group') { // group photo $handler = new CommunityViewPhotosGroupHandler($this); } elseif($eventId || $type == 'event') { $handler = new CommunityViewPhotosEventHandler($this); } else { // user photo $handler = new CommunityViewPhotosUserHandler($this); } return $handler; } /** * Application full view * */ public function appFullView() { /** * Opengraph */ // CHeadHelper::setType('website', Text::_('COM_COMMUNITY_PHOTOS_WALL_TITLE')); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $applicationName = CStringHelper::strtolower($jinput->get->get('app', '', 'STRING')); if (empty($applicationName)) { Factory::getApplication()->enqueueMessage(Text::_('COM_COMMUNITY_APP_ID_REQUIRED'), 'error'); } $output = '<div class="joms-page">'; $output .= '<h3 class="joms-page__title">' . Text::_('COM_COMMUNITY_PHOTOS_WALL_TITLE') . '</h3>'; if ($applicationName == 'walls') { //CFactory::load( 'libraries' , 'wall' ); $limit = $jinput->request->get('limit', 5, 'INT'); $limitstart = $jinput->request->get('limitstart', 0, 'INT'); $albumId = $jinput->getInt('albumid', ''); $my = CFactory::getUser(); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); //CFactory::load( 'helpers' , 'owner' ); //CFactory::load( 'helpers' , 'friends' ); // Get the walls content $viewAllLink = false; $wallCount = false; if ($jinput->request->get('task', '') != 'app') { $viewAllLink = CRoute::_('index.php?option=com_community&view=photos&task=app&albumid=' . $album->id . '&app=walls'); $wallCount = CWallLibrary::getWallCount('album', $album->id); } $output .= CWallLibrary::getWallContents('albums', $album->id, ( COwnerHelper::isCommunityAdmin() || COwnerHelper::isMine($my->id, $album->creator)), $limit, $limitstart); if (CFriendsHelper::isConnected($my->id, $album->creator) || COwnerHelper::isCommunityAdmin()) { $output .= CWallLibrary::getWallInputForm($album->id, 'photos,ajaxAlbumSaveWall', 'photos,ajaxAlbumRemoveWall'); } $output .= CWallLibrary::getViewAllLinkHTML($viewAllLink, $wallCount); jimport('joomla.html.pagination'); $wallModel = CFactory::getModel('wall'); $pagination = new JPagination($wallModel->getCount($album->id, 'albums'), $limitstart, $limit); $output .= '<div class="cPagination">' . $pagination->getPagesLinks() . '</div>'; } else { $model = CFactory::getModel('apps'); $applications = CAppPlugins::getInstance(); $applicationId = $model->getUserApplicationId($applicationName); $application = $applications->get($applicationName, $applicationId); if (is_callable(array($application, 'onAppDisplay'), true)) { // Get the parameters $manifest = CPluginHelper::getPluginPath('community', $applicationName) . '/' . $applicationName . '/' . $applicationName . '.xml'; $params = new CParameter($model->getUserAppParams($applicationId), $manifest); $application->params = $params; $application->id = $applicationId; $output = $application->onAppDisplay($params); } else { Factory::getApplication()->enqueueMessage(Text::_('COM_COMMUNITY_APPS_NOT_FOUND'), 'error'); } } $output .= '</div>'; echo $output; } } abstract class CommunityViewPhotoHandler extends CommunityView { protected $type = ''; protected $model = ''; protected $view = ''; protected $my = ''; abstract public function getType(); abstract public function getFlashUploadURI($token, $albumId); abstract public function getAllAlbumData(); abstract public function getAlbumURI($albumId); abstract public function getAlbumExternalURI($albumId); abstract public function getPhotoURI($photoId, $albumId); abstract public function getPhotoExternalURI($photoId, $albumId); abstract public function getCreatorName(); abstract public function getAlbumPhotos($albumId); abstract public function getTaggingUsers(); abstract public function getAlbumCreateLink(); abstract public function setAlbumPathway($albumName); abstract public function setMiniHeader(); abstract public function setSubmenus(); abstract public function setRSSHeader($albumId); abstract public function isExceedUploadLimit(); abstract public function isPhotoBrowsable($photoId); abstract public function isAlbumBrowsable($albumId); abstract public function isAlbumOwner($albumId); abstract public function isTaggable(); abstract public function isWallAllowed(); public function __construct(CommunityViewPhotos $viewObj) { $this->view = $viewObj; $this->my = CFactory::getUser(); $this->model = CFactory::getModel('photos'); } } class CommunityViewPhotosUserHandler extends CommunityViewPhotoHandler { var $user = null; public function __construct($viewObj) { parent::__construct($viewObj); $jinput = Factory::getApplication()->input; $userid = $jinput->get('userid', null, 'INT'); $this->user = CFactory::getUser($userid); } public function getAlbumCreateLink() { return CRoute::_('index.php?option=com_community&view=photos&task=newalbum&userid=' . $this->my->id); } public function getFlashUploadURI($token, $albumId) { $session = Factory::getSession(); $url = 'index.php?option=com_community&view=photos&task=upload&no_html=1&albumid=' . $albumId . '&tmpl=component'; $url .= '&' . $session->getName() . '=' . $session->getId() . '&token=' . $token->token . '&uploaderid=' . $this->my->id . '&userid=' . $this->my->id; $url = JURI::root(true) . '/' . $url; return $url; } public function isWallAllowed() { $config = CFactory::getConfig(); // Check if user is really allowed to post walls on this photo. if (COwnerHelper::isMine($this->my->id, $this->user->id) || (!$config->get('lockphotoswalls')) || ( $config->get('lockphotoswalls') && CFriendsHelper::isConnected($this->my->id, $this->user->id) ) || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function isTaggable() { if (COwnerHelper::isMine($this->my->id, $this->user->id) || CFriendsHelper::isConnected($this->my->id, $this->user->id)) { return true; } return false; } public function getTaggingUsers() { $model = CFactory::getModel('friends'); // $friends = $model->getFriends( $this->my->id , '' , false ); $friends = $model->getFriendRecords($this->my->id, '', false); array_unshift($friends, $this->my); return $friends; } public function setRSSHeader($albumId) { $document = Factory::getDocument(); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $mainframe = FActory::getApplication(); // Set feed url $link = CRoute::_('index.php?option=com_community&view=photos&task=album&albumid=' . $album->id . '&userid=' . $album->creator . '&format=feed'); $feed = '<link rel="alternate" type="application/rss+xml" href="' . $link . '"/>'; $document->addCustomTag($feed); } public function getAlbumPhotos($albumId) { $config = CFactory::getConfig(); $model = CFactory::getModel('Photos'); // @todo: make limit configurable? return $model->getAllPhotos($albumId, PHOTOS_USER_TYPE, null, null, $config->get('photosordering')); } public function setAlbumPathway($albumName) { $mainframe = Factory::getApplication(); $pathway = $mainframe->getPathway(); $pathway->addItem($albumName); } public function setSubmenus() { $my = CFactory::getUser(); $config = CFactory::getConfig(); $jinput = Factory::getApplication()->input; $task = $jinput->get('task', 0, 'WORD'); $albumId = $jinput->get('albumid', 0, 'INT'); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); switch ($task) { case '': if ($albumId) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&userid=' . $this->user->id . '&task=album&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } if($config->get('enablepages')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=page', Text::_('COM_COMMUNITY_PHOTOS_ALL_PAGE_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enablegroups')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enableevents')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); } $this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); if($task=='myphotos' && $my->id){ //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } break; case 'photo': if ($albumId) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&userid=' . $this->user->id . '&task=album&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } if (CFactory::getUser()->authorise('community.photodelete', 'com_community') || ($this->my->id == $album->creator && ($this->my->id != 0))) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_DELETE'), "joms_delete_photo();", true); } if ($this->my->id == $album->creator && ($this->my->id != 0)) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AVATAR'), "joms_set_as_profile_picture();", true); } if (CFactory::getUser()->authorise('community.photoedit', 'com_community') || ($this->my->id == $album->creator && ($this->my->id != 0))) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AS_ALBUM_COVER'), "joms_set_as_album_cover();", true); } if (!$config->get('deleteoriginalphotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_DOWNLOAD_IMAGE'), "joms_download_photo();", true); } //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); break; case 'singleupload': case 'uploader': if ($albumId){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&userid=' . $this->user->id . '&task=album&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); break; case 'myphotos': //@since 4.2.1, no submenu is needed in my photos //return; if($config->get('enablepages')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=page', Text::_('COM_COMMUNITY_PHOTOS_ALL_PAGE_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enablegroups')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enableevents')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); } $this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); if ($this->my->id != 0 || COwnerHelper::isCommunityAdmin()) { //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } break; case 'newalbum': //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); //$this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); break; default: if(!$albumId){ // do not show this 3 links if we are viewing photo albums if($config->get('enablepages')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=page', Text::_('COM_COMMUNITY_PHOTOS_ALL_PAGE_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enablegroups')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=group', Text::_('COM_COMMUNITY_PHOTOS_ALL_GROUP_PHOTOS'), '' , false , '' , 'joms-right'); } if($config->get('enableevents')){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=event', Text::_('COM_COMMUNITY_PHOTOS_ALL_EVENT_PHOTOS'), '' , false , '' , 'joms-right'); } $this->view->addSubmenuItem('index.php?option=com_community&view=photos', Text::_('COM_COMMUNITY_PHOTOS_ALL_PHOTOS'), '' , false , '' , 'joms-right'); } if (!$albumId && ($this->my->id != 0 || COwnerHelper::isCommunityAdmin())) { $groupid = $jinput->get('groupid', 0, 'INT'); $exludeUploadTask = array('newalbum', 'editAlbum', 'display', 'page', 'group', 'event'); if (!in_array($task, $exludeUploadTask) && !CAlbumsHelper::isFixedAlbum($album)) { $this->view->addSubmenuItem('javascript:void(0);', Text::_('COM_COMMUNITY_PHOTOS_UPLOAD_PHOTOS'), "joms.api.photoUpload('" . $albumId . "','" . $groupid . "'); return false;", true); } }elseif($albumId){ //add a back button if($album->type == 'user' || $album->type == 'profile.gif' || $album->type == 'profile.avatar' || $album->type == 'profile.Cover'){ $link = "index.php?option=com_community&view=photos&task=myphotos&userid=".$album->creator; }elseif($album->type == 'page'){ $link = "index.php?option=com_community&view=photos&pageid=".$album->pageid; }elseif($album->type == 'group'){ $link = "index.php?option=com_community&view=photos&groupid=".$album->groupid; }elseif($album->type == 'event'){ $link = "index.php?option=com_community&view=photos&eventid=".$album->eventid; }else{ $link = "index.php?option=com_community&view=photos"; } $this->view->addSubmenuItem($link, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_PHOTOS'), '' , false , '' , 'action'); } if ($task == 'album' && ($my->id == $album->creator || CFactory::getUser()->authorise('community.photoedit', 'com_community')) && !CAlbumsHelper::isFixedAlbum($album)) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=editAlbum&albumid=' . $albumId . '&userid=' . $my->id . '&referrer=album', Text::_('COM_COMMUNITY_EDIT_ALBUM'), '', true); } if ($task == 'album' && ($my->id == $album->creator || CFactory::getUser()->authorise('community.photodelete', 'com_community')) && !CAlbumsHelper::isFixedAlbum($album)) { $this->view->addSubmenuItem('javascript:void(0);', Text::_('COM_COMMUNITY_PHOTOS_ALBUM_DELETE'), "joms.api.albumRemove('".$albumId."')", true); } if ($task == 'album' && COwnerHelper::isCommunityAdmin() && ($album->permissions == 10 || $album->permissions == 0) && !$album->groupid && !$album->eventid && ($album->type != 'profile.Cover' || $album->type != 'profile.avatar')) { if ($config->get('show_featured')) { $featured = new CFeatured(FEATURED_ALBUMS); $featuredList = $featured->getItemIds(); $isFeatured = in_array($album->id, $featuredList); if (!$isFeatured) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_MAKE_FEATURED'), 'joms.api.albumAddFeatured('.$album->id.')', true ); } else { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_REMOVE_FEATURED'), 'joms.api.albumRemoveFeatured('.$album->id.')', true ); } } } if (($this->my->id != 0 || COwnerHelper::isCommunityAdmin()) && $task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } break; } //@since 4.1 we only display my photos in all photo page $allowMyPhotoTask = array('display','event','group','page','myphotos'); if ($my->id != 0 && in_array($task,$allowMyPhotoTask)) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=myphotos&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_MY_PHOTOS'), '' , false , '' , 'joms-right'); } } public function getType() { return PHOTOS_USER_TYPE; } /** * Deprecated since 1.8.9 * */ public function isPhotoBrowsable($photoId) { return $this->isAlbumBrowsable($photoId); } public function isAlbumBrowsable($albumId) { $mainframe = Factory::getApplication(); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $my = CFactory::getUser(); /* Community Admin can access anywhere */ // if (COwnerHelper::isCommunityAdmin($my->id)) { // return true; // } // ACL if(CFactory::getUser()->authorise('community.photoedit', 'com_community') || CFactory::getUser()->authorise('community.photodelete', 'com_community')) { return true; } if ($this->user->block && !COwnerHelper::isCommunityAdmin($my->id)) { $mainframe->enqueueMessage(Text::_('COM_COMMUNITY_PHOTOS_USER_ACCOUNT_IS_BANNED')); $mainframe->redirect('index.php?option=com_community&view=photos'); return false; } //owner can always access if($album->creator == $this->my->id){ return true; } //if( !CPrivacy::isAccessAllowed($this->my->id, $this->user->id, 'user', 'privacyPhotoView') || $album->creator != $this->user->id ) if (!CPrivacy::isAccessAllowed($this->my->id, $this->user->id, 'custom', $album->permissions)) { $this->noAccess(); return false; }else{ return true; } return false; } public function isAlbumOwner($albumId) { if ($this->my->id == 0) return false; $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); return COwnerHelper::isMine($this->my->id, $album->creator); } /** * Return the uri to the album view, given the album id */ public function getAlbumURI($albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&userid=' . $this->user->id); } public function getAlbumExternalURI($albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&userid=' . $this->user->id); } /** * Return the uri to the photo view, given the album id and photo id */ public function getPhotoURI($photoId, $albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=photo&userid=' . $this->user->id . '&albumid=' . $albumId . '&photoid=' . $photoId); } public function getPhotoExternalURI($photoId, $albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&userid=' . $this->user->id . '&photoid=' . $photoId); } public function isExceedUploadLimit() { $my = CFactory::getUser(); if (CLimitsHelper::exceededPhotoUpload($my->id, PHOTOS_USER_TYPE)) { $config = CFactory::getConfig(); $photoLimit = $config->get('photouploadlimit'); echo Text::sprintf('COM_COMMUNITY_PHOTOS_UPLOAD_LIMIT_REACHED', $photoLimit); return true; } return false; } /** * Return data for the 'all album' view * @param string $sortBy * @return mixed */ public function getAllAlbumData($sortBy = 'date', $type = 'special') { $albumsData['data'] = $this->model->getAllAlbums($this->my->id, 0, $sortBy, $type); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } public function setMiniHeader() { //if ($this->my->id != $this->user->id) { $this->view->attachMiniHeaderUser($this->user->id); //} } public function getCreatorName() { return $this->user->getDisplayName(); } } class CommunityViewPhotosGroupHandler extends CommunityViewPhotoHandler { private $groupid = null; /** * Constructor */ public function __construct($viewObj) { parent::__construct($viewObj); $jinput = Factory::getApplication()->input; $this->groupid = $jinput->get('groupid', 0, 'INT'); } public function getFlashUploadURI($token, $albumId) { $session = Factory::getSession(); $url = 'index.php?option=com_community&view=photos&task=upload&no_html=1&albumid=' . $albumId . '&tmpl=component'; $url .= '&' . $session->getName() . '=' . $session->getId() . '&token=' . $token->token . '&uploaderid=' . $this->my->id . '&groupid=' . $this->groupid; $url = JURI::root(true). '/' . $url; return $url; } public function getAlbumCreateLink() { return CRoute::_('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $this->groupid); } public function isWallAllowed() { return $this->isTaggable(); } public function isTaggable() { //CFactory::load( 'helpers' , 'owner' ); //CFactory::load( 'models' , 'groups' ); $group = Table::getInstance('Group', 'CTable'); $group->load($this->groupid); //check if we can allow the current viewing user to tag the photos if ($group->isMember($this->my->id) || $group->isAdmin($this->my->id) || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function getTaggingUsers() { // for photo tagging. only allow to tag members $model = CFactory::getModel('groups'); $ids = $model->getMembersId($this->groupid, true); $users = array(); $group = Table::getInstance('Group', 'CTable'); $group->load($this->groupid); foreach ($ids as $id) { if ($this->my->id != $id) { $user = CFactory::getUser($id); $users[] = $user; } } //CFactory::load( 'helpers' , 'owner' ); if (COwnerHelper::isCommunityAdmin() || $group->isAdmin($this->my->id) || $group->isMember($this->my->id)) array_unshift($users, $this->my); return $users; } public function setRSSHeader($albumId) { return; } public function getAlbumPhotos($albumId) { $config = CFactory::getConfig(); $model = CFactory::getModel('Photos'); // @todo: make limit configurable? return $model->getAllPhotos($albumId, PHOTOS_GROUP_TYPE, null, null, $config->get('photosordering')); } public function setSubmenus() { //CFactory::load( 'helpers' , 'group' ); //CFactory::load( 'helpers' , 'owner' ); $jinput = Factory::getApplication()->input; $task = $userid = $jinput->get('task', '', 'WORD'); $albumId = $userid = $jinput->get('albumid', 0, 'INT'); $photoId = $userid = $jinput->get('photoid', 0, 'INT'); $groupId = $userid = $jinput->get('groupid', 0, 'INT'); if (!empty($albumId)) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $groupId = $album->groupid; } //CFactory::load( 'models' , 'groups' ); $config = CFactory::getConfig(); $group = Table::getInstance('Group', 'CTable'); $group->load($groupId); $my = CFactory::getUser(); $albumId = $albumId != 0 ? $albumId : ''; // Check if the current user is banned from this group $isBanned = $group->isBanned($my->id); $allowManagePhotos = CGroupHelper::allowManagePhoto($this->groupid); if (($task == 'uploader' || $task == 'photo' || $task =='album') && !empty($albumId)) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&groupid=' . $this->groupid . '&task=' . ($photoId > 0 ? 'album' : 'display') . '&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } if ($allowManagePhotos && $task != 'photo' && !$isBanned) { /* Group: Upload Photos */ if ($task == 'album' && ( ($my->id == $album->creator && $allowManagePhotos ) || $group->isAdmin($my->id) || COwnerHelper::isCommunityAdmin() )) { if(!CAlbumsHelper::isFixedAlbum($album)){ $this->view->addSubmenuItem('javascript:', Text::_('COM_COMMUNITY_PHOTOS_ALBUM_DELETE'), "joms.api.albumRemove('" . $album->id . "', '" . $task . "');", true); $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=editAlbum&albumid=' . $album->id . '&groupid=' . $group->id . '&referrer=albumgrp', Text::_('COM_COMMUNITY_EDIT_ALBUM'), '', true); } } //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $this->groupid, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true, '', ''); } if ($task == 'photo') { if ($album->hasAccess($my->id, 'deletephotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_DELETE'), "joms_delete_photo();", true); } if ($my->id == $album->creator) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AVATAR'), "joms_set_as_profile_picture();", true); } if (($my->id == $album->creator && $allowManagePhotos ) || $group->isAdmin($my->id) || COwnerHelper::isCommunityAdmin()) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AS_ALBUM_COVER'), "joms_set_as_album_cover();", true); } if (!$config->get('deleteoriginalphotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_DOWNLOAD_IMAGE'), "joms_download_photo();", true); } if ($groupId != '' && $task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $groupId, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } elseif($task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } } if($task == "display" && $task=='myphotos'){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $groupId, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } //$this->view->addSubmenuItem('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $this->groupid, Text::_('COM_COMMUNITY_GROUPS_BACK_TO_GROUP')); } /** * Deprecated since 1.8.9 * */ public function isPhotoBrowsable($photoId) { return $this->isAlbumBrowsable($photoId); } public function isAlbumOwner($albumId) { if ($this->my->id == 0) return false; $group = Table::getInstance('Group', 'CTable'); $group->load($this->groupid); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); if ($album->creator == $this->my->id || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function isAlbumBrowsable($albumId) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $group = Table::getInstance('Group', 'CTable'); $group->load($album->groupid); $document = Factory::getDocument(); $mainframe = Factory::getApplication(); //@rule: Do not allow non members to view albums for private group if ($group->approvals == COMMUNITY_PRIVATE_GROUP && !$group->isMember($this->my->id) && !$group->isAdmin($this->my->id) && !COwnerHelper::isCommunityAdmin()) { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_RESTRICTED_ACCESS')); $mainframe->enqueueMessage(Text::_('COM_COMMUNITY_RESTRICTED_ACCESS', 'notice')); echo Text::_('COM_COMMUNITY_GROUPS_ALBUM_MEMBER_PERMISSION'); return false; } return true; } public function getType() { return PHOTOS_GROUP_TYPE; } /** * Return the uri to the album view, given the album id */ public function getAlbumURI($albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&groupid=' . $this->groupid); } public function getAlbumExternalURI($albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&groupid=' . $this->groupid); } public function getPhotoURI($photoId, $albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=photo&groupid=' . $this->groupid . '&albumid=' . $albumId . '&photoid=' . $photoId); } public function getPhotoExternalURI($photoId, $albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=photo&albumid=' . $albumId . '&groupid=' . $this->groupid . '&photoid=' . $photoId); } public function isExceedUploadLimit() { if (CLimitsHelper::exceededPhotoUpload($this->groupid, PHOTOS_GROUP_TYPE)) { $config = CFactory::getConfig(); $photoLimit = $config->get('groupphotouploadlimit'); echo Text::sprintf('COM_COMMUNITY_GROUPS_PHOTO_LIMIT', $photoLimit); return TRUE; } return FALSE; } /** * Return data for the 'all album' view */ public function getAllAlbumData() { $my = CFactory::getUser(); $group = Table::getInstance('Group', 'CTable'); $group->load($this->groupid); $type = PHOTOS_GROUP_TYPE; if(!$this->groupid){ // if there is no id supplied, this should be listing all the group album that is visible to the current user $excludeType = array( 'group.default', 'group.gif', 'group.stream', 'group.cover', 'group.avatar' ); $groupModel = CFactory::getModel('groups'); $groupsId = $groupModel->getUserViewablegroups(CFactory::getUser()->id); $albumsData['data'] = $this->model->getGroupAlbums($groupsId, $type, false, '', false, '', $excludeType); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } //@rule: Do not allow non members to view albums for private group if ($group->approvals == COMMUNITY_PRIVATE_GROUP && !$group->isMember($my->id) && !CFactory::getUser()->authorise('community.groupedit', 'com_community') && !CFactory::getUser()->authorise('community.groupeditstate', 'com_community') && !CFactory::getUser()->authorise('community.groupdelete', 'com_community')) { $this->noAccess(); return FALSE; } $albumsData['data'] = $this->model->getGroupAlbums($this->groupid, $type); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } public function setMiniHeader() { // Do nothing because the mini header for groups are done on the view itself. Function is to satisfy the abstract. } public function setAlbumPathway($albumName) { $mainframe = Factory::getApplication(); $pathway = $mainframe->getPathway(); $pathway->addItem($albumName, ''); } public function getCreatorName() { $group = Table::getInstance('Group', 'CTable'); $group->load($this->groupid); return $group->name; } } class CommunityViewPhotosPageHandler extends CommunityViewPhotoHandler { private $pageid = null; /** * Constructor */ public function __construct($viewObj) { parent::__construct($viewObj); $jinput = Factory::getApplication()->input; $this->pageid = $jinput->get('pageid', 0, 'INT'); } public function getFlashUploadURI($token, $albumId) { $session = Factory::getSession(); $url = 'index.php?option=com_community&view=photos&task=upload&no_html=1&albumid=' . $albumId . '&tmpl=component'; $url .= '&' . $session->getName() . '=' . $session->getId() . '&token=' . $token->token . '&uploaderid=' . $this->my->id . '&pageid=' . $this->pageid; $url = JURI::root(true). '/' . $url; return $url; } public function getAlbumCreateLink() { return CRoute::_('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $this->pageid); } public function isWallAllowed() { return $this->isTaggable(); } public function isTaggable() { $page = Table::getInstance('Page', 'CTable'); $page->load($this->pageid); //check if we can allow the current viewing user to tag the photos if ($page->isMember($this->my->id) || $page->isAdmin($this->my->id) || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function getTaggingUsers() { // for photo tagging. only allow to tag members $model = CFactory::getModel('pages'); $ids = $model->getMembersId($this->pageid, true); $users = array(); $page = Table::getInstance('Page', 'CTable'); $page->load($this->pageid); foreach ($ids as $id) { if ($this->my->id != $id) { $user = CFactory::getUser($id); $users[] = $user; } } if (COwnerHelper::isCommunityAdmin() || $page->isAdmin($this->my->id) || $page->isMember($this->my->id)) array_unshift($users, $this->my); return $users; } public function setRSSHeader($albumId) { return; } public function getAlbumPhotos($albumId) { $config = CFactory::getConfig(); $model = CFactory::getModel('Photos'); // @todo: make limit configurable? return $model->getAllPhotos($albumId, PHOTOS_PAGE_TYPE, null, null, $config->get('photosordering')); } public function setSubmenus() { $jinput = Factory::getApplication()->input; $task = $userid = $jinput->get('task', '', 'WORD'); $albumId = $userid = $jinput->get('albumid', 0, 'INT'); $photoId = $userid = $jinput->get('photoid', 0, 'INT'); $pageId = $userid = $jinput->get('pageid', 0, 'INT'); if (!empty($albumId)) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $pageId = $album->pageid; } //CFactory::load( 'models' , 'pages' ); $config = CFactory::getConfig(); $page = Table::getInstance('Page', 'CTable'); $page->load($pageId); $my = CFactory::getUser(); $albumId = $albumId != 0 ? $albumId : ''; // Check if the current user is banned from this page $isBanned = $page->isBanned($my->id); $allowManagePhotos = CPageHelper::allowManagePhoto($this->pageid); if (($task == 'uploader' || $task == 'photo' || $task =='album') && !empty($albumId)) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&pageid=' . $this->pageid . '&task=' . ($photoId > 0 ? 'album' : 'display') . '&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } if ($allowManagePhotos && $task != 'photo' && !$isBanned) { /* Page: Upload Photos */ if ($task == 'album' && ( ($my->id == $album->creator && $allowManagePhotos ) || $page->isAdmin($my->id) || COwnerHelper::isCommunityAdmin() )) { if(!CAlbumsHelper::isFixedAlbum($album)){ $this->view->addSubmenuItem('javascript:', Text::_('COM_COMMUNITY_PHOTOS_ALBUM_DELETE'), "joms.api.albumRemove('" . $album->id . "', '" . $task . "');", true); $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=editAlbum&albumid=' . $album->id . '&pageid=' . $page->id . '&referrer=albumpg', Text::_('COM_COMMUNITY_EDIT_ALBUM'), '', true); } } } if ($task == 'photo') { if ($album->hasAccess($my->id, 'deletephotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_DELETE'), "joms_delete_photo();", true); } if ($my->id == $album->creator) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AVATAR'), "joms_set_as_profile_picture();", true); } if (($my->id == $album->creator && $allowManagePhotos ) || $page->isAdmin($my->id) || COwnerHelper::isCommunityAdmin()) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AS_ALBUM_COVER'), "joms_set_as_album_cover();", true); } if (!$config->get('deleteoriginalphotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_DOWNLOAD_IMAGE'), "joms_download_photo();", true); } if ($pageId != '' && $task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $pageId, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } elseif($task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } } if($task == "display" && $task=='myphotos'){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&pageid=' . $pageId, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } } /** * Deprecated since 1.8.9 * */ public function isPhotoBrowsable($photoId) { return $this->isAlbumBrowsable($photoId); } public function isAlbumOwner($albumId) { if ($this->my->id == 0) return false; $page = Table::getInstance('Page', 'CTable'); $page->load($this->pageid); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); if ($album->creator == $this->my->id || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function isAlbumBrowsable($albumId) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $page = Table::getInstance('Page', 'CTable'); $page->load($album->pageid); $document = Factory::getDocument(); $mainframe = Factory::getApplication(); //@rule: Do not allow non members to view albums for private page if ($page->approvals == COMMUNITY_PRIVATE_PAGE && !$page->isMember($this->my->id) && !$page->isAdmin($this->my->id) && !COwnerHelper::isCommunityAdmin()) { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_RESTRICTED_ACCESS')); $mainframe->enqueueMessage(Text::_('COM_COMMUNITY_RESTRICTED_ACCESS', 'notice')); echo Text::_('COM_COMMUNITY_PAGES_ALBUM_MEMBER_PERMISSION'); return false; } return true; } public function getType() { return PHOTOS_PAGE_TYPE; } /** * Return the uri to the album view, given the album id */ public function getAlbumURI($albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&pageid=' . $this->pageid); } public function getAlbumExternalURI($albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&pageid=' . $this->pageid); } public function getPhotoURI($photoId, $albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=photo&pageid=' . $this->pageid . '&albumid=' . $albumId . '&photoid=' . $photoId); } public function getPhotoExternalURI($photoId, $albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=photo&albumid=' . $albumId . '&pageid=' . $this->pageid . '&photoid=' . $photoId); } public function isExceedUploadLimit() { if (CLimitsHelper::exceededPhotoUpload($this->pageid, PHOTOS_PAGE_TYPE)) { $config = CFactory::getConfig(); $photoLimit = $config->get('pagephotouploadlimit'); echo Text::sprintf('COM_COMMUNITY_PAGES_PHOTO_LIMIT', $photoLimit); return TRUE; } return FALSE; } /** * Return data for the 'all album' view */ public function getAllAlbumData() { $my = CFactory::getUser(); $page = Table::getInstance('Page', 'CTable'); $page->load($this->pageid); $type = PHOTOS_PAGE_TYPE; if(!$this->pageid){ // if there is no id supplied, this should be listing all the page album that is visible to the current user $excludeType = array( 'page.default', 'page.gif', 'page.stream', 'page.cover', 'page.avatar' ); $pageModel = CFactory::getModel('pages'); $pagesId = $pageModel->getUserViewablepages(CFactory::getUser()->id); $albumsData['data'] = $this->model->getPageAlbums($pagesId, $type, false, '', false, '', $excludeType); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } //@rule: Do not allow non members to view albums for private page if ($page->approvals == COMMUNITY_PRIVATE_PAGE && !$page->isMember($my->id) && !CFactory::getUser()->authorise('community.pageedit', 'com_community') && !CFactory::getUser()->authorise('community.pageeditstate', 'com_community') && !CFactory::getUser()->authorise('community.pagedelete', 'com_community')) { $this->noAccess(); return FALSE; } $albumsData['data'] = $this->model->getPageAlbums($this->pageid, $type); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } public function setMiniHeader() { // Do nothing because the mini header for pages are done on the view itself. Function is to satisfy the abstract. } public function setAlbumPathway($albumName) { $mainframe = Factory::getApplication(); $pathway = $mainframe->getPathway(); $pathway->addItem($albumName, ''); } public function getCreatorName() { $page = Table::getInstance('Page', 'CTable'); $page->load($this->pageid); return $page->name; } } class CommunityViewPhotosEventHandler extends CommunityViewPhotoHandler { private $eventid = null; /** * Constructor */ public function __construct($viewObj) { parent::__construct($viewObj); $mainframe = Factory::getApplication(); $jinput = $mainframe->input; $this->eventid = $jinput->get('eventid', '', 'INT'); } public function getFlashUploadURI($token, $albumId) { $session = Factory::getSession(); $url = 'index.php?option=com_community&view=photos&task=upload&no_html=1&albumid=' . $albumId . '&tmpl=component'; $url .= '&' . $session->getName() . '=' . $session->getId() . '&token=' . $token->token . '&uploaderid=' . $this->my->id . '&eventid=' . $this->eventid; $url = JURI::root(true). '/' . $url; return $url; // $url = CRoute::_($url); // $uri = JURI::getInstance(); // $uri = new JURI($uri->toString()); // $uri->setPath($url); // $uri->setQuery(''); // return $uri->toString(); } public function getAlbumCreateLink() { return CRoute::_('index.php?option=com_community&view=photos&task=newalbum&eventid=' . $this->eventid); } public function isWallAllowed() { return $this->isTaggable(); } public function isTaggable() { //CFactory::load( 'helpers' , 'owner' ); //CFactory::load( 'models' , 'groups' ); $event = Table::getInstance('Event', 'CTable'); $event->load($this->eventid); //check if we can allow the current viewing user to tag the photos if ($event->isMember($this->my->id) || $event->isAdmin($this->my->id) || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function getTaggingUsers() { // for photo tagging. only allow to tag members $model = CFactory::getModel('events'); $ids = $model->getMembersId($this->eventid, true); $users = array(); $event = Table::getInstance('Event', 'CTable'); $event->load($this->eventid); foreach ($ids as $id) { if ($this->my->id != $id) { $user = CFactory::getUser($id); $users[] = $user; } } //CFactory::load( 'helpers' , 'owner' ); if (COwnerHelper::isCommunityAdmin() || $event->isAdmin($this->my->id) || $event->isMember($this->my->id)) array_unshift($users, $this->my); return $users; } public function setRSSHeader($albumId) { return; } public function getAlbumPhotos($albumId) { $config = CFactory::getConfig(); $model = CFactory::getModel('Photos'); // @todo: make limit configurable? return $model->getAllPhotos($albumId, PHOTOS_EVENT_TYPE, null, null, $config->get('photosordering')); } public function setSubmenus() { //CFactory::load( 'helpers' , 'group' ); //CFactory::load( 'helpers' , 'owner' ); $jinput = Factory::getApplication()->input; $task = $userid = $jinput->get('task', '', 'WORD'); $albumId = $userid = $jinput->get('albumid', 0, 'INT'); $eventid = $userid = $jinput->get('eventid', 0, 'INT'); if (!empty($albumId)) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $eventid = $album->eventid; } $config = CFactory::getConfig(); $event = Table::getInstance('Event', 'CTable'); $event->load($eventid); $my = CFactory::getUser(); $albumId = $albumId != 0 ? $albumId : ''; // Check if the current user is banned from this event $isBanned = false; $allowManagePhotos = CEventHelper::allowManagePhoto($this->eventid); if (($task == 'uploader' || $task == 'photo' || $task == 'album') && !empty($albumId)) { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&eventid=' . $this->eventid . '&albumid=' . $albumId, Text::_('COM_COMMUNITY_PHOTOS_BACK_TO_ALBUM')); } if ($allowManagePhotos && $task != 'photo' && !$isBanned) { /* Event: Upload Photos */ if ($task != 'newalbum' && $task != 'editAlbum') { //$this->view->addSubmenuItem('javascript:void(0);', Text::_('COM_COMMUNITY_PHOTOS_UPLOAD_PHOTOS'), 'joms.notifications.showUploadPhoto(\'' . $albumId . '\',' . $this->eventid . '); return false;', true, '', ''); } if ($task == 'album' && ( ($my->id == $album->creator && $allowManagePhotos ) || $event->isAdmin($my->id) || COwnerHelper::isCommunityAdmin() || CFactory::getUser()->authorise('community.photodelete', 'com_community'))) { if(!CAlbumsHelper::isFixedAlbum($album)){ $this->view->addSubmenuItem('javascript:', Text::_('COM_COMMUNITY_PHOTOS_ALBUM_DELETE'), "joms.api.albumRemove('" . $album->id . "', '" . $task . "');", true); } } if ($task == 'album' && ( ($my->id == $album->creator && $allowManagePhotos ) || $event->isAdmin($my->id) || COwnerHelper::isCommunityAdmin() || CFactory::getUser()->authorise('community.photoedit', 'com_community'))) { if(!CAlbumsHelper::isFixedAlbum($album)){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=editAlbum&albumid=' . $album->id . '&eventid=' . $event->id . '&referrer=albumgrp', Text::_('COM_COMMUNITY_EDIT_ALBUM'), '', true); } } //$this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&eventid=' . $this->eventid, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true, '', ''); } if ($task == 'photo') { if ($album->hasAccess($my->id, 'deletephotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_DELETE'), "joms_delete_photo();", true); } if ($my->id == $album->creator) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AVATAR'), "joms_set_as_profile_picture();", true); } if (($my->id == $album->creator && $allowManagePhotos ) || $event->isAdmin($my->id) || COwnerHelper::isCommunityAdmin()) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_PHOTOS_SET_AS_ALBUM_COVER'), "joms_set_as_album_cover();", true); } if (!$config->get('deleteoriginalphotos')) { $this->view->addSubmenuItem('', Text::_('COM_COMMUNITY_DOWNLOAD_IMAGE'), "joms_download_photo();", true); } if ($eventid != '' && $task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&eventid=' . $eventid, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } elseif($task=='myphotos') { $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&userid=' . $my->id, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } } if($task == "display" && $task=='myphotos'){ $this->view->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&eventid=' . $eventid, Text::_('COM_COMMUNITY_PHOTOS_CREATE_PHOTO_ALBUM'), '', true); } //$this->view->addSubmenuItem('index.php?option=com_community&view=groups&task=viewgroup&eventid=' . $this->eventid, Text::_('COM_COMMUNITY_EVENTS_BACK_TO_EVENT')); } /** * Deprecated since 1.8.9 * */ public function isPhotoBrowsable($photoId) { return $this->isAlbumBrowsable($photoId); } public function isAlbumOwner($albumId) { if ($this->my->id == 0) return false; $event = Table::getInstance('Event', 'CTable'); $event->load($this->eventid); $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); if ($album->creator == $this->my->id || COwnerHelper::isCommunityAdmin()) { return true; } return false; } public function isAlbumBrowsable($albumId) { $album = Table::getInstance('Album', 'CTable'); $album->load($albumId); $event = Table::getInstance('Event', 'CTable'); $event->load($album->eventid); if($event->type == 'group' && $event->contentid){ $group = Table::getInstance('Group', 'CTable'); $group->load($event->contentid); $mainframe = Factory::getApplication(); //@rule: Do not allow non members to view albums for private group if ($group->approvals == COMMUNITY_PRIVATE_GROUP && !$group->isMember($this->my->id) && !$group->isAdmin($this->my->id) && !COwnerHelper::isCommunityAdmin()) { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_RESTRICTED_ACCESS')); $mainframe->enqueueMessage(Text::_('COM_COMMUNITY_RESTRICTED_ACCESS', 'notice')); echo Text::_('COM_COMMUNITY_GROUPS_ALBUM_MEMBER_PERMISSION'); return false; } } else if($event->type == 'page' && $event->contentid){ $page = Table::getInstance('Page', 'CTable'); $page->load($event->contentid); $mainframe = Factory::getApplication(); //@rule: Do not allow non members to view albums for private page if ($page->approvals == COMMUNITY_PRIVATE_PAGE && !$page->isMember($this->my->id) && !$page->isAdmin($this->my->id) && !COwnerHelper::isCommunityAdmin()) { /** * Opengraph */ CHeadHelper::setType('website', Text::_('COM_COMMUNITY_RESTRICTED_ACCESS')); $mainframe->enqueueMessage(Text::_('COM_COMMUNITY_RESTRICTED_ACCESS', 'notice')); echo Text::_('COM_COMMUNITY_GROUPS_ALBUM_MEMBER_PERMISSION'); return false; } } return true; } public function getType() { return PHOTOS_GROUP_TYPE; } /** * Return the uri to the album view, given the album id */ public function getAlbumURI($albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&eventid=' . $this->eventid); } public function getAlbumExternalURI($albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $albumId . '&eventid=' . $this->eventid); } public function getPhotoURI($photoId, $albumId) { return CRoute::_('index.php?option=com_community&view=photos&task=photo&eventid=' . $this->eventid . '&albumid=' . $albumId . '&photoid=' . $photoId); } public function getPhotoExternalURI($photoId, $albumId) { return CRoute::getExternalURL('index.php?option=com_community&view=photos&task=photo&albumid=' . $albumId . '&eventid=' . $this->eventid . '&photoid=' . $photoId); } public function isExceedUploadLimit() { if (CLimitsHelper::exceededPhotoUpload($this->groupid, PHOTOS_EVENT_TYPE)) { $config = CFactory::getConfig(); $photoLimit = $config->get('eventphotouploadlimit'); echo Text::sprintf('COM_COMMUNITY_EVENTS_PHOTO_LIMIT', $photoLimit); return TRUE; } return FALSE; } /** * Return data for the 'all album' view */ public function getAllAlbumData() { $my = CFactory::getUser(); $event = Table::getInstance('Event', 'CTable'); $event->load($this->eventid); $type = PHOTOS_EVENT_TYPE; if(!$this->eventid){ // if there is no id supplied, this should be listing all the events album that is visible to the current user $excludeType = array( 'event.default', 'event.gif', 'event.stream', 'event.cover', 'event.avatar' ); $eventModel = CFactory::getModel('events'); $eventsId = $eventModel->getUserViewableEvents(CFactory::getUser()->id); $albumsData['data'] = $this->model->getEventAlbums($eventsId, $type, false, '', false, '', $excludeType); $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } //check if this event belongs to a group if($event->type == 'group' && $event->contentid){ $groupid = $event->contentid; $group = Table::getInstance('Group', 'CTable'); $group->load($groupid); //@rule: Do not allow non members to view albums for private group if ($group->approvals == COMMUNITY_PRIVATE_GROUP && !$group->isMember($my->id) && !$group->isAdmin($my->id)) { $this->noAccess(); return FALSE; } } //check if this event belongs to a page if($event->type == 'page' && $event->contentid){ $pageid = $event->contentid; $page = Table::getInstance('Page', 'CTable'); $page->load($pageid); //@rule: Do not allow non members to view albums for private page if ($page->approvals == COMMUNITY_PRIVATE_PAGE && !$page->isMember($my->id) && !$page->isAdmin($my->id)) { $this->noAccess(); return FALSE; } } $allowShow = array(COMMUNITY_EVENT_STATUS_ATTEND,COMMUNITY_EVENT_STATUS_WONTATTEND,COMMUNITY_EVENT_STATUS_MAYBE); if(($event->permission == 1 || $event->unlisted == 1) && !in_array($event->getUserStatus($my->id),$allowShow)){ //this is a invitation only group or unlisted event, so we only show covers album and exclude others $excludeType = array( 'event', 'event.gif', 'event.stream' ); $albumsData['data'] = $this->model->getEventAlbums($this->eventid, false, false, '', false, '', $excludeType); }else{ $albumsData['data'] = $this->model->getEventAlbums($this->eventid, $type); } $albumsData['pagination'] = $this->model->getPagination(); return $albumsData; } public function setMiniHeader() { //echo CMiniHeader::showEventMiniHeader($this->eventid); } public function setAlbumPathway($albumName) { $mainframe = Factory::getApplication(); $pathway = $mainframe->getPathway(); $pathway->addItem($albumName, ''); } public function getCreatorName() { $event = Table::getInstance('Event', 'CTable'); $event->load($this->eventid); return $event->title; } } }
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0.01 |
proxy
|
phpinfo
|
ÐаÑтройка