001/* 002 * This library is part of OpenCms - 003 * the Open Source Content Management System 004 * 005 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com) 006 * 007 * This library is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * This library is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * For further information about Alkacon Software, please see the 018 * company website: http://www.alkacon.com 019 * 020 * For further information about OpenCms, please see the 021 * project website: http://www.opencms.org 022 * 023 * You should have received a copy of the GNU Lesser General Public 024 * License along with this library; if not, write to the Free Software 025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 026 */ 027 028package org.opencms.workplace; 029 030import org.opencms.file.CmsObject; 031import org.opencms.file.CmsProperty; 032import org.opencms.file.CmsResource; 033import org.opencms.file.CmsResourceFilter; 034import org.opencms.main.CmsException; 035import org.opencms.security.CmsPermissionSet; 036import org.opencms.util.CmsStringUtil; 037 038/** 039 * The default upload folder handler.<p> 040 */ 041public class CmsRepositoryFolderHandler implements I_CmsRepositoryFolderHandler { 042 043 /** 044 * @see org.opencms.workplace.I_CmsRepositoryFolderHandler#getRepositoryFolder(org.opencms.file.CmsObject, java.lang.String, java.lang.String) 045 */ 046 public String getRepositoryFolder(CmsObject cms, String reference, String type) { 047 048 String result = null; 049 if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(reference)) { 050 try { 051 CmsProperty prop = cms.readPropertyObject(reference, "repositoryfolder_" + type, true); 052 // check if the resource exists, is a folder and the user has write permissions to it 053 if (!prop.isNullProperty() 054 && cms.existsResource(prop.getValue(), CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) { 055 CmsResource uploadFolder = cms.readResource( 056 prop.getValue(), 057 CmsResourceFilter.ONLY_VISIBLE_NO_DELETED); 058 if (uploadFolder.isFolder() 059 && cms.hasPermissions( 060 uploadFolder, 061 CmsPermissionSet.ACCESS_WRITE, 062 false, 063 CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) { 064 result = cms.getSitePath(uploadFolder); 065 } 066 067 } 068 } catch (CmsException e) { 069 // ignore 070 } 071 } 072 return result; 073 } 074}