Exemple #1
0
        public static void CreatePortalFolder(DotNetNuke.Entities.Portals.PortalSettings PortalSettings, string FolderName)
        {
            bool blnCreated = false;

            //try normal test (doesn;t work on medium trust, but avoids waiting for GetFolder.)
            try
            {
                blnCreated = System.IO.Directory.Exists(PortalSettings.HomeDirectoryMapPath + FolderName);
            }
            catch (Exception ex)
            {
                blnCreated = false;
            }

            if (!blnCreated)
            {
                FolderManager.Instance.Synchronize(PortalSettings.PortalId, PortalSettings.HomeDirectory, true, true);
                var folderInfo = FolderManager.Instance.GetFolder(PortalSettings.PortalId, FolderName);
                if (folderInfo == null & !string.IsNullOrEmpty(FolderName))
                {
                    //add folder and permissions
                    try
                    {
                        FolderManager.Instance.AddFolder(PortalSettings.PortalId, FolderName);
                    }
                    catch (Exception ex)
                    {
                    }
                    folderInfo = FolderManager.Instance.GetFolder(PortalSettings.PortalId, FolderName);
                    if ((folderInfo != null))
                    {
                        int folderid = folderInfo.FolderID;
                        DotNetNuke.Security.Permissions.PermissionController objPermissionController = new DotNetNuke.Security.Permissions.PermissionController();
                        var arr = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_FOLDER", "");
                        foreach (DotNetNuke.Security.Permissions.PermissionInfo objpermission in arr)
                        {
                            if (objpermission.PermissionKey == "WRITE")
                            {
                                // add READ permissions to the All Users Role
                                FolderManager.Instance.SetFolderPermission(folderInfo, objpermission.PermissionID, int.Parse(DotNetNuke.Common.Globals.glbRoleAllUsers));
                            }
                        }
                    }
                }
            }
        }
        public HttpResponseMessage SaveModule(DTO.ModuleDetails module)
        {
            var apiResponse = new DTO.ApiResponse <int>();

            try
            {
                int iPosition = -1;
                switch (module.Position.ToUpper())
                {
                case "TOP":
                    iPosition = 0;
                    break;

                case "ABOVE":
                    if (string.IsNullOrEmpty(module.ModuleInstance) == false)
                    {
                        iPosition = int.Parse(module.ModuleInstance) - 1;
                    }
                    break;

                case "BELOW":
                    if (string.IsNullOrEmpty(module.ModuleInstance) == false)
                    {
                        iPosition = int.Parse(module.ModuleInstance) + 1;
                    }
                    break;

                case "BOTTOM":
                    iPosition = -1;
                    break;
                }

                if (module.CreateAs == "copy")
                {
                    if (module.Container == "-1")
                    {
                        module.Container = string.Empty;
                    }

                    Common.AddModuleCopy(module.ModuleId, module.PageId, iPosition, module.Location, module.Container);
                    apiResponse.Success = true;
                }
                else if (module.CreateAs == "link")
                {
                    if (module.Container == "-1")
                    {
                        module.Container = string.Empty;
                    }

                    Common.AddExistingModule(module.ModuleId, module.PageId, module.Location, iPosition, "", module.Container);
                    apiResponse.Success = true;
                }
                else
                {
                    List <int> lstNewModules = new List <int>();

                    var objTabPermissions       = PortalSettings.ActiveTab.TabPermissions;
                    var objPermissionController = new DotNetNuke.Security.Permissions.PermissionController();
                    var objModules = new DotNetNuke.Entities.Modules.ModuleController();

                    var objEventLog = new DotNetNuke.Services.Log.EventLog.EventLogController();
                    int j           = 0;

                    try
                    {
                        DotNetNuke.Entities.Modules.DesktopModuleInfo desktopModule = null;
                        if (!DotNetNuke.Entities.Modules.DesktopModuleController.GetDesktopModules(PortalSettings.PortalId).TryGetValue(module.Module, out desktopModule))
                        {
                            apiResponse.Message = "desktopModuleId";
                            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
                        }
                    }
                    catch (Exception ex)
                    {
                        //LogException(ex);
                    }

                    int UserId = UserInfo.UserID;

                    foreach (var objModuleDefinition in DotNetNuke.Entities.Modules.Definitions.ModuleDefinitionController.GetModuleDefinitionsByDesktopModuleID(module.Module).Values)
                    {
                        var objModule = new DotNetNuke.Entities.Modules.ModuleInfo();
                        objModule.Initialize(PortalSettings.PortalId);

                        objModule.PortalID = PortalSettings.PortalId;
                        objModule.TabID    = PortalSettings.ActiveTab.TabID;

                        objModule.ModuleOrder = iPosition;
                        if (string.IsNullOrEmpty(module.Title) == true)
                        {
                            objModule.ModuleTitle = objModuleDefinition.FriendlyName;
                        }
                        else
                        {
                            objModule.ModuleTitle = module.Title;
                        }

                        if (!string.IsNullOrEmpty(module.Container) && module.Container != "-1")
                        {
                            objModule.ContainerSrc = module.Container;
                        }

                        objModule.PaneName    = module.Location;
                        objModule.ModuleDefID = objModuleDefinition.ModuleDefID;
                        if (objModuleDefinition.DefaultCacheTime > 0)
                        {
                            objModule.CacheTime = objModuleDefinition.DefaultCacheTime;
                            if (PortalSettings.DefaultModuleId > Null.NullInteger && PortalSettings.DefaultTabId > Null.NullInteger)
                            {
                                var defaultModule = objModules.GetModule(PortalSettings.DefaultModuleId, PortalSettings.DefaultTabId, true);
                                if ((defaultModule != null))
                                {
                                    objModule.CacheTime = defaultModule.CacheTime;
                                }
                            }
                        }

                        switch (module.Visibility)
                        {
                        case 0:
                            objModule.InheritViewPermissions = true;
                            break;

                        case 1:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 2:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 3:
                            objModule.InheritViewPermissions = false;
                            break;

                        case 4:
                            objModule.InheritViewPermissions = false;
                            break;
                        }

                        // get the default module view permissions
                        var arrSystemModuleViewPermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");

                        // get the permissions from the page
                        foreach (DotNetNuke.Security.Permissions.TabPermissionInfo objTabPermission in objTabPermissions)
                        {
                            if (objTabPermission.PermissionKey == "VIEW" && module.Visibility == 0)
                            {
                                //Don't need to explicitly add View permisisons if "Same As Page"
                                continue;
                            }

                            // get the system module permissions for the permissionkey
                            var arrSystemModulePermissions = objPermissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", objTabPermission.PermissionKey);
                            // loop through the system module permissions
                            for (j = 0; j <= arrSystemModulePermissions.Count - 1; j++)
                            {
                                // create the module permission
                                DotNetNuke.Security.Permissions.PermissionInfo objSystemModulePermission = null;
                                objSystemModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModulePermissions[j];
                                if (objSystemModulePermission.PermissionKey == "VIEW" && module.Visibility == 1 && objTabPermission.PermissionKey != "EDIT")
                                {
                                    //Only Page Editors get View permissions if "Page Editors Only"
                                    continue;
                                }

                                var objModulePermission = Common.AddModulePermission(objModule, objSystemModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess);

                                // ensure that every EDIT permission which allows access also provides VIEW permission
                                if (objModulePermission.PermissionKey == "EDIT" & objModulePermission.AllowAccess)
                                {
                                    var objModuleViewperm = Common.AddModulePermission(objModule, (DotNetNuke.Security.Permissions.PermissionInfo)arrSystemModuleViewPermissions[0], objModulePermission.RoleID, objModulePermission.UserID, true);
                                }
                            }

                            //Get the custom Module Permissions,  Assume that roles with Edit Tab Permissions
                            //are automatically assigned to the Custom Module Permissions
                            if (objTabPermission.PermissionKey == "EDIT")
                            {
                                var arrCustomModulePermissions = objPermissionController.GetPermissionsByModuleDefID(objModule.ModuleDefID);

                                // loop through the custom module permissions
                                for (j = 0; j <= arrCustomModulePermissions.Count - 1; j++)
                                {
                                    // create the module permission
                                    DotNetNuke.Security.Permissions.PermissionInfo objCustomModulePermission = null;
                                    objCustomModulePermission = (DotNetNuke.Security.Permissions.PermissionInfo)arrCustomModulePermissions[j];

                                    Common.AddModulePermission(objModule, objCustomModulePermission, objTabPermission.RoleID, objTabPermission.UserID, objTabPermission.AllowAccess);
                                }
                            }
                        }

                        objModule.AllTabs = false;
                        //objModule.Alignment = align;

                        apiResponse.CustomObject = objModules.AddModule(objModule);
                        apiResponse.Success      = true;
                    }
                }
            }
            catch (Exception err)
            {
                apiResponse.Success = false;
                apiResponse.Message = err.Message;

                Exceptions.LogException(err);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, apiResponse));
        }