From 3b9c21b8ae0a846dc08e3d8a80f85d9d1718ca57 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sat, 13 Oct 2018 23:07:18 +0200 Subject: [PATCH] Block entering coords right after shuffle --- database/functions/shuffletick.sql | 3 +++ database/functions/users.sql | 10 ++++++++++ database/ndawn.sql | 2 ++ 3 files changed, 15 insertions(+) create mode 100644 database/functions/shuffletick.sql diff --git a/database/functions/shuffletick.sql b/database/functions/shuffletick.sql new file mode 100644 index 0000000..cb7e366 --- /dev/null +++ b/database/functions/shuffletick.sql @@ -0,0 +1,3 @@ +CREATE OR REPLACE FUNCTION isshuffletick() RETURNS boolean +AS $$SELECT (SELECT value::integer FROM misc WHERE id = 'TICK') = (SELECT value::integer FROM misc WHERE id = 'SHUFFLETICK')$$ +LANGUAGE sql STABLE; diff --git a/database/functions/users.sql b/database/functions/users.sql index 2460cc1..0743ed3 100644 --- a/database/functions/users.sql +++ b/database/functions/users.sql @@ -26,3 +26,13 @@ BEGIN RETURN NEW; END; $_X$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION update_user_planet_check() RETURNS trigger AS $_X$ +BEGIN + IF OLD.pid IS NULL AND NEW.pid IS NOT NULL AND isshuffletick() THEN + NEW.pid = NULL; + END IF; + + RETURN NEW; +END; +$_X$ LANGUAGE plpgsql; diff --git a/database/ndawn.sql b/database/ndawn.sql index 177a3f9..54ede3a 100644 --- a/database/ndawn.sql +++ b/database/ndawn.sql @@ -3469,6 +3469,8 @@ CREATE TRIGGER update_forum_thread_posts AFTER INSERT OR DELETE OR UPDATE ON for CREATE TRIGGER update_planet AFTER UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE update_user_planet(); +CREATE TRIGGER update_user_planet_check BEFORE UPDATE ON users FOR EACH ROW WHEN (NEW.pid IS NOT NULL AND OLD.pid IS NULL) EXECUTE PROCEDURE update_user_planet_check(); + -- -- Name: update_wiki_page; Type: TRIGGER; Schema: public; Owner: ndawn -- 2.39.2