public List<DirClassifiedReplyData> FindClassifieds(string queryText, string category, uint queryFlags, int StartQuery, UUID scopeID) { object remoteValue = DoRemote(queryText, category, queryFlags, StartQuery, scopeID); if (remoteValue != null || m_doRemoteOnly) return (List<DirClassifiedReplyData>) remoteValue; QueryFilter filter = new QueryFilter(); filter.andLikeFilters["Name"] = "%" + queryText + "%"; if (int.Parse(category) != (int) DirectoryManager.ClassifiedCategories.Any) //Check the category filter.andFilters["Category"] = category; if (scopeID != UUID.Zero) filter.andFilters["ScopeID"] = scopeID; List<string> retVal = GD.Query(new[] {"*"}, "userclassifieds", filter, null, (uint) StartQuery, 50); if (retVal.Count == 0) return new List<DirClassifiedReplyData>(); List<DirClassifiedReplyData> Data = new List<DirClassifiedReplyData>(); for (int i = 0; i < retVal.Count; i += 9) { //Pull the classified out of OSD Classified classified = new Classified(); classified.FromOSD((OSDMap) OSDParser.DeserializeJson(retVal[i + 5])); DirClassifiedReplyData replyData = new DirClassifiedReplyData { classifiedFlags = classified.ClassifiedFlags, classifiedID = classified.ClassifiedUUID, creationDate = classified.CreationDate, expirationDate = classified.ExpirationDate, price = classified.PriceForListing, name = classified.Name }; //Check maturity levels if ((replyData.classifiedFlags & (uint) DirectoryManager.ClassifiedFlags.Mature) != (uint) DirectoryManager.ClassifiedFlags.Mature) { if ((queryFlags & (uint) DirectoryManager.ClassifiedQueryFlags.Mature) == (uint) DirectoryManager.ClassifiedQueryFlags.Mature) Data.Add(replyData); } else //Its Mature, add all Data.Add(replyData); } return Data; }
public List<DirClassifiedReplyData> FindClassifieds(string queryText, string category, uint queryFlags, int StartQuery, UUID scopeID) { if (m_doRemoteOnly) { object remoteValue = DoRemote (queryText, category, queryFlags, StartQuery, scopeID); return remoteValue != null ? (List<DirClassifiedReplyData>)remoteValue : new List<DirClassifiedReplyData> (); } QueryFilter filter = new QueryFilter(); filter.andLikeFilters["Name"] = "%" + queryText + "%"; if (int.Parse(category) != (int) DirectoryManager.ClassifiedCategories.Any) //Check the category filter.andFilters["Category"] = category; if (scopeID != UUID.Zero) filter.andFilters["ScopeID"] = scopeID; List<string> retVal = GD.Query(new[] {"*"}, m_userClassifiedsTable, filter, null, (uint) StartQuery, 50); if (retVal.Count == 0) return new List<DirClassifiedReplyData>(); List<DirClassifiedReplyData> Data = new List<DirClassifiedReplyData>(); for (int i = 0; i < retVal.Count; i += 9) { //Pull the classified out of OSD Classified classified = new Classified(); classified.FromOSD((OSDMap) OSDParser.DeserializeJson(retVal[i + 6])); DirClassifiedReplyData replyData = new DirClassifiedReplyData { classifiedFlags = classified.ClassifiedFlags, classifiedID = classified.ClassifiedUUID, creationDate = classified.CreationDate, expirationDate = classified.ExpirationDate, price = classified.PriceForListing, name = classified.Name }; //Check maturity levels var maturityquery = queryFlags & 0x4C; // strip everything except what we want if (maturityquery == (uint)DirectoryManager.ClassifiedQueryFlags.All) Data.Add (replyData); else { //var classifiedMaturity = replyData.classifiedFlags > 0 // ? replyData.classifiedFlags // : (byte)DirectoryManager.ClassifiedQueryFlags.PG; if ((maturityquery & replyData.classifiedFlags) != 0) // required rating PG, Mature (Adult) Data.Add (replyData); } } return Data; }