/*
* Created on 28.7.2003 by tryggvil in project com.project
*/
package com.idega.builder.business;
import java.io.InputStream;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.ejb.FinderException;
import javax.faces.component.UIComponent;
import org.jdom.Document;
import com.idega.builder.app.IBApplication;
import com.idega.builder.bean.AdvancedProperty;
import com.idega.builder.data.IBPageBMPBean;
import com.idega.builder.data.IBPageName;
import com.idega.builder.data.IBPageNameHome;
import com.idega.builder.presentation.IBPermissionWindow;
import com.idega.builder.presentation.IBPropertiesWindow;
import com.idega.builder.presentation.IBSourceView;
import com.idega.business.IBOServiceBean;
import com.idega.core.builder.business.BuilderPageWriterService;
import com.idega.core.builder.business.BuilderService;
import com.idega.core.builder.data.ICDomain;
import com.idega.core.builder.data.ICPage;
import com.idega.core.builder.data.ICPageBMPBean;
import com.idega.core.builder.data.ICPageHome;
import com.idega.core.component.bean.RenderedComponent;
import com.idega.core.component.business.ComponentProperty;
import com.idega.core.data.ICTreeNode;
import com.idega.core.file.data.ICFile;
import com.idega.core.localisation.business.ICLocaleBusiness;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.idegaweb.IWMainApplication;
import com.idega.idegaweb.IWUserContext;
import com.idega.io.serialization.ObjectWriter;
import com.idega.presentation.IWContext;
import com.idega.presentation.Page;
import com.idega.user.data.User;
import com.idega.util.CoreUtil;
import com.idega.util.ListUtil;
import com.idega.util.StringUtil;
import com.idega.util.xml.XMLData;
import com.idega.xml.XMLElement;
/**
* IBMainServiceBean : Implementation of BuilderService and simplified interface to BuilderLogic
* Copyright (C) idega software 2003
* @author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a>
* @version 1.0
*/
public class IBMainServiceBean extends IBOServiceBean implements IBMainService, BuilderService, BuilderPageWriterService
{
private static final long serialVersionUID = -6324845255940576630L;
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getPage(java.lang.String)
*/
public Page getPage(String pageID) throws RemoteException {
return getBuilderLogic().getPageCacher().getComponentBasedPage(pageID).getNewPageCloned();
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getCurrentDomain()
*/
public ICDomain getCurrentDomain()
{
return getBuilderLogic().getCurrentDomain(this.getIWApplicationContext());
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getIBPageURL(int)
*/
public String getPageURI(int pageKey)
{
return getBuilderLogic().getIBPageURL(getIWApplicationContext(),pageKey);
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getIBPageURL(String)
*/
public String getPageURI(String pageId)
{
return getPageURI(Integer.parseInt(pageId));
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getIBPageURL(String)
*/
public String getPageURI(ICPage page)
{
if (page != null) {
return getPageURI(((Number)page.getPrimaryKey()).intValue());
}
else {
return getPageURI(-1);
}
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getIBPageURL(int)
*/
public String getCurrentPageURI(IWContext iwc)
{
return getBuilderLogic().getIBPageURL(iwc, getCurrentPageId(iwc));
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getRootPageId()
*/
public int getRootPageId()
{
return getBuilderLogic().getStartPageId(getIWApplicationContext());
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getRootPageId()
*/
public String getRootPageKey()
{
return getBuilderLogic().getStartPageKey(getIWApplicationContext());
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getRootPage()
*/
public ICPage getRootPage()throws RemoteException
{
int pageId = getRootPageId();
try
{
if(pageId==-1){
return null;
}
else{
return getIBPageHome().findByPrimaryKey(pageId);
}
}
catch (FinderException e)
{
e.printStackTrace();
throw new RemoteException("IBMainServiceBean.getRootPage(): Exception getting the Root page for pageId="+pageId+" : Exception was : "+e.getMessage());
}
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getCurrentPageId(com.idega.presentation.IWContext)
*/
public int getCurrentPageId(IWContext iwc)
{
return getBuilderLogic().getCurrentIBPageID(iwc);
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getCurrentPageId(com.idega.presentation.IWContext)
*/
public String getCurrentPageKey(IWContext iwc)
{
return getBuilderLogic().getCurrentIBPage(iwc);
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getCurrentPage(com.idega.presentation.IWContext)
*/
public ICPage getCurrentPage(IWContext iwc)throws RemoteException
{
int pageId = getCurrentPageId(iwc);
try
{
return getIBPageHome().findByPrimaryKey(pageId);
}
catch (FinderException e)
{
e.printStackTrace();
throw new RemoteException("IBMainServiceBean.getRootPage(): Exception getting the Root page for pageId="+pageId+" : Exception was : "+e.getMessage());
}
}
private BuilderLogic getBuilderLogic(){
return BuilderLogic.getInstance();
}
private ICPageHome getIBPageHome() throws RemoteException{
return (ICPageHome)this.getIDOHome(ICPage.class);
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getPageTree(int, int)
*/
public ICTreeNode getPageTree(int startNodeId, int userId) throws RemoteException
{
// TODO Implement access control by userId
return new PageTreeNode(startNodeId,this.getIWApplicationContext());
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getPageTree(int)
*/
public ICTreeNode getPageTree(int startNodeId) throws RemoteException
{
return getPageTree(startNodeId,-1);
}
/**
* Unloads all the resources associated with the Builder
*/
public void unload(){
BuilderLogic.unload();
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getPageKeyByRequestURI(java.lang.String)
*/
public String getPageKeyByRequestURIAndServerName(String pageRequestUri,String serverName) {
ICDomain domain = getIWApplicationContext().getDomainByServerName(serverName);
return getBuilderLogic().getPageKeyByURI(pageRequestUri,domain);
}
/* (non-Javadoc)
* @see com.idega.core.builder.business.BuilderService#getCopyOfUIComponentFromIBXML(UIComponent)
*/
public UIComponent getCopyOfUIComponentFromIBXML(UIComponent component) {
return getBuilderLogic().getCopyOfUIComponentFromIBXML(component);
}
public Object write(ICPage page, ObjectWriter writer, IWContext iwc) throws RemoteException {
ICFile file = page.getFile();
// special case: file is empty
// do not create files of deleted pages
if (file.isEmpty() && ! page.getDeleted()) {
// file value is empty get a xml description of the page
IBXMLPage xmlPage = getBuilderLogic().getPageCacher().getIBXML(this.getPrimaryKey().toString());
XMLElement rootElement = xmlPage.getRootElement();
if (rootElement == null) {
return null;
}
// remove connection to document
rootElement.detach();
// convert to xml data, because for that class a writer already exists
XMLData pageData = XMLData.getInstanceWithoutExistingFile();
pageData.getDocument().setRootElement(rootElement);
pageData.setName(page.getName());
return writer.write(pageData, iwc);
}
// normal way to handle pages
return writer.write(page, iwc);
}
public boolean movePage(int newParentId, int nodeId, ICDomain domain) {
return getBuilderLogic().movePage(newParentId, nodeId, domain);
}
public boolean changePageName(int ID, String newName, IWContext iwc) {
return getBuilderLogic().changePageName(ID, newName, iwc);
}
public Collection getTopLevelPages(IWContext iwc){
return getBuilderLogic().getTopLevelPages(iwc);
}
public Collection getTopLevelTemplates(IWApplicationContext iwac){
return getBuilderLogic().getTopLevelTemplates(iwac);
}
public String getTemplateKey() {
return ICPageBMPBean.TEMPLATE;
}
public String getPageKey() {
return ICPageBMPBean.PAGE;
}
public String getHTMLTemplateKey() {
return IBPageBMPBean.FORMAT_HTML;
}
public Map getTree(IWContext iwc) {
return PageTreeNode.getTree(iwc);
}
public Map getTree(IWApplicationContext iwac) {
return PageTreeNode.getTree(iwac);
}
public String getTopLevelTemplateId(Collection templates) {
return getBuilderLogic().getTopLevelTemplateId(templates);
}
public int createNewPage(String parentId, String name, String type, String templateId, String pageUri, Map tree, IWUserContext creatorContext, String subType, int domainId, String format, String sourceMarkup) {
return getBuilderLogic().getIBPageHelper().createNewPage(parentId, name, type, templateId, pageUri, tree, creatorContext, subType, domainId, format, sourceMarkup);
}
public int createNewPage(String parentId, String name, String type, String templateId, String pageUri, Map tree, IWUserContext creatorContext, String subType, int domainId, String format, String sourceMarkup, String treeOrder){
return getBuilderLogic().getIBPageHelper().createNewPage(parentId, name, type, templateId, pageUri, tree, creatorContext, subType, domainId, format, sourceMarkup, treeOrder);
}
public int createPageOrTemplateToplevelOrWithParent(String name, String parentId, String type, String templateId, Map tree, IWContext creatorContext) {
return getBuilderLogic().getIBPageHelper().createPageOrTemplateToplevelOrWithParent(name, parentId, type, templateId, tree, creatorContext);
}
public boolean setProperty(String pageKey, String instanceId, String propertyName, String[] propertyValues, IWMainApplication iwma) {
return getBuilderLogic().setProperty(pageKey, instanceId, propertyName, propertyValues, iwma);
}
public ICPage getICPage(String key){
return getBuilderLogic().getICPage(key);
}
public boolean deletePage(String pageId, boolean deleteChildren, Map tree, int userId, ICDomain domain) {
return getBuilderLogic().getIBPageHelper().deletePage(pageId, deleteChildren, tree, userId, domain);
}
public boolean checkDeletePage(String pageId, ICDomain domain) {
return getBuilderLogic().getIBPageHelper().checkDeletePage(pageId, domain);
}
public void clearAllCachedPages() {
getBuilderLogic().clearAllCachedPages();
}
public void setTemplateId(String pageKey, String newTemplateId) {
getBuilderLogic().setTemplateId(pageKey, newTemplateId);
}
public String getIBXMLFormat() {
return BuilderLogic.PAGE_FORMAT_IBXML;
}
public String[] getPropertyValues(IWMainApplication iwma, String pageKey, String instanceId, String propertyName, String[] selectedValues, boolean returnSelectedValueIfNothingFound) {
return getBuilderLogic().getPropertyValues(iwma, pageKey, instanceId, propertyName, selectedValues, returnSelectedValueIfNothingFound);
}
public boolean removeProperty(IWMainApplication iwma, String pageKey, String instanceId, String propertyName, String[] values) {
return getBuilderLogic().removeProperty(iwma, pageKey, instanceId, propertyName, values);
}
public boolean changePageUriByTitle(String parentId, ICPage page, String pageTitle, int domainId) {
return getBuilderLogic().changePageUriByTitle(parentId, page, pageTitle, domainId);
}
public boolean movePageToTopLevel(int pageID, IWContext iwc) {
return getBuilderLogic().movePageToTopLevel(pageID, iwc);
}
public void createTopLevelPageFromExistingPage(int pageID, ICDomain domain, IWUserContext creatorContext) {
getBuilderLogic().getIBPageHelper().createTopLevelPageFromExistingPage(pageID, domain, creatorContext);
}
public boolean isPageTopLevelPage(int pageID, ICDomain domain) {
return getBuilderLogic().getIBPageHelper().isPageTopLevelPage(pageID, domain);
}
public boolean unlockRegion(String pageKey, String parentObjectInstanceID, String label) {
return getBuilderLogic().unlockRegion(pageKey, parentObjectInstanceID, label);
}
public void renameRegion(String pageKey, String region_id, String region_label, String new_region_id, String new_region_label) {
getBuilderLogic().renameRegion(pageKey, region_id, region_label, new_region_id, new_region_label);
}
public void setCurrentPageId(IWContext iwc, String pageKey) {
getBuilderLogic().setCurrentIBPage(iwc, pageKey);
}
public boolean addPropertyToModule(String pageKey, String moduleId, String propName, String propValue) {
return getBuilderLogic().addPropertyToModule(pageKey, moduleId, propName, propValue);
}
public boolean addPropertyToModules(String pageKey, List<String> moduleIds, String propName, String propValue) {
return getBuilderLogic().addPropertyToModules(pageKey, moduleIds, propName, propValue);
}
public List<String> getModuleId(String pageKey, String moduleClass) {
return getBuilderLogic().getModuleId(pageKey, moduleClass);
}
public boolean isPropertySet(String pageKey, String instanceId, String propertyName, IWMainApplication iwma) {
return getBuilderLogic().isPropertySet(pageKey, instanceId, propertyName, iwma);
}
public boolean isPropertyValueSet(String pageKey, String moduleId, String propertyName, String propertyValue) {
return getBuilderLogic().isPropertyValueSet(pageKey, moduleId, propertyName, propertyValue);
}
public boolean removeValueFromModuleProperty(String pageKey, String moduleId, String propertyName, String valueToRemove) {
return getBuilderLogic().removeValueFromModuleProperty(pageKey, moduleId, propertyName, valueToRemove);
}
public boolean removeValueFromModulesProperties(String pageKey, List<String> moduleIds, String propertyName, String valueToRemove) {
return getBuilderLogic().removeValueFromModuleProperty(pageKey, moduleIds, propertyName, valueToRemove);
}
public void setTreeOrder(int id, int order){
getBuilderLogic().setTreeOrder(id, order);
}
public int getTreeOrder(int id){
return getBuilderLogic().getTreeOrder(id);
}
public void changeTreeOrder(int pageId, int change) {
getBuilderLogic().changeTreeOrder(pageId, change);
}
public int setAsLastInLevel(boolean isTopLevel, String parentId){
return getBuilderLogic().setAsLastInLevel(isTopLevel, parentId);
}
public String getProperty(String pageKey, String instanceId, String propertyName){
return getBuilderLogic().getProperty(pageKey, instanceId, propertyName);
}
public String getPageKeyByURI(String requestURI){
ICDomain domain = getIWApplicationContext().getDomain();
return getBuilderLogic().getPageKeyByURI(requestURI,domain);
}
public String getExistingPageKeyByURI(String requestURI){
ICDomain domain = getIWApplicationContext().getDomain();
return getBuilderLogic().getExistingPageKeyByURI(requestURI,domain);
}
public String getRenderedComponent(UIComponent component, IWContext iwc, boolean cleanHtml) {
return getBuilderLogic().getRenderedComponent(component, iwc, cleanHtml);
}
public Document getRenderedComponent(IWContext iwc, UIComponent object, boolean cleanHtml) {
return getBuilderLogic().getRenderedComponent(iwc, object, cleanHtml);
}
public boolean removeBlockObjectFromCache(IWContext iwc, String cacheKey) {
return getBuilderLogic().removeBlockObjectFromCache(iwc, cacheKey);
}
public void startBuilderSession(IWContext iwc) {
IBApplication.startIBApplication(iwc);
}
public void clearAllCaches() {
getBuilderLogic().clearAllCaches();
}
public boolean setModuleProperty(String pageKey, String moduleId, String propertyName, String[] properties) {
return getBuilderLogic().setModuleProperty(pageKey, moduleId, propertyName, properties);
}
public boolean removeAllBlockObjectsFromCache(IWContext iwc) {
return getBuilderLogic().removeAllBlockObjectsFromCache(iwc);
}
public String generateResourcePath(String base, String scope, String fileName) {
return getBuilderLogic().generateResourcePath(base, scope, fileName);
}
public String getYearMonthPath() {
return getBuilderLogic().getYearMonthPath();
}
public boolean setProperty(IWContext iwc, String pageKey, String instanceId, String propertyName, List<AdvancedProperty> properties) {
return getBuilderLogic().setProperty(iwc, pageKey, instanceId, propertyName, properties);
}
public Document getRenderedModule(String pageKey, String componentId, boolean cleanHtml) {
return getBuilderLogic().getRenderedModule(pageKey, componentId, cleanHtml);
}
public boolean setPageUri(ICPage page, String pageUri, int domainId) {
return getBuilderLogic().setPageUri(page, pageUri, domainId);
}
public String getClassNameForSourceView() {
return IBSourceView.class.getName();
}
public String getInstanceId(UIComponent component) {
return getBuilderLogic().getInstanceId(component);
}
public UIComponent findComponentInPage(IWContext iwc, String pageKey, String instanceId) {
return getBuilderLogic().findComponentInPage(iwc, pageKey, instanceId);
}
public String getPageURI(IWContext iwc, String pageKey, boolean checkIfDeleted) throws RemoteException {
return getBuilderLogic().getIBPageURL(iwc, pageKey, checkIfDeleted);
}
public String addNewModule(String pageKey, String parentObjectInstanceID, String regionId, int newICObjectID, String label) {
return getBuilderLogic().addNewModule(pageKey, parentObjectInstanceID, regionId, newICObjectID, label, null);
}
public int getICObjectId(String objectClass) {
return getBuilderLogic().getICObjectId(objectClass);
}
public boolean existsRegion(String pageKey, String label, String regionId) {
return getBuilderLogic().existsRegion(pageKey, label, regionId);
}
public boolean copyAllModulesFromRegionIntoRegion(String pageKey, String sourceRegionLabel, String destinationRegionId, String destinationRegionLabel) {
return getBuilderLogic().copyAllModulesFromRegionIntoRegion(pageKey, sourceRegionLabel, destinationRegionId, destinationRegionLabel, null);
}
public String getUriToObject(Class<? extends UIComponent> objectClass, List<AdvancedProperty> parameters) {
return getBuilderLogic().getUriToObject(objectClass, parameters);
}
public boolean isFirstBuilderRun() {
return getBuilderLogic().isFirstBuilderRun();
}
public boolean removeBlockObjectFromCacheByCacheKey(String cacheKey) {
return getBuilderLogic().removeBlockObjectFromCache(cacheKey);
}
public boolean reloadGroupsInCachedDomain(IWApplicationContext iwac, String serverName) {
return getBuilderLogic().reloadGroupsInCachedDomain(iwac, serverName);
}
public Document getRenderedComponent(IWContext iwc, UIComponent component, boolean cleanHtml, boolean omitDocTypeEnvelope, boolean omitHtmlEnvelope) {
return getBuilderLogic().getRenderedComponent(iwc, component, cleanHtml, omitDocTypeEnvelope, omitHtmlEnvelope);
}
public String getRenderedComponent(UIComponent component, IWContext iwc, boolean cleanHtml, boolean omitDocTypeEnvelope, boolean omitHtmlEnvelope) {
return getBuilderLogic().getRenderedComponent(component, iwc, cleanHtml, omitDocTypeEnvelope, omitHtmlEnvelope);
}
public String getCleanedHtmlContent(String htmlContent, boolean omitDocTypeDeclaration, boolean omitHtmlEnvelope, boolean omitComments) {
return getBuilderLogic().getCleanedHtmlContent(htmlContent, omitDocTypeDeclaration, omitHtmlEnvelope, omitComments);
}
public String getCleanedHtmlContent(InputStream htmlStream, boolean omitDocTypeDeclaration, boolean omitHtmlEnvelope, boolean omitComments) {
return getBuilderLogic().getCleanedHtmlContent(htmlStream, omitDocTypeDeclaration, omitHtmlEnvelope, omitComments);
}
public String getFullPageUrlByPageType(IWContext iwc, String pageType, boolean checkFirstlyNearestPages) {
return getBuilderLogic().getFullPageUrlByPageType(iwc, pageType, checkFirstlyNearestPages);
}
public String getFullPageUrlByPageType(User user, String pageType, boolean checkFirstlyNearestPages) {
return getBuilderLogic().getFullPageUrlByPageType(user, pageType, checkFirstlyNearestPages);
}
public ICPage getNearestPageForCurrentPageByPageType(IWContext iwc, String pageType) {
return getBuilderLogic().getNearestPageForUserHomePageOrCurrentPageByPageType(iwc, pageType);
}
@SuppressWarnings("unchecked")
public String getLocalizedPageName(String pageKey, Locale locale) {
try {
IBPageNameHome pageNameHome = (IBPageNameHome) IDOLookup.getHome(IBPageName.class);
int localeId = ICLocaleBusiness.getLocaleId(locale);
Collection<IBPageName> pageNames = pageNameHome.findAllByPageIdAndLocaleId(Integer.valueOf(pageKey), localeId);
if (!ListUtil.isEmpty(pageNames)) {
return pageNames.iterator().next().getPageName();
}
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
public RenderedComponent getRenderedComponentById(String uuid, String uri, List<AdvancedProperty> properties) {
return getBuilderLogic().getRenderedComponentById(uuid, uri, properties);
}
public RenderedComponent getRenderedComponentByClassName(String className, List<AdvancedProperty> properties) {
return getBuilderLogic().getRenderedComponentByClassName(className, properties);
}
public RenderedComponent getRenderedComponent(UIComponent component, List<AdvancedProperty> properties) {
return getBuilderLogic().getRenderedComponent(component, properties);
}
public String getUriToPagePermissionsWindow(List<AdvancedProperty> parameters) {
return getBuilderLogic().getUriToObject(IBPermissionWindow.class, parameters);
}
public String getUriToPagePropertiesWindow(List<AdvancedProperty> parameters) {
return getBuilderLogic().getUriToObject(IBPropertiesWindow.class, parameters);
}
public boolean setLocalizedText(String moduleId, String text) {
if (StringUtil.isEmpty(moduleId) || StringUtil.isEmpty(text)) {
logWarning("Invalid parameters: module ID: " + moduleId + ", new text: " + text);
return false;
}
IWContext iwc = CoreUtil.getIWContext();
if (iwc == null) {
logWarning(IWContext.class.getSimpleName() + " is not available!");
return false;
}
Locale locale = iwc.getCurrentLocale();
if (locale == null) {
logWarning("Unable to get current locale!");
return false;
}
ICPage page = getBuilderLogic().findPageForModule(iwc, moduleId);
if (page == null) {
logWarning("Can't find page for module: " + moduleId);
return false;
}
String pageKey = page.getId();
String propertyName = null;
List<com.idega.core.component.business.ComponentProperty> properties = getComponentProperties(iwc, moduleId);
if (ListUtil.isEmpty(properties)) {
logWarning("Can't set localized text: module doesn't have any properties available! Module ID: " + moduleId);
return false;
}
for (Iterator<ComponentProperty> propertiesIter = properties.iterator(); (propertiesIter.hasNext() && propertyName == null);) {
propertyName = propertiesIter.next().getName();
try {
if (propertyName.indexOf("LocalizedText") == -1 || !getBuilderLogic().isPropertyMultivalued(propertyName, moduleId, getIWMainApplication(), pageKey)) {
propertyName = null;
}
} catch (Exception e) {
propertyName = null;
log(e);
}
}
if (StringUtil.isEmpty(propertyName)) {
logWarning("Didn't find method to set localized value! Module ID: " + moduleId);
return false;
}
return getBuilderLogic().setModuleProperty(pageKey, moduleId, propertyName, new String[] {locale.toString(), text});
}
public List<com.idega.core.component.business.ComponentProperty> getComponentProperties(IWContext iwc, String instanceId) {
return getBuilderLogic().getComponentProperties(iwc, instanceId);
}
public ICPage getNearestPageForUserHomePageOrCurrentPageByPageType(User currentUser, IWContext iwc, String pageType) {
return getBuilderLogic().getNearestPageForUserHomePageOrCurrentPageByPageType(currentUser, iwc, pageType);
}
public String getFullPageUrlByPageType(User user, IWContext iwc,
String pageType, boolean checkFirstlyNearestPages) {
return getBuilderLogic().getFullPageUrlByPageType(user, iwc, pageType, checkFirstlyNearestPages);
}
public ICPage getUsersHomePage(User user){
return getBuilderLogic().getUsersHomePage(user);
}
}