public List<DirEventsReplyData> FindEvents(string queryText, uint eventFlags, int StartQuery, UUID scopeID) { object remoteValue = DoRemote(queryText, eventFlags, StartQuery, scopeID); if (remoteValue != null || m_doRemoteOnly) return (List<DirEventsReplyData>)remoteValue; List<DirEventsReplyData> Data = new List<DirEventsReplyData>(); QueryFilter filter = new QueryFilter(); //|0| means search between some days if (queryText.Contains("|0|")) { string StringDay = queryText.Split('|')[0]; if (StringDay == "u") //"u" means search for events that are going on today { filter.andGreaterThanEqFilters["UNIX_TIMESTAMP(date)"] = Util.ToUnixTime(DateTime.Today); } else { //Pull the day out then and search for that many days in the future/past int Day = int.Parse(StringDay); DateTime SearchedDay = DateTime.Today.AddDays(Day); //We only look at one day at a time DateTime NextDay = SearchedDay.AddDays(1); filter.andGreaterThanEqFilters["UNIX_TIMESTAMP(date)"] = Util.ToUnixTime(SearchedDay); filter.andLessThanEqFilters["UNIX_TIMESTAMP(date)"] = Util.ToUnixTime(NextDay); filter.andLessThanEqFilters["flags"] = (int)eventFlags; } } else { filter.andLikeFilters["name"] = "%" + queryText + "%"; } if (scopeID != UUID.Zero) filter.andFilters["scopeID"] = scopeID; List<string> retVal = GD.Query(new[]{ "EID", "creator", "date", "maturity", "flags", "name" }, "asevents", filter, null, (uint)StartQuery, 50); if (retVal.Count > 0) { for (int i = 0; i < retVal.Count; i += 6) { DirEventsReplyData replyData = new DirEventsReplyData { eventID = Convert.ToUInt32(retVal[i]), ownerID = new UUID(retVal[i + 1]), name = retVal[i + 5], }; DateTime date = DateTime.Parse(retVal[i + 2]); replyData.date = date.ToString(new DateTimeFormatInfo()); replyData.unixTime = (uint)Util.ToUnixTime(date); replyData.eventFlags = Convert.ToUInt32(retVal[i + 4]); //Check the maturity levels uint maturity = Convert.ToUInt32(retVal[i + 3]); if( (maturity == 0 && (eventFlags & (uint)EventFlags.PG) == (uint)EventFlags.PG) || (maturity == 1 && (eventFlags & (uint)EventFlags.Mature) == (uint)EventFlags.Mature) || (maturity == 2 && (eventFlags & (uint)EventFlags.Adult) == (uint)EventFlags.Adult) ) { Data.Add(replyData); } } } return Data; }
public void DirEventsQuery(IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, int queryStart) { Hashtable ReqHash = new Hashtable(); ReqHash["text"] = queryText; ReqHash["flags"] = queryFlags.ToString(); ReqHash["query_start"] = queryStart.ToString(); Hashtable result = GenericXMLRPCRequest(ReqHash, "dir_events_query"); if (!Convert.ToBoolean(result["success"])) { remoteClient.SendAgentAlertMessage( result["errorMessage"].ToString(), false); return; } ArrayList dataArray = (ArrayList)result["data"]; int count = dataArray.Count; if (count > 100) count = 101; DirEventsReplyData[] data = new DirEventsReplyData[count]; int i = 0; foreach (Object o in dataArray) { Hashtable d = (Hashtable)o; data[i] = new DirEventsReplyData(); data[i].ownerID = new UUID(d["owner_id"].ToString()); data[i].name = d["name"].ToString(); data[i].eventID = Convert.ToUInt32(d["event_id"]); data[i].date = d["date"].ToString(); data[i].unixTime = Convert.ToUInt32(d["unix_time"]); data[i].eventFlags = Convert.ToUInt32(d["event_flags"]); i++; if (i >= count) break; } remoteClient.SendDirEventsReply(queryID, data); }
public List<DirEventsReplyData> FindAllEventsInRegion(string regionName, int maturity) { object remoteValue = DoRemote(regionName, maturity); if (remoteValue != null || m_doRemoteOnly) return (List<DirEventsReplyData>)remoteValue; List<DirEventsReplyData> Data = new List<DirEventsReplyData>(); IRegionData regiondata = DataManager.DataManager.RequestPlugin<IRegionData>(); if (regiondata != null) { List<GridRegion> regions = regiondata.Get(regionName, null, null, null); if (regions.Count >= 1) { QueryFilter filter = new QueryFilter(); filter.andFilters["region"] = regions[0].RegionID.ToString(); filter.andFilters["maturity"] = maturity; List<string> retVal = GD.Query(new[]{ "EID", "creator", "date", "maturity", "flags", "name" }, "asevents", filter, null, null, null); if (retVal.Count > 0) { for (int i = 0; i < retVal.Count; i += 6) { DirEventsReplyData replyData = new DirEventsReplyData { eventID = Convert.ToUInt32(retVal[i]), ownerID = new UUID(retVal[i + 1]), name = retVal[i + 5], }; DateTime date = DateTime.Parse(retVal[i + 2]); replyData.date = date.ToString(new DateTimeFormatInfo()); replyData.unixTime = (uint)Util.ToUnixTime(date); replyData.eventFlags = Convert.ToUInt32(retVal[i + 4]); Data.Add(replyData); } } } } return Data; }
/// <summary> /// Retrives all events in the given region by their maturity level /// </summary> /// <param name = "regionName"></param> /// <param name = "maturity">Uses DirectoryManager.EventFlags to determine the maturity requested</param> /// <returns></returns> public DirEventsReplyData[] FindAllEventsInRegion(string regionName, int maturity) { List<DirEventsReplyData> Data = new List<DirEventsReplyData>(); IRegionData regiondata = Aurora.DataManager.DataManager.RequestPlugin<IRegionData>(); if (regiondata != null) { List<GridRegion> regions = regiondata.Get(regionName, UUID.Zero); if (regions.Count >= 1) { Dictionary<string, object> whereClause = new Dictionary<string, object>(); whereClause["region"] = regions[0].RegionID.ToString(); whereClause["maturity"] = maturity; List<string> retVal = GD.Query(new string[]{ "EID", "creator", "date", "maturity", "flags", "name" }, "asevents", new QueryFilter { andFilters = whereClause }, null, null, null); if (retVal.Count > 0) { DirEventsReplyData replyData; for (int i = 0; i < retVal.Count; i += 6) { replyData = new DirEventsReplyData { eventID = Convert.ToUInt32(retVal[i]), ownerID = new UUID(retVal[i + 1]), name = retVal[i + 5], }; DateTime date = DateTime.Parse(retVal[i + 2].ToString()); replyData.date = date.ToString(new DateTimeFormatInfo()); replyData.unixTime = (uint)Util.ToUnixTime(date); replyData.eventFlags = Convert.ToUInt32(retVal[i + 4]); Data.Add(replyData); } } } } return Data.ToArray(); }