1 package com.dotmarketing.viewtools; 2 3 import java.io.FilenameFilter ; 4 import java.util.ArrayList ; 5 import java.util.Date ; 6 import java.util.GregorianCalendar ; 7 import java.util.HashMap ; 8 import java.util.Hashtable ; 9 import java.util.Iterator ; 10 import java.util.List ; 11 import java.util.Map ; 12 13 import javax.servlet.http.HttpServletRequest ; 14 import javax.servlet.http.HttpSession ; 15 16 import org.apache.velocity.tools.view.tools.ViewTool; 17 18 import com.dotmarketing.beans.Host; 19 import com.dotmarketing.cache.FolderCache; 20 import com.dotmarketing.factories.HostFactory; 21 import com.dotmarketing.factories.RoleFactory; 22 import com.dotmarketing.portlets.events.factories.EventFactory; 23 import com.dotmarketing.portlets.files.factories.FileFactory; 24 import com.dotmarketing.portlets.files.model.File; 25 import com.dotmarketing.portlets.folders.factories.FolderFactory; 26 import com.dotmarketing.portlets.folders.model.Folder; 27 import com.dotmarketing.util.Config; 28 import com.dotmarketing.util.UtilMethods; 29 import com.dotmarketing.util.WebKeys; 30 import com.liferay.portal.model.Role; 31 import com.liferay.portal.model.User; 32 33 public class DotCMSMacroWebAPI implements ViewTool { 34 35 public void init(Object obj) { 36 37 } 38 39 public List getPhotoGalleryIndexImages(String indexFolderPath, Host host) { 41 return getPhotoGalleryIndexImages(indexFolderPath, host.getInode()); 42 } 43 44 public List getPhotoGalleryIndexImages(String indexFolderPath, long hostId) { 45 ArrayList indexImages = new ArrayList (); 46 indexFolderPath = indexFolderPath.trim().endsWith("/") 47 ? indexFolderPath.trim() 48 : indexFolderPath.trim() + "/"; 49 Folder folder = FolderFactory.getFolderByPath(indexFolderPath, hostId); 50 List subFolders = FolderFactory.getFoldersByParent(folder.getInode()); 51 Iterator sFoldersIterator = subFolders.iterator(); 52 while (sFoldersIterator.hasNext()) { 53 Folder subFolder = (Folder) sFoldersIterator.next(); 54 List <File> imagesList = FileFactory.getFileChildrenByCondition( 55 subFolder, "deleted=" 56 + com.dotmarketing.db.DbConnectionFactory 57 .getDBFalse() 58 + " and live=" 59 + com.dotmarketing.db.DbConnectionFactory 60 .getDBTrue()); 61 if (imagesList.size() > 0) { 62 File indexImg = imagesList.get(0); 63 for (File img : imagesList) { 64 if (img.getFileName().toLowerCase().equals("index.jpg")) { 65 indexImg = img; 66 break; 67 } 68 } 69 Hashtable folderProperties = new Hashtable (); 70 folderProperties.put("totalImages", imagesList.size()); 71 folderProperties.put("indexImageInode", Long.toString(indexImg 72 .getInode())); 73 folderProperties.put("indexImageExtension", indexImg 74 .getExtension()); 75 folderProperties.put("galleryName", subFolder.getTitle()); 76 folderProperties.put("galleryDate", indexImg.getFriendlyName()); 77 folderProperties.put("galleryDescription", indexImg.getTitle()); 78 folderProperties.put("galleryPath", subFolder.getPath()); 79 indexImages.add(folderProperties); 80 } 81 } 82 return indexImages; 83 } 84 85 public List getPhotoGalleryFolderImages(String folderPath, Host host) { 86 return getPhotoGalleryFolderImages(folderPath, host.getInode()); 87 } 88 89 public List getPhotoGalleryFolderImages(String folderPath, long hostId) { 90 folderPath = (folderPath == null) ? "" : folderPath; 91 folderPath = folderPath.trim().endsWith("/") 92 ? folderPath.trim() 93 : folderPath.trim() + "/"; 94 Folder folder = FolderFactory.getFolderByPath(folderPath, hostId); 95 List imagesList = FileFactory.getFileChildrenByCondition(folder, 96 "deleted=" 97 + com.dotmarketing.db.DbConnectionFactory.getDBFalse() 98 + " and live= " 99 + com.dotmarketing.db.DbConnectionFactory.getDBTrue()); 100 return imagesList; 101 } 102 103 public List getfileRepository(String folderPath, String searchFolder, 104 HttpServletRequest request) { 105 106 Host host = HostFactory.getCurrentHost(request); 107 Role[] roles; 108 User user = (User) request.getSession().getAttribute("CMS_USER"); 109 if (user != null) { 110 List rolesList = RoleFactory.getAllRolesForUser(user.getUserId()); 111 roles = new Role[rolesList.size() + 1]; 112 int i = 0; 113 for (i = 0; i < rolesList.size(); ++i) { 114 roles[i] = (Role) rolesList.get(i); 115 } 116 roles[i] = RoleFactory.getRoleByName(Config 117 .getStringProperty("CMS_ANONYMOUS_ROLE")); 118 119 } else { 120 roles = new Role[]{RoleFactory.getRoleByName(Config 121 .getStringProperty("CMS_ANONYMOUS_ROLE"))}; 122 } 123 124 Folder folder = FolderCache 125 .getFolderByPath(folderPath, host.getInode()); 126 127 if (Boolean.parseBoolean(searchFolder)) { 128 return FolderFactory.getFoldersByParentByRolesAndSortBy(folder, 129 roles); 130 } else { 131 return FileFactory.getFilesByParentFolderPerRoleAndCondition(roles, 132 folder, "deleted=" 133 + com.dotmarketing.db.DbConnectionFactory 134 .getDBFalse() 135 + " and live= " 136 + com.dotmarketing.db.DbConnectionFactory 137 .getDBTrue() 138 + " order by file_asset.file_name asc"); 139 } 140 141 } 142 143 public String getFolderPath(String rootFolder, HttpServletRequest request) { 144 145 String folderPath = request.getParameter("folderPath"); 146 147 if (folderPath == null || folderPath.indexOf(rootFolder) != 0 148 || folderPath.length() < rootFolder.length()) { 149 return rootFolder; 150 } else { 151 return folderPath; 152 } 153 154 } 155 156 168 public List getEvents(String categories, int limit, int startDayOffset, 169 String daysToShow) { 170 171 int daysToShowInt = 0; 172 if (UtilMethods.isSet(daysToShow)) { 173 daysToShowInt = Integer.parseInt(daysToShow); 174 } 175 return getEvents(categories, limit, startDayOffset, daysToShowInt); 176 } 177 178 189 public List getEvents(String categories, int limit, String startDayOffset, 190 int daysToShow) { 191 192 int startDayOffsetInt = 0; 193 if (UtilMethods.isSet(startDayOffset)) { 194 startDayOffsetInt = Integer.parseInt(startDayOffset); 195 } 196 197 return getEvents(categories, limit, startDayOffsetInt, daysToShow); 198 } 199 200 211 public List getEvents(String categories, int limit, String startDayOffset, 212 String daysToShow) { 213 214 int startDayOffsetInt = 0; 215 if (UtilMethods.isSet(startDayOffset)) { 216 startDayOffsetInt = Integer.parseInt(startDayOffset); 217 } 218 int daysToShowInt = 0; 219 if (UtilMethods.isSet(daysToShow)) { 220 daysToShowInt = Integer.parseInt(daysToShow); 221 } 222 return getEvents(categories, limit, startDayOffsetInt, daysToShowInt); 223 } 224 225 236 public List getEvents(String categories, int limit, int startDayOffset, 237 int daysToShow) { 238 239 GregorianCalendar fromCal = new GregorianCalendar (); 240 GregorianCalendar toCal = new GregorianCalendar (); 241 242 if (startDayOffset != 0) { 243 fromCal.add(GregorianCalendar.DATE, startDayOffset); 244 toCal.add(GregorianCalendar.DATE, startDayOffset); 245 } 246 247 if (daysToShow != 0 && daysToShow > 1) { 248 toCal.add(GregorianCalendar.DATE, daysToShow - 1); 249 } 250 251 fromCal.set(GregorianCalendar.HOUR_OF_DAY, 0); 252 fromCal.set(GregorianCalendar.MINUTE, 0); 253 fromCal.set(GregorianCalendar.SECOND, 1); 254 255 toCal.set(GregorianCalendar.HOUR_OF_DAY, 23); 256 toCal.set(GregorianCalendar.MINUTE, 59); 257 toCal.set(GregorianCalendar.SECOND, 58); 258 259 return EventFactory.getPublicEvents(fromCal.getTime(), toCal.getTime(), 260 "", categories.split(","), limit); 261 262 } 263 264 public List getFileSystemFolder(String folder) { 265 List list = new ArrayList (); 266 271 folder = UtilMethods.cleanFileSystemPathURI(folder); 272 java.io.File file = new java.io.File (Config.CONTEXT.getRealPath(folder)); 273 if (!file.exists() || !file.isDirectory()) { 274 return list; 275 } 276 String [] files = file.list(new SystemFileNameFilter()); 277 for (int i = 0; i < files.length; i++) { 278 java.io.File myFile = new java.io.File (file.getAbsolutePath() 279 + java.io.File.separatorChar + files[i]); 280 Map map = new HashMap (); 281 map.put("name", files[i]); 282 long size = myFile.length() / 1024; 283 if (size < 1) 284 size = 1; 285 long k = size % 1024; 286 long mb = size / 1024; 287 long percent = (k * 10) / 1024; 288 Date d = new Date (); 289 d.setTime(myFile.lastModified()); 290 String prettySize = (mb > 1) ? mb + "." + percent + " mb" : k + " kb"; 291 map.put("size", String.valueOf(myFile.length() / 1024)); 292 map.put("prettySize", prettySize); 293 map.put("link", folder + "/" + files[i]); 294 map.put("date", d); 295 map.put("prettyDate", UtilMethods.dateToPrettyHTMLDate(d)); 296 list.add(map); 297 } 298 299 return list; 300 301 } 302 303 private class SystemFileNameFilter implements FilenameFilter { 304 305 public boolean accept(java.io.File directory, String fileName) { 306 307 if (fileName.startsWith(".") || UtilMethods.cleanFileSystemPathURI(fileName) == null) { 308 return false; 309 } 310 311 java.io.File file = new java.io.File (directory.getAbsolutePath() 312 + java.io.File.separatorChar + fileName); 313 if (file.isDirectory()) { 314 return false; 315 } 316 317 return true; 318 319 } 320 321 } 322 } | Popular Tags |