private object Classified_Billing(string functionName, object parameters) { try { BillingClassified bc = new BillingClassified(); bc.FromOSD((OSDMap)OSDParser.DeserializeJson(parameters.ToString())); IDirectoryServiceConnector DSC = DataManager.RequestPlugin<IDirectoryServiceConnector>(); Classified c = DSC.GetClassifiedByID(bc.ClassifiedID); if (c != null) { if (m_money != null) { if (!m_money.Charge(c.CreatorUUID, c.PriceForListing, "Classified Charge -" + c.Name)) { bc.Tries += 1; if (m_TriesBeforeRemovingClassified >= bc.Tries) { c.ClassifiedFlags = (byte) (c.ClassifiedFlags & ~((int) DirectoryManager.ClassifiedFlags.Enabled)); IProfileConnector profile = DataManager.RequestPlugin<IProfileConnector>("IProfileConnector"); profile.AddClassified(c); m_scheduler.Remove(bc.ClassifiedID.ToString()); if (m_NotifyOnClassifiedRemoval) { NotifyClass(c, bc, "Removal"); } } else { SchedulerItem si = m_scheduler.Get(c.ClassifiedUUID.ToString()); si.FireParams = bc.ToOSD(); m_scheduler.Save(si); if (m_NotifyOnClassifiedFailure) { NotifyClass(c, bc, "Failure"); } } } else if (m_NotifyOnClassifiedSuccess) { NotifyClass(c, bc, "Success"); } } else MainConsole.Instance.Info("[ClassifiedsCollection] Could not find money module."); } else MainConsole.Instance.Info("[ClassifiedsCollection] Could not find classified, might have been deleted"); } catch (Exception ex) { MainConsole.Instance.Error("[ClassifiedsCollection] Error charging for classifieds", ex); } return ""; }