예제 #1
0
        public override bool Perform()
        {
            try
            {
                UpgradeUtilities.ScheduleReportingRefresh(Web);
                LogMessage(null, MessageKind.SUCCESS, 1);
            }
            catch (Exception e)
            {
                LogMessage(e.Message, MessageKind.FAILURE, 1);
            }

            return(true);
        }
예제 #2
0
        // Private Methods (2) 

        private void MapField(SPList spList, SPWeb web, string internalName, string displayName, SPFieldType spFieldType,
                              string propertyValue)
        {
            string      message;
            MessageKind messageKind;

            LogMessage("Adding field: " + displayName, 3);

            SPField spField = UpgradeUtilities.TryAddField(internalName, displayName, spFieldType, spList, out message,
                                                           out messageKind);

            if (spField != null)
            {
                spField.ShowInNewForm     = false;
                spField.ShowInEditForm    = false;
                spField.ShowInDisplayForm = true;

                spField.Update();

                if (internalName.Equals("Selected"))
                {
                    var spFieldBoolean = (SPFieldBoolean)spList.Fields.GetFieldByInternalName(internalName);
                    spFieldBoolean.DefaultValue = "0";
                    spFieldBoolean.Update();
                }
                else
                {
                    var spFieldNumber = (SPFieldNumber)spList.Fields.GetFieldByInternalName(internalName);
                    spFieldNumber.DisplayFormat = SPNumberFormatTypes.NoDecimal;
                    spFieldNumber.Update();
                }
            }

            LogMessage(message, messageKind, 4);

            string listName = spList.Title.Replace(" ", string.Empty).ToLower();

            SetProperty(web, propertyValue, "epk" + listName + "_fields");
        }
예제 #3
0
        // Public Methods (1) 

        public void execute(SPSite site, SPWeb web, string data)
        {
            try
            {
                string[] passedParams                = data.Split(new char[] { '|' });
                string   secondParameter             = passedParams.Length > 1 ? passedParams[1] : string.Empty;
                Dictionary <long, Type> upgradeSteps = UpgradeUtilities.GetUpgradeSteps(passedParams.Length > 0? passedParams[0]:string.Empty);
                if (!string.IsNullOrWhiteSpace(secondParameter) && secondParameter.ToLower().Trim().Equals("mark"))
                {
                    web.AllowUnsafeUpdates = true;
                    var steps = upgradeSteps.Where(item => item.Key > 0).OrderBy(item => item.Key).ToList();
                    if (steps.Count > 0)
                    {
                        web.AllProperties["LastVersionedUpgrade"] = steps[steps.Count - 1].Key.ToString();
                    }
                    steps = upgradeSteps.Where(item => item.Key < 0).OrderBy(item => item.Key).ToList();
                    if (steps.Count > 0)
                    {
                        web.AllProperties["LastGenericUpgrade"] = steps[0].Key.ToString();
                    }

                    web.AllowUnsafeUpdates = false;
                    web.Update();
                }
                else
                {
                    bool isPfeSite = site.Features[new Guid("158c5682-d839-4248-b780-82b4710ee152")] != null;
                    List <KeyValuePair <long, Type> > steps = null;
                    int genericStartIndex = 0;
                    if (!string.IsNullOrWhiteSpace(secondParameter) && secondParameter.ToLower().Trim().Equals("force"))
                    {
                        steps             = upgradeSteps.Where(item => item.Key > 0).OrderBy(item => item.Key).ToList();
                        genericStartIndex = steps.Count;
                        steps.AddRange(upgradeSteps.Where(item => item.Key < 0).OrderByDescending(item => item.Key).ToList());
                    }
                    else
                    {
                        long lastVersionedSequence = web.AllProperties.ContainsKey("LastVersionedUpgrade") ? long.Parse((string)web.AllProperties["LastVersionedUpgrade"]) : 0;
                        if (lastVersionedSequence < 1000000000L)
                        {
                            lastVersionedSequence = lastVersionedSequence * 100;
                        }
                        long lastGenericSequence = web.AllProperties.ContainsKey("LastGenericUpgrade") ? long.Parse((string)web.AllProperties["LastGenericUpgrade"]) : 0;

                        steps             = upgradeSteps.Where(item => item.Key > lastVersionedSequence).OrderBy(item => item.Key).ToList();
                        genericStartIndex = steps.Count;
                        steps.AddRange(upgradeSteps.Where(item => item.Key < lastGenericSequence).OrderByDescending(item => item.Key).ToList());
                    }
                    totalCount = steps.Count;
                    int progressCounter = 1;
                    foreach (var upgradeStep in steps)
                    {
                        var step = Activator.CreateInstance(upgradeStep.Value, new object[] { web, isPfeSite }) as IUpgradeStep;

                        if (step == null)
                        {
                            continue;
                        }

                        bool success = step.Perform();
                        sErrors += step.Log;

                        updateProgress(progressCounter++);

                        if (success)
                        {
                            web.AllowUnsafeUpdates = true;
                            if (progressCounter - 2 < genericStartIndex)
                            {
                                web.AllProperties["LastVersionedUpgrade"] = upgradeStep.Key.ToString();
                            }
                            else
                            {
                                web.AllProperties["LastGenericUpgrade"] = upgradeStep.Key.ToString();
                            }
                            web.Update();
                            web.AllowUnsafeUpdates = false;
                            continue;
                        }
                        bErrors = true;
                        break;
                    }
                }

                #region Database checks
                EPMData       epmdata  = new EPMData(site.ID);
                StringBuilder sbErrors = new StringBuilder();
                try
                {
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Started Database checks for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid));
                    CheckReqSP(epmdata.GetClientReportingConnection);
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Completed Database checks for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid));
                }
                catch (Exception exReqSP)
                {
                    var message = exReqSP.InnerException != null ? exReqSP.InnerException.Message : exReqSP.Message;

                    bErrors = true;
                    sbErrors.Append("<font color=\"red\">Error while checking SPRequirement: " + message + "</font><br>");
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Error while checking SPRequirement for site: {0} error {1}", site.Url, message), 2, 3, Convert.ToString(JobUid));
                }

                try
                {
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Started updating schema for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid));
                    CheckSchema(epmdata.GetClientReportingConnection);
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Completed updating schema for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid));
                }
                catch (Exception exSchema)
                {
                    var message = exSchema.InnerException != null ? exSchema.InnerException.Message : exSchema.Message;

                    bErrors = true;
                    sbErrors.Append("<font color=\"red\">Error while updating schema: " + message + "</font><br>");
                    epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Error while updating schema for site: {0} error {1}", site.Url, message), 2, 3, Convert.ToString(JobUid));
                }

                #endregion
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sErrors = sErrors + bErrors.ToString();
                if (web != null)
                {
                    web.Dispose();
                }
                if (site != null)
                {
                    site.Dispose();
                }
                data = null;
            }
        }
예제 #4
0
        public override bool Perform()
        {
            try
            {
                SPSecurity.RunWithElevatedPrivileges(() =>
                {
                    using (var spSite = new SPSite(Web.Site.ID))
                    {
                        using (SPWeb spWeb = spSite.OpenWeb())
                        {
                            LogTitle(GetWebInfo(spWeb), 1);

                            SPList spList = spWeb.Lists.TryGetList(LIST_NAME);

                            if (spList == null)
                            {
                                LogMessage("Downloading new " + LIST_NAME + " list", 2);

                                var catalog =
                                    (SPDocumentLibrary)Web.Site.GetCatalog(SPListTemplateType.ListTemplateCatalog);

                                const string TEMPLATE_NAME = LIST_NAME + " [5.5]";

                                using (var webClient = new WebClient())
                                {
                                    byte[] bytes =
                                        webClient.DownloadData(_storeUrl + "/Upgrade/" + LIST_NAME.ToLower() + ".stp");
                                    SPFile file   = catalog.RootFolder.Files.Add(LIST_NAME + "_55.stp", bytes, true);
                                    SPListItem li = file.GetListItem();
                                    li["Title"]   = TEMPLATE_NAME;
                                    li.SystemUpdate();
                                }

                                LogMessage("Creating the " + LIST_NAME + " list", 2);

                                SPListTemplateCollection listTemplates = spSite.GetCustomListTemplates(spWeb);
                                SPListTemplate template = listTemplates[TEMPLATE_NAME];

                                spWeb.Lists.Add(LIST_NAME, string.Empty, template);

                                SPList list = spWeb.Lists[LIST_NAME];
                                list.Title  = LIST_NAME;
                                list.Hidden = true;
                                list.Update();

                                LogMessage("Adding reporting groups", 2);

                                SPGroup owner = spWeb.SiteGroups["Administrators"];
                                SPUser user   = spWeb.CurrentUser;

                                AddGroup(spWeb, owner, user, "Report Viewers");
                                AddGroup(spWeb, owner, user, "Report Writers");

                                LogMessage("Processing reports", 2);

                                string error;
                                Reporting.ProcessIzendaReportsFromList(list, out error);

                                if (!string.IsNullOrEmpty(error))
                                {
                                    LogMessage(error, MessageKind.FAILURE, 3);
                                }
                                else
                                {
                                    LogMessage(null, MessageKind.SUCCESS, 3);
                                }

                                LogMessage("Updating Navigation link", 2);

                                string relativeUrl = spWeb.ServerRelativeUrl.ToLower();
                                string newUrl      = relativeUrl + "/_layouts/15/epmlive/reporting/landing.aspx";

                                SPList lst = spWeb.Lists.TryGetList("Installed Applications");
                                if (lst != null)
                                {
                                    var qry = new SPQuery
                                    {
                                        Query      = @"<Where><IsNotNull><FieldRef Name='QuickLaunch' /></IsNotNull></Where>",
                                        ViewFields = @"<FieldRef Name='QuickLaunch' />"
                                    };

                                    SPListItemCollection listItems = lst.GetItems(qry);

                                    foreach (SPListItem item in listItems)
                                    {
                                        foreach (SPNavigationNode navNode in
                                                 from node in item["QuickLaunch"].ToString().Split(',')
                                                 select Convert.ToInt32(node.Split(':')[0])
                                                 into i
                                                 select spWeb.Navigation.GetNodeById(i)
                                                 into navNode
                                                 where navNode != null
                                                 let url = navNode.Url.ToLower()
                                                           where
                                                           url.EndsWith(relativeUrl + "/reports.aspx") ||
                                                           url.EndsWith(relativeUrl + "/sitepages/report.aspx")
                                                           select navNode)
                                        {
                                            string message;
                                            MessageKind messageKind;

                                            UpgradeUtilities.UpdateNodeLink(newUrl, item.ID, navNode, spWeb, out message,
                                                                            out messageKind);

                                            LogMessage(message, messageKind, 3);
                                        }
                                    }
                                }
                                else
                                {
                                    LogMessage("The list Installed Applications does not exists.", MessageKind.FAILURE,
                                               3);
                                }

                                CacheStore.Current.RemoveSafely(spWeb.Url, new CacheStoreCategory(spWeb).Navigation);
                            }
                            else
                            {
                                LogMessage("Advance reporting is already configured.", MessageKind.SKIPPED, 2);
                            }
                        }
                    }
                });
            }
            catch (Exception e)
            {
                LogMessage(e.Message, MessageKind.FAILURE, 2);
            }

            return(true);
        }
예제 #5
0
        public override bool Perform()
        {
            try
            {
                using (var spSite = new SPSite(Web.Site.ID))
                {
                    using (SPWeb spWeb = spSite.OpenWeb())
                    {
                        LogTitle(GetWebInfo(spWeb), 1);

                        SPList spList = spWeb.Lists.TryGetList("Installed Applications");
                        if (spList != null)
                        {
                            var qry = new SPQuery
                            {
                                Query =
                                    @"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>My Workplace</Value></Eq></Where>",
                                ViewFields = @"<FieldRef Name='ID' />"
                            };

                            SPListItemCollection listItems = spList.GetItems(qry);

                            if (listItems.Count != 0)
                            {
                                try
                                {
                                    LogTitle("Changing My Workplace to Global My Workplace", 2);

                                    SPListItem item = spList.GetItemById(listItems[0].ID);

                                    item["Title"]    = "Global My Workplace";
                                    item["HomePage"] = new SPFieldUrlValue
                                    {
                                        Url         = spWeb.Url + "/SitePages/GlobalMyWorkplace.aspx",
                                        Description = "Global My Workplace"
                                    };

                                    item.SystemUpdate();

                                    LogTitle("Updating links", 2);

                                    string[] nodes = ((item["QuickLaunch"] ?? string.Empty).ToString()).Split(',');

                                    if (nodes.Any())
                                    {
                                        foreach (string nodeId in nodes)
                                        {
                                            try
                                            {
                                                string      message;
                                                MessageKind messageKind;

                                                int id = Convert.ToInt32(nodeId.Split(':')[0]);
                                                SPNavigationNode node = spWeb.Navigation.GetNodeById(id);

                                                if (node == null)
                                                {
                                                    continue;
                                                }

                                                if (node.Title.Equals("My Work"))
                                                {
                                                    string url = spWeb.ServerRelativeUrl +
                                                                 "/_layouts/15/epmlive/MyWork.aspx";

                                                    if (url.ToLower().Equals(node.Url.ToLower()))
                                                    {
                                                        continue;
                                                    }

                                                    UpgradeUtilities.UpdateNodeLink(url, item.ID, node, spWeb,
                                                                                    out message, out messageKind);

                                                    LogMessage(message, messageKind, 3);
                                                }
                                                else if (node.Title.Equals("Timesheet"))
                                                {
                                                    string url = spWeb.ServerRelativeUrl +
                                                                 "/_layouts/15/epmlive/MyTimesheet.aspx";

                                                    if (url.ToLower().Equals(node.Url.ToLower()))
                                                    {
                                                        continue;
                                                    }

                                                    UpgradeUtilities.UpdateNodeLink(url, item.ID, node, spWeb,
                                                                                    out message, out messageKind);

                                                    LogMessage(message, messageKind, 3);
                                                }
                                            }
                                            catch (Exception e)
                                            {
                                                LogMessage(e.Message, MessageKind.FAILURE, 3);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        LogMessage("No navigation nodes were found.", MessageKind.FAILURE, 3);
                                    }

                                    CacheStore.Current.RemoveSafely(spWeb.Url, new CacheStoreCategory(spWeb).Navigation);
                                }
                                catch (Exception e)
                                {
                                    LogMessage(e.Message, MessageKind.FAILURE, 3);
                                }
                            }
                            else
                            {
                                LogMessage("The My Workplace community was not found.", MessageKind.SKIPPED, 2);
                            }
                        }
                        else
                        {
                            LogMessage("The list Installed Applications does not exists.", MessageKind.FAILURE, 2);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LogMessage(e.Message, MessageKind.FAILURE, 2);
            }

            return(true);
        }