1 package com.dotmarketing.portlets.htmlpages.factories; 2 3 4 import java.util.List ; 5 6 import com.dotmarketing.beans.Host; 7 import com.dotmarketing.beans.Identifier; 8 import com.dotmarketing.beans.Inode; 9 import com.dotmarketing.beans.PermissionAsset; 10 import com.dotmarketing.cache.IdentifierCache; 11 import com.dotmarketing.cache.LiveCache; 12 import com.dotmarketing.cache.PermissionCache; 13 import com.dotmarketing.cache.WorkingCache; 14 import com.dotmarketing.db.DotConnect; 15 import com.dotmarketing.db.DotHibernate; 16 import com.dotmarketing.factories.HostFactory; 17 import com.dotmarketing.factories.IdentifierFactory; 18 import com.dotmarketing.factories.InodeFactory; 19 import com.dotmarketing.factories.PermissionFactory; 20 import com.dotmarketing.factories.WebAssetFactory; 21 import com.dotmarketing.menubuilders.RefreshMenus; 22 import com.dotmarketing.portlets.contentlet.model.Contentlet; 23 import com.dotmarketing.portlets.folders.model.Folder; 24 import com.dotmarketing.portlets.htmlpages.model.HTMLPage; 25 import com.dotmarketing.portlets.templates.model.Template; 26 import com.dotmarketing.services.PageServices; 27 import com.dotmarketing.util.Config; 28 import com.dotmarketing.util.Logger; 29 import com.dotmarketing.util.WebKeys; 30 import com.liferay.portal.model.Role; 31 import com.liferay.portal.model.User; 32 import com.liferay.portal.struts.ActionException; 33 34 38 public class HTMLPageFactory { 39 40 public static java.util.List getChildrenHTMLPageByOrder(Inode i) { 41 42 return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, "sort_order"); 43 44 } 45 46 public static java.util.List getActiveHTMLPages() { 47 DotHibernate dh = new DotHibernate(HTMLPage.class); 48 dh.setQuery("from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage"); 49 return dh.list(); 50 } 51 52 public static java.util.List getHTMLPagesByOrderAndParent(String orderby, Inode i) { 53 54 return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, orderby); 55 56 } 57 58 public static java.util.List getHTMLPagesByOrder(String orderby) { 59 60 DotHibernate dh = new DotHibernate(HTMLPage.class); 61 dh.setQuery( 62 "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where working = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " or live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " order by " 63 + orderby); 64 65 return dh.list(); 66 } 67 68 public static java.util.List getHTMLPageChildrenByCondition(Inode i, String condition) { 69 return InodeFactory.getChildrenClassByConditionAndOrderBy(i, HTMLPage.class, condition, "page_url, sort_order"); 70 } 71 72 73 public static java.util.List getHTMLPageByCondition(String condition) { 74 DotHibernate dh = new DotHibernate(HTMLPage.class); 75 dh.setQuery("from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where " + condition + " order by page_url, sort_order"); 76 return dh.list(); 77 } 78 79 80 public static HTMLPage getLiveHTMLPageByPath(String path, Host host){ 81 return getLiveHTMLPageByPath (path, host.getInode()); 82 } 83 84 public static HTMLPage getLiveHTMLPageByPath(String path, long hostId){ 85 Identifier id = IdentifierFactory.getIdentifierByURI(path, hostId); 86 87 Logger.debug(HTMLPageFactory.class, "Looking for page : " + path); 88 Logger.debug(HTMLPageFactory.class, "got id " + id.getInode()); 89 90 if(id.getInode() == 0){ 92 return new HTMLPage(); 93 } 94 95 return (HTMLPage) IdentifierFactory.getLiveChildOfClass(id, HTMLPage.class); 96 97 } 98 99 public static java.util.List getLiveHTMLPages() { 100 DotHibernate dh = new DotHibernate(HTMLPage.class); 101 dh.setQuery( 102 "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse()); 103 return dh.list(); 104 } 105 106 public static java.util.List getWorkingHTMLPages() { 107 DotHibernate dh = new DotHibernate(HTMLPage.class); 108 dh.setQuery( 109 "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where working = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse()); 110 return dh.list(); 111 } 112 113 public static java.util.List getHTMLPageChildren(Inode i) { 114 115 116 return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, "inode, sort_order"); 117 118 119 120 } 121 122 public static Template getHTMLPageTemplate(Inode i) { 123 124 return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "(live=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " or working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + ")"); 125 126 } 127 128 public static Template getHTMLPageTemplate(Inode i, boolean previewMode) { 129 130 if (previewMode) { 131 return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse() ); 132 133 } 134 else { 135 return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "live=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse() ); 136 } 137 138 } 139 140 public static Template getWorkingNotLiveHTMLPageTemplate(Inode i) { 141 return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and live=" + com.dotmarketing.db.DbConnectionFactory.getDBFalse()); 142 143 } 144 145 public static HTMLPage getHTMLPageByLiveAndFolderAndTitle(Inode parent, String title) { 146 147 return (HTMLPage) InodeFactory.getChildOfClassbyCondition(parent, HTMLPage.class, "title = '" + title + "' and live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()); 148 149 150 } 151 152 public static void deleteChildren(HTMLPage parent, Class c) { 153 InodeFactory.deleteChildrenOfClass(parent, c); 154 } 155 156 public static java.util.List getHTMLPagesPerRoleAndCondition(Host host, Role[] roles, String condition) { 157 return getHTMLPagesPerRoleAndCondition(host.getInode(), roles, condition); 158 } 159 160 public static java.util.List getHTMLPagesPerRoleAndCondition(long hostId, Role[] roles, String condition) { 161 162 java.util.List entries = new java.util.ArrayList (); 163 java.util.List folders = 164 com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersByParent(hostId); 165 return com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersAndEntriesByRoles( 166 folders, 167 entries, 168 roles, 169 HTMLPage.class, 170 condition); 171 172 } 173 174 public static java.util.List getHTMLPagesPerRole(Host host, Role[] roles) { 175 return getHTMLPagesPerRole (host.getInode(), roles); 176 } 177 178 public static java.util.List getHTMLPagesPerRole(long hostId, Role[] roles) { 179 java.util.List entries = new java.util.ArrayList (); 180 java.util.List folders = 181 com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersByParent(hostId); 182 return com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersAndEntriesByRoles( 183 folders, 184 entries, 185 roles, 186 HTMLPage.class); 187 } 188 189 public static java.util.List getHTMLPagesAndPermissionsPerRoleAndCondition(Host host, Role[] roles, String condition, int limit, int offset, String orderby, long template) { 190 return getHTMLPagesAndPermissionsPerRoleAndCondition (host.getInode(), roles, condition, limit, offset, orderby, template); 191 } 192 193 public static java.util.List getHTMLPagesAndPermissionsPerRoleAndCondition(long hostId, Role[] roles, String condition, int limit, int offset, String orderby, long template) { 194 195 java.util.List <PermissionAsset> entries = new java.util.ArrayList <PermissionAsset>(); 196 orderby = "htmlpage." + orderby; 197 java.util.List elements = WebAssetFactory.getAssetsPerConditionWithPermission(hostId, condition, HTMLPage.class, roles, limit, offset, orderby, template); 198 java.util.Iterator elementsIter = elements.iterator(); 199 200 while (elementsIter.hasNext()) { 201 202 HTMLPage htmlpage = (HTMLPage) elementsIter.next(); 203 Folder folderParent = (Folder) InodeFactory.getParentOfClass(htmlpage,Folder.class); 204 205 java.util.List permissions = PermissionCache.getPermissionIdsByRolesFromCache(htmlpage,roles); 206 207 PermissionAsset permAsset = new PermissionAsset(); 208 permAsset.setPathToMe(folderParent.getPath()); 209 permAsset.setPermissions(permissions); 210 permAsset.setAsset(htmlpage); 211 entries.add(permAsset); 212 } 213 214 return entries; 215 } 216 217 public static java.util.List getHTMLPagesAndPermissionsPerRoleAndCondition(Role[] roles, String condition, int limit, int offset, String orderby, long template) { 218 219 java.util.List <PermissionAsset> entries = new java.util.ArrayList <PermissionAsset>(); 220 orderby = "htmlpage." + orderby; 221 java.util.List elements = WebAssetFactory.getAssetsPerConditionWithPermission(condition, HTMLPage.class, roles, limit, offset, orderby, template); 222 java.util.Iterator elementsIter = elements.iterator(); 223 224 while (elementsIter.hasNext()) { 225 226 HTMLPage htmlpage = (HTMLPage) elementsIter.next(); 227 Folder folderParent = (Folder) InodeFactory.getParentOfClass(htmlpage,Folder.class); 228 229 java.util.List permissions = PermissionCache.getPermissionIdsByRolesFromCache(htmlpage,roles); 230 231 PermissionAsset permAsset = new PermissionAsset(); 232 permAsset.setPathToMe(folderParent.getPath()); 233 permAsset.setPermissions(permissions); 234 permAsset.setAsset(htmlpage); 235 entries.add(permAsset); 236 } 237 238 return entries; 239 } 240 241 public static boolean existsPageName(Inode parent, String pageName) { 242 HTMLPage page = (HTMLPage) InodeFactory.getChildOfClassbyCondition(parent, HTMLPage.class, "page_url like '" + pageName + "'"); 243 Logger.debug(HTMLPageFactory.class, "existsFileName=" + page.getInode()); 244 return (page.getInode() > 0); 245 } 246 247 248 public static int getNumberOfContainersPerContenlet(HTMLPage htmlPage, Contentlet contentlet){ 249 250 DotConnect dc = new DotConnect(); 251 StringBuffer sb = new StringBuffer (); 252 sb.append("select count(*) mycount "); 253 sb.append("from tree tree1, tree tree2, tree tree3, tree tree4, template template, identifier identifier, containers containers "); 254 sb.append("where tree1.child = ? "); 255 sb.append("and tree1.parent = template.inode "); 256 sb.append("and template.working = 't' "); 257 sb.append("and template.inode = tree2.parent "); 258 sb.append("and tree2.child = identifier.inode "); 259 sb.append("and identifier.inode = tree3.parent "); 260 sb.append("and tree3.child = containers.inode "); 261 sb.append("and containers.working = 't' "); 262 sb.append("and containers.inode = tree4.parent "); 263 sb.append("and tree4.child = ?"); 264 265 dc.setSQL(sb.toString()); 266 dc.addParam(htmlPage.getInode()); 267 dc.addParam(contentlet.getInode()); 268 269 int count = dc.getInt("mycount"); 270 271 return count; 272 } 273 274 275 276 277 public static HTMLPage getWorkingHTMLPageByPath(String path, Host host){ 278 return getWorkingHTMLPageByPath (path, host.getInode()); 279 } 280 281 public static HTMLPage getWorkingHTMLPageByPath(String path, long hostId){ 282 Identifier id = IdentifierFactory.getIdentifierByURI(path, hostId); 283 284 Logger.debug(HTMLPageFactory.class, "Looking for page : " + path); 285 Logger.debug(HTMLPageFactory.class, "got id " + id.getInode()); 286 287 if(id.getInode() == 0){ 289 return new HTMLPage(); 290 } 291 292 return (HTMLPage) IdentifierFactory.getWorkingChildOfClass(id, HTMLPage.class); 293 294 295 296 } 297 298 299 public static Template getTemplate(HTMLPage htmlpage) { 300 Template template = (Template) InodeFactory.getParentOfClass(htmlpage, Template.class); 302 com.dotmarketing.beans.Identifier identifier = IdentifierFactory.getParentIdentifier(template); 303 Template htmlTemplate = (Template) IdentifierFactory.getWorkingChildOfClass(identifier,Template.class); 305 return htmlTemplate; 306 } 307 308 314 public static boolean moveHTMLPage (HTMLPage currentHTMLPage, Folder parent) { 315 316 317 Identifier identifier = com.dotmarketing.factories.IdentifierFactory 318 .getParentIdentifier(currentHTMLPage); 319 320 HTMLPage workingWebAsset = (HTMLPage) IdentifierFactory 322 .getWorkingChildOfClass(identifier, HTMLPage.class); 323 HTMLPage liveWebAsset = (HTMLPage) IdentifierFactory 325 .getLiveChildOfClass(identifier, HTMLPage.class); 326 327 328 if (HTMLPageFactory.existsPageName(parent, workingWebAsset.getPageUrl())) { 329 return false; 330 } 331 332 Folder oldParent = (Folder) InodeFactory.getParentOfClass(workingWebAsset, Folder.class); 334 oldParent.deleteChild(workingWebAsset); 335 if ((liveWebAsset != null) && (liveWebAsset.getInode() > 0)) { 336 oldParent.deleteChild(liveWebAsset); 337 } 338 339 parent.addChild(workingWebAsset); 340 if ((liveWebAsset != null) && (liveWebAsset.getInode() > 0)) { 341 parent.addChild(liveWebAsset); 342 } 343 344 WorkingCache.removeAssetFromCache(workingWebAsset); 346 IdentifierCache.removeAssetFromIdCache(workingWebAsset); 347 348 if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) { 349 LiveCache.removeAssetFromCache(liveWebAsset); 350 } 351 352 Host newHost = HostFactory.getParentHost(parent); 355 identifier.setHostInode(newHost.getInode()); 356 identifier.setURI(workingWebAsset.getURI(parent)); 357 InodeFactory.saveInode(identifier); 358 359 if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) { 361 LiveCache.addToLiveAssetToCache(liveWebAsset); 362 } 363 WorkingCache.addToWorkingAssetToCache(workingWebAsset); 364 IdentifierCache.addAssetToIdentifierCache(workingWebAsset); 365 366 if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) { 368 PageServices.publishPageToFile(liveWebAsset); 369 } 370 371 RefreshMenus.deleteMenus(); 373 374 return true; 375 376 } 377 378 public static HTMLPage copyHTMLPage (HTMLPage currentHTMLPage, Folder parent) { 379 380 if (!currentHTMLPage.isWorking()) { 381 Identifier id = IdentifierFactory.getIdentifierByInode(currentHTMLPage); 382 currentHTMLPage = (HTMLPage) IdentifierFactory.getWorkingChildOfClass(id, HTMLPage.class); 383 } 384 Folder currentParentFolder = (Folder) InodeFactory.getParentOfClass(currentHTMLPage, Folder.class); 385 386 Logger.debug(HTMLPageFactory.class, "Copying HTMLPage: " + currentHTMLPage.getURI(currentParentFolder) + " to: " + parent.getPath()); 387 388 HTMLPage newHTMLPage = new HTMLPage(); 390 391 newHTMLPage.copy(currentHTMLPage); 392 newHTMLPage.setLocked(false); 393 newHTMLPage.setLive(false); 394 395 String pageURL = com.dotmarketing.util.UtilMethods 397 .getFileName(currentHTMLPage.getPageUrl()); 398 String fileExtension = com.dotmarketing.util.UtilMethods 400 .getFileExtension(currentHTMLPage.getPageUrl()); 401 if (HTMLPageFactory.existsPageName(parent, currentHTMLPage.getPageUrl())) { 402 newHTMLPage.setPageUrl(pageURL + "_copy." + fileExtension); 404 newHTMLPage.setFriendlyName(currentHTMLPage.getFriendlyName() + " (COPY) "); 405 } else { 406 newHTMLPage.setPageUrl(pageURL + "." + fileExtension); 407 newHTMLPage.setFriendlyName(currentHTMLPage.getFriendlyName()); 408 } 409 410 InodeFactory.saveInode(newHTMLPage); 412 413 parent.addChild(newHTMLPage); 415 416 com.dotmarketing.factories.IdentifierFactory 418 .createNewIdentifier(newHTMLPage, parent); 419 420 java.util.List templateParents = InodeFactory.getParentsOfClass( 422 currentHTMLPage, Template.class); 423 java.util.Iterator templateParentsIter = templateParents.iterator(); 424 while (templateParentsIter.hasNext()) { 425 Template templateParent = (Template) templateParentsIter.next(); 426 templateParent.addChild(newHTMLPage); 428 } 429 430 WorkingCache.addToWorkingAssetToCache(newHTMLPage); 431 LiveCache.addToLiveAssetToCache(newHTMLPage); 432 433 PermissionFactory.copyPermissions(currentHTMLPage, newHTMLPage); 435 436 return newHTMLPage; 437 } 438 439 440 public static boolean renameHTMLPage (HTMLPage page, String newName, User user) throws Exception { 441 442 if (!PermissionFactory.doesUserHavePermission(page, Config.getIntProperty("PERMISSION_WRITE"), user)) 444 throw new ActionException(WebKeys.USER_PERMISSIONS_EXCEPTION); 445 446 Folder folder = (Folder)InodeFactory.getParentOfClass(page, Folder.class); 448 Host host = HostFactory.getParentHost(folder); 449 450 Identifier ident = IdentifierFactory.getIdentifierByInode(page); 451 452 HTMLPage tempPage = new HTMLPage(); 453 tempPage.copy(page); 454 tempPage.setPageUrl(newName + ".dot"); 456 tempPage.setFriendlyName(newName + ".dot"); 457 458 Identifier testIdentifier = (Identifier) IdentifierFactory 459 .getIdentifierByURI(tempPage.getURI(folder), host); 460 461 if(testIdentifier.getInode() > 0 || page.isLocked()) 462 return false; 463 464 List <HTMLPage> versions = IdentifierFactory.getVersionsandLiveandWorkingChildrenOfClass(ident, HTMLPage.class); 465 466 for (HTMLPage version : versions) { 467 468 version.setPageUrl(newName + ".dot"); 470 version.setFriendlyName(newName + ".dot"); 471 472 if (version.isLive()) 473 LiveCache.addToLiveAssetToCache(version); 474 if (version.isWorking()) 475 WorkingCache.addToWorkingAssetToCache(version); 476 477 InodeFactory.saveInode(version); 478 479 } 480 481 ident.setURI(page.getURI(folder)); 482 InodeFactory.saveInode(ident); 483 484 RefreshMenus.deleteMenus(); 485 486 return true; 487 488 } 489 490 } 491 | Popular Tags |