public static bool UnsubscribeFromItem(Core core, ItemKey itemKey) { if (core == null) { throw new NullCoreException(); } core.Db.BeginTransaction(); SelectQuery query = Subscription.GetSelectQueryStub(core, typeof(Subscription)); query.AddCondition("subscription_item_id", itemKey.Id); query.AddCondition("subscription_item_type_id", itemKey.TypeId); query.AddCondition("user_id", core.LoggedInMemberId); DataTable subscriptionDataTable = core.Db.Query(query); if (subscriptionDataTable.Rows.Count == 1) { DeleteQuery dQuery = new DeleteQuery(typeof(Subscription)); dQuery.AddCondition("subscription_item_id", itemKey.Id); dQuery.AddCondition("subscription_item_type_id", itemKey.TypeId); dQuery.AddCondition("user_id", core.LoggedInMemberId); core.Db.Query(dQuery); ItemInfo info = new ItemInfo(core, itemKey); info.DecrementSubscribers(); UpdateQuery uQuery = new UpdateQuery(typeof(UserInfo)); uQuery.AddField("user_subscriptions", new QueryOperation("user_subscriptions", QueryOperations.Subtraction, 1)); uQuery.AddCondition("user_id", core.LoggedInMemberId); core.Db.Query(uQuery); return true; } return false; }