コード例 #1
0
ファイル: MyNpcCharacter.cs プロジェクト: AlphaStaxLLC/taiga
 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
 {
 }
コード例 #2
0
 public void SendDirClassifiedReply(OpenMetaverse.UUID queryID, DirClassifiedReplyData[] data)
 {
 }
コード例 #3
0
ファイル: VWHClientView.cs プロジェクト: intari/OpenSimMirror
 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
 {
     throw new System.NotImplementedException();
 }
コード例 #4
0
        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"]);

                if (++i >= count)
                    break;
            }

            remoteClient.SendDirClassifiedReply(queryID, data);
        }
コード例 #5
0
        public void DirClassifiedQuery(IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, uint category,
                int queryStart)
        {
            // This is pretty straightforward here, get the input, set up the query, run it through, send back to viewer.
            string query = String.Empty;
            string sqlAddTerms = String.Empty;
            string userText = queryText.Trim(); // newer viewers sometimes append a space

            string searchStart = Convert.ToString(queryStart);
            int count = MAX_RESULTS + 1;    // +1 so that the viewer knows to enable the NEXT button (it seems)
            string searchEnd = Convert.ToString(queryStart + count);
            int i = 0;

            // There is a slight issue with the parcel data not coming from land first so the
            //  parcel information is never displayed correctly within in the classified ad.

            //stop blank queries here before they explode mysql
            if (String.IsNullOrEmpty(userText))
            {
                remoteClient.SendDirClassifiedReply(queryID, new DirClassifiedReplyData[0]);
                return;
            }

            if (queryFlags == 0)
            {
                sqlAddTerms = " AND (classifiedflags='2' OR classifiedflags='34') ";
            }

            if (category != 0)
            {
                sqlAddTerms = " AND category=?category ";
            }

             Dictionary<string, object> parms = new Dictionary<string, object>();
             parms.Add("?matureFlag", queryFlags);
             parms.Add("?category", category);
             parms.Add("?userText", userText);

            // Ok a test cause the query pulls fine direct in MySQL, but not from here, so WTF?!
             //query = "select classifieduuid, name, classifiedflags, creationdate, expirationdate, priceforlisting from classifieds " +
             //        "where name LIKE '" + userText + "' OR description LIKE '" + userText + "' " + sqlAddTerms;

            query = "select classifieduuid, name, classifiedflags, creationdate, expirationdate, priceforlisting from classifieds " +
                    "where (description REGEXP ?userText OR name REGEXP ?userText) " +sqlAddTerms + " order by priceforlisting DESC limit " + searchStart + ", " + searchEnd + String.Empty;

            using (ISimpleDB db = _connFactory.GetConnection())
            {
                List<Dictionary<string, string>> results = db.QueryWithResults(query, parms);
                count = results.Count;
                DirClassifiedReplyData[] data = new DirClassifiedReplyData[count];
                foreach (Dictionary<string, string> row in results)
                {
                    data[i] = new DirClassifiedReplyData();
                    data[i].classifiedID = new UUID(row["classifieduuid"].ToString());
                    data[i].name = row["name"].ToString();
                    data[i].classifiedFlags = Convert.ToByte(row["classifiedflags"]);
                    data[i].creationDate = Convert.ToUInt32(row["creationdate"]);
                    data[i].expirationDate = Convert.ToUInt32(row["expirationdate"]);
                    data[i].price = Convert.ToInt32(row["priceforlisting"]);
                    i++;
                }
                remoteClient.SendDirClassifiedReply(queryID, data);
            }
        }