[3.3] [DEV] Sudoku

In diesem Forum können Extension-Autoren ihre Extensions vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1076
Registriert: 13.01.2020 21:09
Kontaktdaten:

[3.3] [DEV] Sudoku

Beitrag von Mike-on-Tour »

Extension Name: Sudoku

Kompatibel mitphpBB3.3.x

Autor: Mike-on-Tour
Beschreibung: Da die Nachfrage nach einer Erweiterung bestand, die Sudoku für phpBB bereitstellt, habe ich eine solche programmiert. Der funktionelle Umfang (Klassische, Samurai und Ninja-Rätsel sowie Rangliste und Ruhmeshalle) und das Layout orientieren sich an der ehemaligen Sudoku Mod.

Was hat sich geändert oder ist neu?
  • Die Erweiterung ist von Grund auf neu programmiert.
  • Im Frontend finden sich bis zu fünf Tabs, nämlich je ein Tab für die drei Rätsel-Typen und je einer für Rangliste und Ruhmeshalle
  • Rangliste und Ruhmeshalle können durch den Admin unabhängig voneinander aktiviert oder deaktiviert werden, voreingestellter Standard ist "aktiviert"
  • Über die Rechtevergabe von phpBB kann der Admin steuern, wer Sudoku sieht, bei Installation ist dieses Recht standardmäßig vergeben an alle Standard-Benutzerrollen von phpBB
  • Im ACP lassen sich alle Programm- und Spieleinstellungen (z.B. Punktevergabe) setzen
  • Über einen zweiten ACP-Tab werden die installierten Spielepakete angezeigt, ebenso ist dort das Importieren und Löschen von Spielepaketen möglich
  • Die Spieleingaben werden in einer DB-Tabelle gespeichert, dadurch ist ein jederzeitiges Verlassen eines Rätsels möglich, bei erneutem Start der Erweiterung kann das Rätsel an diesem Stand fortgesetzt werden
  • In jedem Rätsel ist zu Beginn die Wahl eines leichteren Levels möglich, der Spieler erhält dadurch zusätzliche vorgegebene Ziffern
  • In jedem Rätsel ist der Kauf weiterer Ziffern (Punkteabzug), das Zurücksetzen auf den Anfangszustand sowie das Einblenden eines Helfers (wenn durch Admin aktiviert) möglich
  • Spielepakete mit insgesamt mehreren tausend Rätseln stehen zum Download bereit
  • Und natürlich ist Sudoku mit lukewcs/togglectrl kompatibel
Voraussetzungen: phpBB 3.3.x PHP >= 7.4, <8.4
Download: https://www.mike-on-tour.com/viewtopic.php?p=366#p366
Sprachen: de (formell und informell), en
Styles: prosilver, css-Datei für Dark Vision von Kirk
Github repository: folgt
Bildschirm-Fotos:
Classic-Sudoku-Tab: [ externes Bild ]
Samurai-Sudoku-Tab: [ externes Bild ]
Ninja-Sudoku-Tab: [ externes Bild ]
ACP Einstellungen: [ externes Bild ]
ACP Spielepakete: [ externes Bild ]
Benutzeravatar
Scanialady
Supporter
Supporter
Beiträge: 1735
Registriert: 23.02.2009 16:29
Wohnort: Velbert (NRW)
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Scanialady »

Vielen Dank dafür, Mike
Die Bosheit trinkt die Hälfte ihres eigenen Giftes (Lucius Annaeus Seneca)
-
Wenn von etwas kein Backup existiert, dann ist es nicht wichtig.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17401
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Dr.Death »

Hi,

super !


Hab ich gerade mal in meinem Testboard mit Postgres Datenbank aktiviert.

Im ACP --> Erweiterungen --> Sudoku --> Klicke auf "Einstellungen" :

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ postgres ]

ERROR: column "u.user_id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT u.user_id, u.username, ug.group_id FROM phpbb_users u... ^ []

SQL

SELECT u.user_id, u.username, ug.group_id FROM phpbb_users u CROSS JOIN phpbb_user_group ug CROSS JOIN phpbb_groups g WHERE u.user_id = ug.user_id AND g.group_id = ug.group_id AND (UPPER(g.group_name) LIKE 'ADMINISTRATORS' OR UPPER(g.group_name) LIKE '%MODERATOR%') GROUP BY username

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 1031
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/postgres.php
LINE: 193
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 353
CALL: phpbb\db\driver\postgres->sql_query()

FILE: [ROOT]/ext/mot/sudoku/controller/mot_sudoku_acp.php
LINE: 190
CALL: phpbb\db\driver\factory->sql_query()

FILE: [ROOT]/ext/mot/sudoku/acp/mot_sudoku_acp_module.php
LINE: 43
CALL: mot\sudoku\controller\mot_sudoku_acp->settings()

FILE: [ROOT]/includes/functions_module.php
LINE: 676
CALL: mot\sudoku\acp\mot_sudoku_acp_module->main()

FILE: [ROOT]/adm/index.php
LINE: 81
CALL: p_master->load_active()
Ich glaube, Postgres mag im "GROUP BY" alle angegebenen Selects:
https://stackoverflow.com/questions/607 ... unction-in

Code: Alles auswählen

		//Build a list of users within admin and mod groups
		$sql_ary = [
			'SELECT'    => 'u.user_id, u.username, ug.group_id',
			'FROM'      => [USERS_TABLE  => 'u', USER_GROUP_TABLE  => 'ug', GROUPS_TABLE  => 'g',],
			'WHERE'     => "u.user_id = ug.user_id
					AND g.group_id = ug.group_id
					AND (UPPER(g.group_name) LIKE 'ADMINISTRATORS' OR UPPER(g.group_name) LIKE '%MODERATOR%')",
			'GROUP_BY'  => 'u.username, u.user_id, ug.group_id',
		];

Das sind noch mehrere Probleme, wenn man eine Postgres DB benutzt.... ggf. darauf hinweisen.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1076
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Mike-on-Tour »

Da dachte ich, wenn ich die dbal-Funktionen von phpBB nutze, ist alles in Ordnung, und dann das.

Danke für den Hinweis, das muss ich mir mal in Ruhe ansehen und dann prüfen, wo das ggf. noch von Bedeutung sein kann.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2129
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von LukeWCS »

Mike-on-Tour hat geschrieben: 14.03.2024 16:47 Da dachte ich, wenn ich die dbal-Funktionen von phpBB nutze, ist alles in Ordnung
Genau davon bin ich bisher auch ausgegangen, das Ding heisst ja nicht umsonst "Database Abstraction Layer". In dem Fall hätte ich erwartet, dass die DBAL bei PostgreSQL GROUP BY automatisch auf SELECT erweitert. Wozu haben wir die DBAL, wenn man sich dann trotzdem mit den ganzen speziellen Wenns und Abers der einzelnen DB Engines herumschlagen muss? :evil:

Vor allem da PostgreSQL ja wohl eher nicht so oft bei phpBB Installationen anzutreffen sein dürfte. Meine Aussage basiert auf einem Beitrag von Nils, der ist allerdings von 2011 und somit nicht mehr wirklich taufrisch. ^^

https://www.phpbb.com/community/viewtop ... #p13006031

Mike, bei TC eingetragen.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1076
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Mike-on-Tour »

LukeWCS hat geschrieben: 14.03.2024 17:09 In dem Fall hätte ich erwartet, dass die DBAL bei PostgreSQL GROUP BY automatisch auf SELECT erweitert. Wozu haben wir die DBAL, wenn man sich dann trotzdem mit den ganzen speziellen Wenns und Abers der einzelnen DB Engines herumschlagen muss?
Das war auch mein erster Gedanke. Und nachdem ich die "Verbesserung" von Doc ausprobiert habe, musste ich feststellen, dass damit das Ergebnis unter MySQL nicht mehr passt, da tauchen Nutzer dann wegen u.user_id mehrfach auf, wenn sie in mehreren der abgefragten Gruppen Mitglied sind. Da scheint IMHO etwas mit der Postgres-Umsetzung in den dbal-Funktionen nicht zu stimmen.
LukeWCS hat geschrieben: 14.03.2024 17:09 Mike, bei TC eingetragen.
Danke :grin:
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17401
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Dr.Death »

Ja, die Postgres Syntax unterscheidet sich leicht von unserer gewohnten My/MariaSQL Syntax.
Das kann das unterliegende DBAL nicht ausgleichen.

https://github.com/DrDeath/phpbb-ext-f1 ... 040514826e
https://github.com/DrDeath/phpbb-ext-f1 ... 1affdeed2c
https://github.com/DrDeath/phpbb-ext-f1 ... 119af2c982
https://github.com/DrDeath/phpbb-ext-f1 ... 0646b4d836


Aber es in der Regel nutzt kaum jemand eine Postgres DB im Foren Sektor… nur jemand der gerade von Oracle auf Postgres migriert und daher viele Test Postgres DB zur Verfügung hat 😎😇
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1076
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Mike-on-Tour »

Habe gerade ver 0.7.1 online gestellt, darin sollte das Problem behoben sein, weil ich erstens unterscheide, welcher DB-Layer benutzt wird und die Abfrage bei PostgreSQL entsprechend angepasst wurde und zweitens dieser Teil des Codes nur noch abgearbeitet wird, wenn tatsächlich "Ultimate Points" installiert ist.
Benutzeravatar
Dref
Mitglied
Beiträge: 106
Registriert: 13.01.2022 15:36

Re: [3.3] [DEV] Sudoku

Beitrag von Dref »

Danke für das Spiel.
Im Berechtigungssystem habe ich das Kästchen „Kann Sudoku spielen“ für die eingeladene Gruppe aktiviert, nur dass man Mitglied des Forums sein muss, um das Spiel spielen zu können.
Ist das gewollt?
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1076
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] [DEV] Sudoku

Beitrag von Mike-on-Tour »

Du könntest das natürlich für Gäste freischalten, aber das kann eigentlich nur im Chaos enden, weil z.B. die Spielstände nutzerbezogen, also über die user_id gespeichert werden. Da alle Gäste die user_id = 1 haben, könnten z.B. zwei Gäste zeitgleich dasselbe Rätsel bearbeiten, und dann würden sich die Einträge des einen mit denen des anderen überschneiden, damit würden beide Spiele crashen.
Also wird das in der Praxis nicht funktionieren.

Also ja, das ist so gewollt.
Antworten

Zurück zu „Extensions in Entwicklung“