public void DirClassifiedQuery(IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, uint category, int queryStart) { Hashtable ReqHash = new Hashtable(); ReqHash["text"] = queryText; ReqHash["flags"] = queryFlags.ToString(); ReqHash["category"] = category.ToString(); ReqHash["query_start"] = queryStart.ToString(); Hashtable result = GenericXMLRPCRequest(ReqHash, "dir_classified_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; DirClassifiedReplyData[] data = new DirClassifiedReplyData[count]; int i = 0; foreach (Object o in dataArray) { Hashtable d = (Hashtable)o; data[i] = new DirClassifiedReplyData(); data[i].classifiedID = new UUID(d["classifiedid"].ToString()); data[i].name = d["name"].ToString(); data[i].classifiedFlags = Convert.ToByte(d["classifiedflags"]); data[i].creationDate = Convert.ToUInt32(d["creation_date"]); data[i].expirationDate = Convert.ToUInt32(d["expiration_date"]); data[i].price = Convert.ToInt32(d["priceforlisting"]); i++; if (i >= count) break; } remoteClient.SendDirClassifiedReply(queryID, data); }
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; }
/// <summary> /// Searches for classifieds /// </summary> /// <param name = "queryText"></param> /// <param name = "category"></param> /// <param name = "queryFlags"></param> /// <param name = "StartQuery"></param> /// <returns></returns> public DirClassifiedReplyData[] FindClassifieds(string queryText, string category, uint queryFlags, int StartQuery) { QueryFilter filter = new QueryFilter(); filter.andLikeFilters["Name"] = "%" + queryText + "%"; if (int.Parse(category) != (int)DirectoryManager.ClassifiedCategories.Any) //Check the category { filter.andFilters["Category"] = category; } List<string> retVal = GD.Query(new string[1] { "*" }, "userclassifieds", filter, null, (uint)StartQuery, 50); if (retVal.Count == 0) { return new DirClassifiedReplyData[0] { }; } List<DirClassifiedReplyData> Data = new List<DirClassifiedReplyData>(); DirClassifiedReplyData replyData; for (int i = 0; i < retVal.Count; i += 6) { //Pull the classified out of OSD Classified classified = new Classified(); classified.FromOSD((OSDMap) OSDParser.DeserializeJson(retVal[i + 5])); 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 PG, add all Data.Add(replyData); } } return Data.ToArray(); }