public void GetQueryTest()
        {
            var testParams = new string[] { "<Data>" +
                                            "<Param key=\"SiteId\">7F316E11-C842-4440-9918-39A8F1C12DA9</Param>" +
                                            "<Param key=\"WebId\">1A8F7946-CCA1-4A24-8785-CE8E32D012BE</Param>" +
                                            "<Param key=\"ListId\">5D592B57-C072-4B36-8809-11262120484D</Param>" +
                                            "</Data>", "<Data>" +
                                            "<Param key=\"SiteId\">7F316E11-C842-4440-9918-39A8F1C12DA9</Param>" +
                                            "<Param key=\"WebId\">1A8F7946-CCA1-4A24-8785-CE8E32D012BE</Param>" +
                                            "<Param key=\"ListId\">5D592B57-C072-4B36-8809-11262120484D</Param>" +
                                            "<Param key=\"IsItem\">true</Param>" +
                                            "</Data>" };

            var aTypes   = Enum.GetValues(typeof(AnalyticsType)).Cast <AnalyticsType>();
            var aActions = Enum.GetValues(typeof(AnalyticsAction)).Cast <AnalyticsAction>();

            foreach (var aType in aTypes)
            {
                foreach (var aAction in aActions)
                {
                    foreach (var param in testParams)
                    {
                        var ad = new AnalyticsData(param, aType, aAction);

                        if (aAction == AnalyticsAction.Update && aType == AnalyticsType.Favorite ||
                            aAction == AnalyticsAction.Update && aType == AnalyticsType.FavoriteWorkspace ||
                            aAction == AnalyticsAction.Update && aType == AnalyticsType.Recent ||
                            aAction == AnalyticsAction.Delete && aType == AnalyticsType.Recent ||
                            aAction == AnalyticsAction.Read && aType == AnalyticsType.Recent)
                        {
                            Assert.IsTrue(string.IsNullOrEmpty(FRFQueryFactory.GetQuery(ad)));
                        }
                        else
                        {
                            Assert.IsFalse(string.IsNullOrEmpty(FRFQueryFactory.GetQuery(ad)));
                        }
                    }
                }
            }
        }
예제 #2
0
        public override void WebDeleting(SPWebEventProperties properties)
        {
            try
            {
                var sParentItem = properties.Web.AllProperties["ParentItem"];
                var sColl       = sParentItem.ToString().Split(new string[] { "^^" }, StringSplitOptions.RemoveEmptyEntries);
                var webid       = sColl[0];
                var listid      = sColl[1];
                var itemid      = sColl[2];
                var sIsItem     = (new Guid(listid) != Guid.Empty) ? "true" : "false";
                var bIsItem     = (new Guid(listid) != Guid.Empty);

                var xml =
                    "<Data><Param key=\"SiteId\">" + properties.SiteId + "</Param>" +
                    "<Param key=\"WebId\">" + properties.Web.ID + "</Param>" +
                    "<Param key=\"ItemId\">" + itemid + "</Param>" +
                    "<Param key=\"FString\">" + properties.Web.ServerRelativeUrl + "</Param>" +
                    "<Param key=\"Type\">4</Param>" +
                    "<Param key=\"UserId\">" + properties.Web.CurrentUser.ID + "</Param>" +
                    "<Param key=\"IsItem\">" + sIsItem + "</Param></Data>";

                var data  = new AnalyticsData(xml, AnalyticsType.FavoriteWorkspace, AnalyticsAction.Delete);
                var qExec = new QueryExecutor(properties.Web);
                qExec.ExecuteEpmLiveQuery(
                    FRFQueryFactory.GetQuery(data),
                    FRFQueryParamFactory.GetParam(data));

                qExec.ExecuteReportingDBNonQuery(
                    "DELETE FROM RPTWeb WHERE [WebId]=@webid",
                    new Dictionary <string, object>()
                {
                    { "@webid", properties.WebId }
                });

                qExec.ExecuteReportingDBNonQuery(
                    "DELETE FROM [RPTWEBGROUPS] WHERE [WEBID] NOT IN (SELECT [WebId] FROM [RPTWeb])",
                    new Dictionary <string, object>());

                if (bIsItem)
                {
                    // remove the parent item's workspaceurl field value
                    // so the workspace icon doesn't show up in grid
                    try
                    {
                        SPSecurity.RunWithElevatedPrivileges(delegate
                        {
                            using (var s = new SPSite(properties.SiteId))
                            {
                                using (var w = s.OpenWeb(new Guid(webid)))
                                {
                                    w.AllowUnsafeUpdates = true;

                                    var l = w.Lists[new Guid(listid)];
                                    var i = l.GetItemById(int.Parse(itemid));

                                    i["WorkspaceUrl"] = null;
                                    i.SystemUpdate();

//                                    var dt = qExec.ExecuteReportingDBQuery(
//                                        "SELECT [TableName] FROM [RPTList] WHERE RPTListId = '" + l.ID + "'", new Dictionary<string, object>());

//                                    if (dt != null && dt.Rows.Cast<DataRow>().Any())
//                                    {
//                                        var sRptTblName = dt.Rows[0][0].ToString();

//                                        var sDelWsUrlQuery =
//                                            @"IF EXISTS (select * from INFORMATION_SCHEMA.COLUMNS where table_name = '" + sRptTblName + @"' and column_name = 'WorkspaceUrl')
//	                                            BEGIN
//                                                    UPDATE " + sRptTblName + @" SET [WorkspaceUrl] = NULL WHERE [ListId] = '" + listid + @"' AND [ItemId] = " + itemid + @"
//                                                END";

//                                        qExec.ExecuteReportingDBNonQuery(sDelWsUrlQuery, new Dictionary<string, object>());
//                                    }
                                }
                            }
                        });
                    }
                    catch { }
                }

                CacheStore.Current.RemoveSafely(properties.Web.Url, new CacheStoreCategory(properties.Web).Navigation);
            }
            catch
            {
            }
        }