Example #1
0
        private void AddEditorRole()
        {
            if (ModuleContext.PortalSettings.UserId > 0)
            {
                string OpenContent_EditorsRoleId = PortalController.GetPortalSetting("OpenContent_EditorsRoleId", ModuleContext.PortalId, "");
                if (!string.IsNullOrEmpty(OpenContent_EditorsRoleId))
                {
                    int roleId    = int.Parse(OpenContent_EditorsRoleId);
                    var objModule = ModuleContext.Configuration;
                    //todo: probable DNN bug.  objModule.ModulePermissions doesn't return correct permissions for attached multi-lingual modules
                    //don't alter permissions of modules that are non-default language and that are attached
                    var permExist = objModule.ModulePermissions.Where(tp => tp.RoleID == roleId).Any();
                    if (!permExist)
                    {
                        //todo sacha: add two permissions, read and write; Or better still add all permissions that are available. eg if you installed extra permissions

                        var permissionController = new PermissionController();
                        // view permission
                        var arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");
                        var permission          = (PermissionInfo)arrSystemModuleViewPermissions[0];
                        var objModulePermission = new ModulePermissionInfo
                        {
                            ModuleID = ModuleContext.Configuration.ModuleID,
                            //ModuleDefID = permission.ModuleDefID,
                            //PermissionCode = permission.PermissionCode,
                            PermissionID  = permission.PermissionID,
                            PermissionKey = permission.PermissionKey,
                            RoleID        = roleId,
                            //UserID = userId,
                            AllowAccess = true
                        };
                        objModule.ModulePermissions.Add(objModulePermission);

                        // edit permission
                        arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "EDIT");
                        permission          = (PermissionInfo)arrSystemModuleViewPermissions[0];
                        objModulePermission = new ModulePermissionInfo
                        {
                            ModuleID = ModuleContext.Configuration.ModuleID,
                            //ModuleDefID = permission.ModuleDefID,
                            //PermissionCode = permission.PermissionCode,
                            PermissionID  = permission.PermissionID,
                            PermissionKey = permission.PermissionKey,
                            RoleID        = roleId,
                            //UserID = userId,
                            AllowAccess = true
                        };
                        objModule.ModulePermissions.Add(objModulePermission);
                        try
                        {
                            ModulePermissionController.SaveModulePermissions(objModule);
                        }
                        catch (Exception ex)
                        {
                            //Log.Logger.ErrorFormat("Failed to automaticly set the permission. It already exists? tab={0}, moduletitle={1} ", objModule.TabID ,objModule.ModuleTitle);
                        }
                    }
                }
            }
        }
Example #2
0
        private void AutoSetPermission(ModuleInfo objModule, int roleId)
        {
            //todo sacha: add two permissions, read and write; Or better still add all permissions that are available. eg if you installed extra permissions

            var permissionController = new PermissionController();
            // view permission
            var arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");
            var permission          = (PermissionInfo)arrSystemModuleViewPermissions[0];
            var objModulePermission = new ModulePermissionInfo
            {
                ModuleID = ModuleContext.Configuration.ModuleID,
                //ModuleDefID = permission.ModuleDefID,
                //PermissionCode = permission.PermissionCode,
                PermissionID  = permission.PermissionID,
                PermissionKey = permission.PermissionKey,
                RoleID        = roleId,
                //UserID = userId,
                AllowAccess = true
            };

            objModule.ModulePermissions.Add(objModulePermission);

            // edit permission
            arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "EDIT");
            permission          = (PermissionInfo)arrSystemModuleViewPermissions[0];
            objModulePermission = new ModulePermissionInfo
            {
                ModuleID = ModuleContext.Configuration.ModuleID,
                //ModuleDefID = permission.ModuleDefID,
                //PermissionCode = permission.PermissionCode,
                PermissionID  = permission.PermissionID,
                PermissionKey = permission.PermissionKey,
                RoleID        = roleId,
                //UserID = userId,
                AllowAccess = true
            };
            objModule.ModulePermissions.Add(objModulePermission);
            try
            {
                ModulePermissionController.SaveModulePermissions(objModule);
            }
            catch (Exception)
            {
                //App.Services.Logger.Error($"Failed to automaticly set the permission. It already exists? tab={0}, moduletitle={1} ", objModule.TabID ,objModule.ModuleTitle);
            }
        }
        protected void OnUpdateClick(object sender, EventArgs e)
        {
            try
            {
                if (this.Page.IsValid)
                {
                    this.Module.ModulePermissions.Clear();
                    this.Module.ModulePermissions.AddRange(this.dgPermissions.Permissions);

                    ModulePermissionController.SaveModulePermissions(this.Module);

                    // Navigate back to admin page
                    this.Response.Redirect(this.ReturnURL, true);
                }
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        private void DoAddExistingModule(int moduleId, int tabId, string paneName, int position, string align, bool cloneModule)
        {
            ModuleInfo moduleInfo = ModuleController.Instance.GetModule(moduleId, tabId, false);

            int userID = -1;

            if (this.Request.IsAuthenticated)
            {
                UserInfo user = UserController.Instance.GetCurrentUserInfo();
                if (user != null)
                {
                    userID = user.UserID;
                }
            }

            if (moduleInfo != null)
            {
                // Is this from a site other than our own? (i.e., is the user requesting "module sharing"?)
                var remote = moduleInfo.PortalID != PortalSettings.Current.PortalId;
                if (remote)
                {
                    switch (moduleInfo.DesktopModule.Shareable)
                    {
                    case ModuleSharing.Unsupported:
                        // Should never happen since the module should not be listed in the first place.
                        throw new ApplicationException(string.Format(
                                                           "Module '{0}' does not support Shareable and should not be listed in Add Existing Module from a different source site",
                                                           moduleInfo.DesktopModule.FriendlyName));

                    case ModuleSharing.Supported:
                        break;

                    default:
                    case ModuleSharing.Unknown:
                        break;
                    }
                }

                // clone the module object ( to avoid creating an object reference to the data cache )
                ModuleInfo newModule = moduleInfo.Clone();

                newModule.UniqueId    = Guid.NewGuid(); // Cloned Module requires a different uniqueID
                newModule.TabModuleID = Null.NullInteger;
                newModule.TabID       = PortalSettings.Current.ActiveTab.TabID;
                newModule.ModuleOrder = position;
                newModule.PaneName    = paneName;
                newModule.Alignment   = align;

                if (cloneModule)
                {
                    newModule.ModuleID = Null.NullInteger;

                    // copy module settings and tab module settings
                    newModule.ModuleSettings.Clear();
                    foreach (var key in moduleInfo.ModuleSettings.Keys)
                    {
                        newModule.ModuleSettings.Add(key, moduleInfo.ModuleSettings[key]);
                    }

                    newModule.TabModuleSettings.Clear();
                    foreach (var key in moduleInfo.TabModuleSettings.Keys)
                    {
                        newModule.TabModuleSettings.Add(key, moduleInfo.TabModuleSettings[key]);
                    }

                    // reset the module id
                    newModule.ModuleID = ModuleController.Instance.AddModule(newModule);

                    if (!string.IsNullOrEmpty(newModule.DesktopModule.BusinessControllerClass))
                    {
                        object objObject = Reflection.CreateObject(newModule.DesktopModule.BusinessControllerClass, newModule.DesktopModule.BusinessControllerClass);
                        if (objObject is IPortable)
                        {
                            try
                            {
                                SetCloneModuleContext(true);
                                string content = Convert.ToString(((IPortable)objObject).ExportModule(moduleId));
                                if (!string.IsNullOrEmpty(content))
                                {
                                    ((IPortable)objObject).ImportModule(newModule.ModuleID, content, newModule.DesktopModule.Version, userID);
                                }
                            }
                            finally
                            {
                                SetCloneModuleContext(false);
                            }
                        }
                    }
                }
                else
                {
                    // copy tab module settings
                    newModule.TabModuleSettings.Clear();
                    foreach (var key in moduleInfo.TabModuleSettings.Keys)
                    {
                        newModule.TabModuleSettings.Add(key, moduleInfo.TabModuleSettings[key]);
                    }

                    ModuleController.Instance.AddModule(newModule);
                }

                if (remote)
                {
                    // Ensure the Portal Admin has View rights
                    var       permissionController           = new PermissionController();
                    ArrayList arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");
                    AddModulePermission(
                        newModule,
                        (PermissionInfo)arrSystemModuleViewPermissions[0],
                        PortalSettings.Current.AdministratorRoleId,
                        Null.NullInteger,
                        true);

                    // Set PortalID correctly
                    newModule.OwnerPortalID = newModule.PortalID;
                    newModule.PortalID      = PortalSettings.Current.PortalId;
                    ModulePermissionController.SaveModulePermissions(newModule);
                }

                // Add Event Log
                EventLogController.Instance.AddLog(newModule, PortalSettings.Current, userID, string.Empty, EventLogController.EventLogType.MODULE_CREATED);
            }
        }
Example #5
0
        public static void DeserializeModule(XmlNode nodeModule, XmlNode nodePane, int portalId, int tabId,
                                             PortalTemplateModuleAction mergeTabs, Hashtable hModules)
        {
            var moduleController    = new ModuleController();
            var objModuleDefinition = GetModuleDefinition(nodeModule);

            // will be instance or module
            var templateModuleId = XmlUtils.GetNodeValueInt(nodeModule, "moduleID");
            var isInstance       = CheckIsInstance(templateModuleId, hModules);

            //remove containersrc node if container is missing
            var containerNode = nodeModule.SelectSingleNode("containersrc");

            if (containerNode != null)
            {
                var container = containerNode.Value;
                if (!File.Exists(HttpContext.Current.Server.MapPath(container)))
                {
                    nodeModule.RemoveChild(containerNode);
                }
            }

            if (objModuleDefinition != null)
            {
                //If Mode is Merge Check if Module exists
                if (!FindModule(nodeModule, tabId, mergeTabs))
                {
                    var module = DeserializeModule(nodeModule, nodePane, portalId, tabId,
                                                   objModuleDefinition.ModuleDefID);

                    int intModuleId;
                    if (!isInstance)
                    {
                        //Add new module
                        intModuleId = moduleController.AddModule(module);
                        if (templateModuleId > 0)
                        {
                            hModules.Add(templateModuleId, intModuleId);
                        }
                    }
                    else
                    {
                        //Add instance
                        module.ModuleID = Convert.ToInt32(hModules[templateModuleId]);
                        intModuleId     = moduleController.AddModule(module);
                    }

                    if (XmlUtils.GetNodeValue(nodeModule, "content", "") != "")
                    {
                        GetModuleContent(nodeModule, intModuleId, tabId, portalId, isInstance);
                    }

                    // Process permissions and moduleSettings only once
                    if (!isInstance)
                    {
                        var nodeModulePermissions = nodeModule.SelectNodes("modulepermissions/permission");
                        DeserializeModulePermissions(nodeModulePermissions, portalId, module);

                        //Persist the permissions to the Data base
                        ModulePermissionController.SaveModulePermissions(module);

                        var nodeModuleSettings = nodeModule.SelectNodes("modulesettings/setting");
                        DeserializeModuleSettings(nodeModuleSettings, intModuleId);
                    }

                    //apply TabModuleSettings
                    var nodeTabModuleSettings = nodeModule.SelectNodes("tabmodulesettings/setting");
                    DeserializeTabModuleSettings(nodeTabModuleSettings, intModuleId, tabId);
                }
            }
        }
Example #6
0
        private void MakeModerator_Editor()
        {
            try
            {
                bool blEditor;
                var  arrRoles = new ArrayList();
                var  arrUsers = new ArrayList();

                var objPermission           = default(ModulePermissionInfo);
                var objPermissionController = new PermissionController();

                var objModules = new ModuleController();
                // Get existing module permissions
                var objModule = objModules.GetModule(this.ModuleId, this.TabId);

                var objModulePermissions2 = new ModulePermissionCollection();
                foreach (ModulePermissionInfo perm in objModule.ModulePermissions)
                {
                    if (perm.PermissionKey == "EVENTSMOD" && perm.AllowAccess ||
                        perm.PermissionKey == "EDIT" && perm.AllowAccess)
                    {
                        blEditor = false;
                        foreach (ModulePermissionInfo perm2 in objModule.ModulePermissions)
                        {
                            if (perm2.PermissionKey == "EVENTSEDT" &&
                                ((perm.RoleID == perm2.RoleID) & (perm.RoleID >= 0) ||
                                 (perm.UserID == perm2.UserID) & (perm.UserID >= 0)))
                            {
                                if (perm2.AllowAccess)
                                {
                                    blEditor = true;
                                }
                                else
                                {
                                    objModulePermissions2.Add(perm2);
                                }
                            }
                        }
                        if (blEditor == false)
                        {
                            if (perm.UserID >= 0)
                            {
                                arrUsers.Add(perm.UserID);
                            }
                            else
                            {
                                arrRoles.Add(perm.RoleID);
                            }
                        }
                    }
                }

                // Remove negative edit permissions where user is moderator
                foreach (ModulePermissionInfo perm in objModulePermissions2)
                {
                    objModule.ModulePermissions.Remove(perm);
                }

                var objEditPermissions =
                    objPermissionController.GetPermissionByCodeAndKey("EVENTS_MODULE", "EVENTSEDT");
                var objEditPermission = (PermissionInfo)objEditPermissions[0];

                foreach (int iRoleID in arrRoles)
                {
                    // Add Edit Permission for Moderator Role
                    objPermission                = new ModulePermissionInfo();
                    objPermission.RoleID         = iRoleID;
                    objPermission.ModuleID       = this.ModuleId;
                    objPermission.PermissionKey  = objEditPermission.PermissionKey;
                    objPermission.PermissionName = objEditPermission.PermissionName;
                    objPermission.PermissionCode = objEditPermission.PermissionCode;
                    objPermission.PermissionID   = objEditPermission.PermissionID;
                    objPermission.AllowAccess    = true;
                    objModule.ModulePermissions.Add(objPermission);
                }
                foreach (int iUserID in arrUsers)
                {
                    objPermission                = new ModulePermissionInfo();
                    objPermission.UserID         = iUserID;
                    objPermission.ModuleID       = this.ModuleId;
                    objPermission.PermissionKey  = objEditPermission.PermissionKey;
                    objPermission.PermissionName = objEditPermission.PermissionName;
                    objPermission.PermissionCode = objEditPermission.PermissionCode;
                    objPermission.PermissionID   = objEditPermission.PermissionID;
                    objPermission.AllowAccess    = true;
                    objModule.ModulePermissions.Add(objPermission);
                }
                ModulePermissionController.SaveModulePermissions(objModule);
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        private int DoAddExistingModule(int moduleId, int tabId, string paneName, int position, string align, bool cloneModule)
        {
            ModuleInfo moduleInfo = ModuleController.Instance.GetModule(moduleId, tabId, false);

            int userID = -1;

            UserInfo user = UserController.Instance.GetCurrentUserInfo();

            if (user != null)
            {
                userID = user.UserID;
            }


            if ((moduleInfo != null))
            {
                // Is this from a site other than our own? (i.e., is the user requesting "module sharing"?)
                var remote = moduleInfo.PortalID != PortalSettings.Current.PortalId;
                if (remote)
                {
                    switch (moduleInfo.DesktopModule.Shareable)
                    {
                    case ModuleSharing.Unsupported:
                        // Should never happen since the module should not be listed in the first place.
                        throw new ApplicationException(string.Format("Module '{0}' does not support Shareable and should not be listed in Add Existing Module from a different source site",
                                                                     moduleInfo.DesktopModule.FriendlyName));

                    case ModuleSharing.Supported:
                        break;

                    case ModuleSharing.Unknown:
                        break;
                    }
                }

                // clone the module object ( to avoid creating an object reference to the data cache )
                ModuleInfo newModule = moduleInfo.Clone();

                newModule.UniqueId = Guid.NewGuid(); // Cloned Module requires a different uniqueID

                newModule.TabID       = PortalSettings.Current.ActiveTab.TabID;
                newModule.ModuleOrder = position;
                newModule.PaneName    = paneName;
                newModule.Alignment   = align;

                if ((cloneModule))
                {
                    newModule.ModuleID = Null.NullInteger;
                    //reset the module id
                    newModule.ModuleID = ModuleController.Instance.AddModule(newModule);

                    if (!string.IsNullOrEmpty(newModule.DesktopModule.BusinessControllerClass))
                    {
                        object objObject = DotNetNuke.Framework.Reflection.CreateObject(newModule.DesktopModule.BusinessControllerClass, newModule.DesktopModule.BusinessControllerClass);
                        if (objObject is IPortable)
                        {
                            string content = Convert.ToString(((IPortable)objObject).ExportModule(moduleId));
                            if (!string.IsNullOrEmpty(content))
                            {
                                ((IPortable)objObject).ImportModule(newModule.ModuleID, content, newModule.DesktopModule.Version, userID);
                            }
                        }
                    }
                }
                else
                {
                    ModuleController.Instance.AddModule(newModule);
                }

                //if the tab of original module has custom stylesheet defined, then also copy the stylesheet
                //to the destination tab if its custom stylesheet is empty.
                var originalTab = TabController.Instance.GetTab(moduleInfo.TabID, moduleInfo.PortalID);
                var targetTab   = PortalSettings.Current.ActiveTab;
                if (originalTab != null &&
                    originalTab.TabSettings.ContainsKey("CustomStylesheet") &&
                    !string.IsNullOrEmpty(originalTab.TabSettings["CustomStylesheet"].ToString()) &&
                    (!targetTab.TabSettings.ContainsKey("CustomStylesheet") ||
                     string.IsNullOrEmpty(targetTab.TabSettings["CustomStylesheet"].ToString())))
                {
                    TabController.Instance.UpdateTabSetting(targetTab.TabID, "CustomStylesheet", originalTab.TabSettings["CustomStylesheet"].ToString());
                }

                if (remote)
                {
                    //Ensure the Portal Admin has View rights
                    var       permissionController           = new PermissionController();
                    ArrayList arrSystemModuleViewPermissions = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");
                    AddModulePermission(newModule,
                                        (PermissionInfo)arrSystemModuleViewPermissions[0],
                                        PortalSettings.Current.AdministratorRoleId,
                                        Null.NullInteger,
                                        true);

                    //Set PortalID correctly
                    newModule.OwnerPortalID = newModule.PortalID;
                    newModule.PortalID      = PortalSettings.Current.PortalId;
                    ModulePermissionController.SaveModulePermissions(newModule);
                }

                //Add Event Log
                EventLogController.Instance.AddLog(newModule, PortalSettings.Current, userID, "", EventLogController.EventLogType.MODULE_CREATED);

                return(newModule.ModuleID);
            }

            return(-1);
        }
Example #8
0
        private void CopyModulesFromSourceTab(TabInfo tab, TabInfo sourceTab)
        {
            foreach (var module in sourceTab.ChildModules.Values)
            {
                if (module.IsDeleted || module.AllTabs)
                {
                    continue;
                }

                var newModule = module.Clone();

                newModule.TabID = tab.TabID;
                newModule.DefaultLanguageGuid  = Null.NullGuid;
                newModule.CultureCode          = tab.CultureCode;
                newModule.VersionGuid          = Guid.NewGuid();
                newModule.LocalizedVersionGuid = Guid.NewGuid();

                newModule.ModuleID = Null.NullInteger;
                _moduleController.InitialModulePermission(newModule, newModule.TabID, 0);
                newModule.InheritViewPermissions = module.InheritViewPermissions;

                newModule.ModuleID = _moduleController.AddModule(newModule);

                //Copy each setting to the new TabModule instance
                foreach (DictionaryEntry setting in module.ModuleSettings)
                {
                    _moduleController.UpdateModuleSetting(newModule.ModuleID, Convert.ToString(setting.Key), Convert.ToString(setting.Value));
                }

                foreach (DictionaryEntry setting in module.TabModuleSettings)
                {
                    _moduleController.UpdateTabModuleSetting(newModule.TabModuleID, Convert.ToString(setting.Key), Convert.ToString(setting.Value));
                }

                //copy permissions from source module
                foreach (ModulePermissionInfo permission in module.ModulePermissions)
                {
                    newModule.ModulePermissions.Add(new ModulePermissionInfo
                    {
                        ModuleID      = newModule.ModuleID,
                        PermissionID  = permission.PermissionID,
                        RoleID        = permission.RoleID,
                        UserID        = permission.UserID,
                        PermissionKey = permission.PermissionKey,
                        AllowAccess   = permission.AllowAccess
                    }, true);
                }

                ModulePermissionController.SaveModulePermissions(newModule);

                if (!string.IsNullOrEmpty(newModule.DesktopModule.BusinessControllerClass))
                {
                    var moduleBizClass = Reflection.CreateObject(newModule.DesktopModule.BusinessControllerClass, newModule.DesktopModule.BusinessControllerClass) as IPortable;
                    if (moduleBizClass != null)
                    {
                        var content = Convert.ToString(moduleBizClass.ExportModule(module.ModuleID));
                        if (!string.IsNullOrEmpty(content))
                        {
                            content = XmlUtils.RemoveInvalidXmlCharacters(content);
                            moduleBizClass.ImportModule(newModule.ModuleID, content, newModule.DesktopModule.Version, UserController.Instance.GetCurrentUserInfo().UserID);
                        }
                    }
                }
            }
        }
        public string UpgradeModule(string version)
        {
            string[] _version    = version.Split(new char[] { '.' });
            int      major       = Convert.ToInt32(_version[0]);
            int      minor       = Convert.ToInt32(_version[1]);
            int      maintenance = Convert.ToInt32(_version[2]);

            if (major == 9)
            {
                if (minor == 0)
                {
                    if (maintenance == 0)
                    {
                        List <ModuleInfo> modulesList = ModuleController.GetAllModules().Cast <ModuleInfo>().ToList();

                        foreach (object m in modulesList)
                        {
                            ModuleInfo module = (ModuleInfo)m;
                            if (module.DesktopModule.FriendlyName == "Survey")
                            {
                                ModulePermissionCollection modulePermissions = module.ModulePermissions;
                                // Setting surveyresultstype: 0 = Public, 1 = Private
                                // goes to Permission
                                string surveyResultsTypeSetting = module.ModuleSettings["surveyresultstype"].ToString();
                                if (string.IsNullOrEmpty(surveyResultsTypeSetting))
                                {
                                    // if not defined: make it private to be safe...
                                    surveyResultsTypeSetting = "1";
                                }
                                // If it is public: All Users (RoleID: -1) have the permission to view the results
                                if (surveyResultsTypeSetting == "0")
                                {
                                    List <ModulePermissionInfo> viewResultsPermissions = modulePermissions.Where(mp => mp.ModuleID == module.ModuleID && mp.PermissionCode == ModuleSecurity.PERMISSION_CODE && mp.PermissionKey == ModuleSecurity.VIEW_RESULTS_PERMISSION && mp.RoleID == -1).ToList();
                                    if (viewResultsPermissions.Count() == 0)
                                    {
                                        ModulePermissionInfo viewResultPermission = new ModulePermissionInfo();
                                        viewResultPermission.AllowAccess  = true;
                                        viewResultPermission.RoleID       = -1;
                                        viewResultPermission.PermissionID = ((PermissionInfo)PermissionController.GetPermissionByCodeAndKey(ModuleSecurity.PERMISSION_CODE, ModuleSecurity.VIEW_RESULTS_PERMISSION)[0]).PermissionID;
                                        viewResultPermission.ModuleID     = module.ModuleID;
                                        modulePermissions.Add(viewResultPermission);
                                        ModulePermissionController.SaveModulePermissions(module);
                                    }
                                }
                                // All roles and user who have edit permissions get the View results permission as well
                                List <ModulePermissionInfo> editModulePermissions = modulePermissions.Where(mp => mp.ModuleID == module.ModuleID && mp.PermissionCode == "SYSTEM_MODULE_DEFINITION" && mp.PermissionKey == "EDIT").ToList();
                                foreach (ModulePermissionInfo editModulePermission in editModulePermissions)
                                {
                                    List <ModulePermissionInfo> viewResultsPermissions;
                                    ModulePermissionInfo        viewResultPermission = new ModulePermissionInfo();
                                    if (String.IsNullOrEmpty(editModulePermission.RoleName))
                                    {
                                        // when the role name is empty it is a user poermission
                                        viewResultsPermissions        = modulePermissions.Where(mp => mp.PermissionCode == ModuleSecurity.PERMISSION_CODE && mp.PermissionKey == ModuleSecurity.VIEW_RESULTS_PERMISSION && mp.UserID == editModulePermission.UserID).ToList();
                                        viewResultPermission.UserID   = editModulePermission.UserID;
                                        viewResultPermission.Username = editModulePermission.Username;
                                    }
                                    else
                                    {
                                        // role permission
                                        viewResultsPermissions        = modulePermissions.Where(mp => mp.PermissionCode == ModuleSecurity.PERMISSION_CODE && mp.PermissionKey == ModuleSecurity.VIEW_RESULTS_PERMISSION && mp.RoleID == editModulePermission.RoleID).ToList();
                                        viewResultPermission.RoleID   = editModulePermission.RoleID;
                                        viewResultPermission.RoleName = editModulePermission.RoleName;
                                    }
                                    if (viewResultsPermissions.Count() == 0)
                                    {
                                        // if the permission for this user/role is not already set...
                                        viewResultPermission.AllowAccess  = true;
                                        viewResultPermission.PermissionID = ((PermissionInfo)PermissionController.GetPermissionByCodeAndKey(ModuleSecurity.PERMISSION_CODE, ModuleSecurity.VIEW_RESULTS_PERMISSION)[0]).PermissionID;
                                        viewResultPermission.ModuleID     = module.ModuleID;
                                        modulePermissions.Add(viewResultPermission);
                                        ModulePermissionController.SaveModulePermissions(module);
                                    }
                                }
                                // Setting surveytracking: 0 = Cookie, 1 = Registered user
                                // goes to Permission
                                string surveyTrackingSetting = module.ModuleSettings["surveytracking"].ToString();
                                if (string.IsNullOrEmpty(surveyTrackingSetting))
                                {
                                    // if not defined: make it per user
                                    surveyTrackingSetting = "1";
                                }
                                // If it is Cookie tracking: All users (RoleId: -1) have the permissions to participate in the survey
                                // Otherwise: Registered Users have the permission to participate in the survey
                                // Is there a better way than using the hard coded role IDs?
                                int permittedRoleID = (surveyTrackingSetting == "0" ? -1 : 1);
                                List <ModulePermissionInfo> participatePermissions = modulePermissions.Where(mp => mp.ModuleID == module.ModuleID && mp.PermissionCode == ModuleSecurity.PERMISSION_CODE && mp.PermissionKey == ModuleSecurity.PARTICIPATE_PERMISSION && mp.RoleID == permittedRoleID).ToList();
                                if (participatePermissions.Count() == 0)
                                {
                                    ModulePermissionInfo participatePermission = new ModulePermissionInfo();
                                    participatePermission.AllowAccess  = true;
                                    participatePermission.RoleID       = permittedRoleID;
                                    participatePermission.PermissionID = ((PermissionInfo)PermissionController.GetPermissionByCodeAndKey(ModuleSecurity.PERMISSION_CODE, ModuleSecurity.PARTICIPATE_PERMISSION)[0]).PermissionID;
                                    participatePermission.ModuleID     = module.ModuleID;
                                    modulePermissions.Add(participatePermission);
                                    ModulePermissionController.SaveModulePermissions(module);
                                }
                                // Is Module a quiz?
                                List <SurveysInfo> surveys = SurveysController.GetAll(module.ModuleID);
                                bool isQuiz = false;
                                List <SurveysInfo> statisticalSurveys = new List <SurveysInfo>();
                                foreach (SurveysInfo survey in surveys)
                                {
                                    List <SurveyOptionsInfo> surveyOptions = SurveyOptionsController.GetAll(survey.SurveyID);
                                    int countCorrect = surveyOptions.Where(so => so.IsCorrect).Count();
                                    if (countCorrect > 0)
                                    {
                                        isQuiz = true;
                                    }
                                    else
                                    {
                                        statisticalSurveys.Add(survey);
                                    }
                                }
                                if (isQuiz)
                                {
                                    ModuleController.Instance.UpdateModuleSetting(module.ModuleID, "SurveyType", ((int)SurveyType.Quiz).ToString());
                                    foreach (SurveysInfo statisticalSurvey in statisticalSurveys)
                                    {
                                        statisticalSurvey.IsStatistical = true;
                                        SurveysController.AddOrChange(statisticalSurvey, XmlDataProvider.SurveyOptionsToXml(SurveyOptionsController.GetAll(statisticalSurvey.SurveyID)), -1);
                                    }
                                }
                                string surveyClosingDate = module.ModuleSettings["surveyclosingdate"].ToString();
                                if (!(string.IsNullOrEmpty(surveyClosingDate)))
                                {
                                    ModuleController.Instance.DeleteModuleSetting(module.ModuleID, "surveyclosingdate");
                                    ModuleController.Instance.UpdateModuleSetting(module.ModuleID, "SurveyClosingDate", surveyClosingDate);
                                }
                                // Remove unused old settings
                                ModuleController.Instance.DeleteModuleSetting(module.ModuleID, "surveyresultstype");
                                ModuleController.Instance.DeleteModuleSetting(module.ModuleID, "surveytracking");
                                ModuleController.Instance.DeleteModuleSetting(module.ModuleID, "surveyresulttemplate");
                                ModuleController.Instance.DeleteTabModuleSetting(module.TabModuleID, "surveygraphwidth");
                            }
                        }
                    }
                }
            }
            return(string.Format("Upgrading to version {0}.", version));
        }
Example #10
0
        public string UpgradeModule(string Version)
        {
            try
            {
                switch (Version)
                {
                case "01.00.00":
                    ModuleDefinitionInfo moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByFriendlyName("Messaging");

                    if (moduleDefinition != null)
                    {
                        //Add Module to User Profile Page for all Portals
                        var objPortalController = new PortalController();
                        var objTabController    = new TabController();
                        var objModuleController = new ModuleController();

                        ArrayList portals = objPortalController.GetPortals();
                        foreach (PortalInfo portal in portals)
                        {
                            int tabID = TabController.GetTabByTabPath(portal.PortalID, "//UserProfile", Null.NullString);
                            if ((tabID != Null.NullInteger))
                            {
                                TabInfo tab = objTabController.GetTab(tabID, portal.PortalID, true);
                                if ((tab != null))
                                {
                                    int        moduleId  = Upgrade.AddModuleToPage(tab, moduleDefinition.ModuleDefID, "My Inbox", "", true);
                                    ModuleInfo objModule = objModuleController.GetModule(moduleId, tabID, false);

                                    var settings = new PortalSettings(portal);

                                    var modulePermission = (from ModulePermissionInfo p in objModule.ModulePermissions
                                                            where p.ModuleID == moduleId &&
                                                            p.RoleID == settings.RegisteredRoleId &&
                                                            p.UserID == Null.NullInteger &&
                                                            p.PermissionKey == "EDIT"
                                                            select p).SingleOrDefault();

                                    if (modulePermission == null)
                                    {
                                        ArrayList      permissions = new PermissionController().GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "EDIT");
                                        PermissionInfo permission  = null;
                                        if (permissions.Count == 1)
                                        {
                                            permission = permissions[0] as PermissionInfo;
                                        }
                                        if (permission != null)
                                        {
                                            modulePermission = new ModulePermissionInfo(permission)
                                            {
                                                ModuleID    = moduleId,
                                                RoleID      = settings.RegisteredRoleId,
                                                UserID      = Null.NullInteger,
                                                AllowAccess = true
                                            };


                                            objModule.ModulePermissions.Add(modulePermission);

                                            ModulePermissionController.SaveModulePermissions(objModule);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;
                }
                return("Success");
            }
            catch (Exception exc)
            {
                DnnLog.Error(exc);

                return("Failed");
            }
        }