summaryrefslogtreecommitdiff
path: root/dev-php/awl
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-04-10 00:31:33 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-04-10 00:31:33 +0100
commitabb30563c27d2f713333a02c5d124acc8e301d12 (patch)
tree584169f99cd4c93cecaaf57768c589fef99d78b8 /dev-php/awl
parentfb7c221776ce0bda5eb40ef32cb74daa98aed0d7 (diff)
gentoo auto-resync : 10:04:2024 - 00:31:32
Diffstat (limited to 'dev-php/awl')
-rw-r--r--dev-php/awl/Manifest7
-rw-r--r--dev-php/awl/awl-0.62.ebuild41
-rw-r--r--dev-php/awl/awl-0.64.ebuild (renamed from dev-php/awl/awl-0.61.ebuild)15
-rw-r--r--dev-php/awl/files/awl-0.64-php8.x-compat.patch463
4 files changed, 471 insertions, 55 deletions
diff --git a/dev-php/awl/Manifest b/dev-php/awl/Manifest
index b8fc391dc849..f16941dffec2 100644
--- a/dev-php/awl/Manifest
+++ b/dev-php/awl/Manifest
@@ -1,7 +1,6 @@
-DIST awl-0.61.tar.xz 124340 BLAKE2B af5d9c063280c93deb55929acf4826b6ba003676a15fcda48019a2a7788d8913d20a05c4aae98f2345d931b8f593bd32622a033fe421b55d0c687b10c7e1be05 SHA512 3492512ec04e523a30562d49aac1be617a2cee80fa363b0fbf13b25b44818a4c85af018193f79a6442419b1f7022cd7ec417e3c34641eb8096750441dcbd22bc
-DIST awl-0.62.tar.xz 126492 BLAKE2B f7077106c9bc527371aef9edbb34d5e9ff251c2439059449dd8c93b548f16b79b06875e71d36faafa2a206c74391ffef978254b5ec131761550be2e0d6a7d6c1 SHA512 b6676c4bf3998ea0448aa9dba31a02fd950a07639cafb3f46482bd38235d39edeb1ab481d657d200332828777ca27df17ecf354d5721347481c0c24f04451c6d
+AUX awl-0.64-php8.x-compat.patch 14819 BLAKE2B 8a4ac599aaf3ec40b93c79b890b730d19e95697b112cb462861dfaccf34c774e678242c2bd7793e77b064eaaf9d9367728e1853e4ec63dac94bab527324032f2 SHA512 2b19f73db53c0e337f07bf820d37f49ece71e10fb92ffd87128456370a3cb030b4d984507cfe839b181e034b434ddd2fb9194f54b0a4b13e20e3f68ccbad30ea
DIST awl-0.63.tar.xz 126608 BLAKE2B feb785d6a97f1cb477cd6609495e44481563c575a5b4818d70f191df153f43360685aa86063ec59649ad4d0a0e1ef2bc9e9734a668f30bb46b7f8013c8a10369 SHA512 bf21303a5676e32874594bfe463c20be2653fc29c9aaa7586d31704c4504f5d9e6ad1e2ba103515af61ffa7d43776bfb45fea9b4752efb6441f888908f42452b
-EBUILD awl-0.61.ebuild 690 BLAKE2B 4d05a6e4cd627f8a5b197990e5619502a5102e391c81c171c57efd7eeedde4a4396b4a051449845e4e3c0e4b55cd8219d7cf8556f81de895d55341f2b5ac2d21 SHA512 7885a6ea48607e8afb12ae1f17a6ed58d225c9bc9225f1a91c0d26c12f97cbfbba01e2381af3aeecb9ab720170e511807ffab925a96822d62dcdbe6349291342
-EBUILD awl-0.62.ebuild 841 BLAKE2B 422e252e7de705e3ead05d211af046b1d83207f9a2f495cb5909f8f2bda105e68d7a0fadb3f5873398b5072b19c4b44e66616b57524bdba5c57e189f00fbc0e1 SHA512 db7370871f653ffa24b9a34fccab78bf2d9739b5edc710968f59b4463a07fb41415eb10b37cf1eee3037694685c0e26e218f8a4d8defe15dfae13767e9321e9a
+DIST awl-0.64.tar.xz 127412 BLAKE2B f045c017a07ebdef629e3a373cf540f866d935fed493382c27c1413fd66f1d103ee715b48fa3111e13c06cd34e7a3fc5c9a845b80fc93ed8971a55fd8a011dcd SHA512 3738e422b78b1904eb3e5f6b47c5a3e9fc5c2bfef644c84285da0ff242c560ec12651c8231c8f2aa324108ef2450af955b938f44ce3d54f280da6936cfc9889e
EBUILD awl-0.63.ebuild 848 BLAKE2B 2228e0a3051919a2bcc492ef2e7a0fb661401c8f24a1fdc023b6f07ad0e44cf426bb69883fa45b44a7343fa37c108e16086c803e6bd6b1a97ac5ecf65a4c84b0 SHA512 9e05612338374387ac277b0d849809b526b1db31000765609c6f36ba73f20313431ac3f969e9548c7e7c7d9e27f247bc82a3d0c87d836f2dd77269471ac7540a
+EBUILD awl-0.64.ebuild 577 BLAKE2B ce76855ef066c056d638a1293902f61818e8a867ec7686521286b609adb21dba220295fd044ecd4b41d46dd07d9265a1868399599a1ca140c42711af77b8bfaa SHA512 ecae45ffb042bb45b29f9f780f4be5f14ab114266037330348d574cf27171fcea67c8b666ddff642647fb7faf9a04cecf6ae5e67f1059b6929cfef1fc926c75a
MISC metadata.xml 726 BLAKE2B 4c8dcec5598619bfe9091ee57fc3fbe92daf968f89c053a4b65b44622b19be79b36cbfe6ddad902df708b824874f58ef4c1a4a02ecaae65e3e76097bc398e4bc SHA512 d7bb078e721b2b30d064a866289c65aaf25f08ca4d691c19110f4149950b7870e5cdd3d771deef7325a8f7a37f1eb16cbcaa267c7dd1b0ac761d4985d1ad0fd2
diff --git a/dev-php/awl/awl-0.62.ebuild b/dev-php/awl/awl-0.62.ebuild
deleted file mode 100644
index 4e252e4d02c1..000000000000
--- a/dev-php/awl/awl-0.62.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DESCRIPTION="Andrew McMillan's Web Libraries"
-HOMEPAGE="https://gitlab.com/davical-project/awl"
-SRC_URI="https://www.davical.org/downloads/${PN}_${PV}.orig.tar.xz -> ${P}.tar.xz"
-
-USE_PHP="php8.0"
-
-LICENSE="GPL-2 GPL-2+ GPL-3+ LGPL-2+ LGPL-3+"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="test? ( dev-php/phpunit )"
-RDEPEND="dev-lang/php:*[pdo,xml]"
-
-S="${WORKDIR}"
-
-src_compile() {
- :
-}
-
-src_test() {
- local slot
- for slot in ${USE_PHP//-/.} ; do
- if [[ -x /usr/bin/${slot} ]] ; then
- ${slot} "${EPREFIX}"/usr/bin/phpunit --verbose --do-not-cache-result tests/ \
- || die "test suite failed"
- fi
- done
-}
-
-src_install() {
- einstalldocs
- insinto /usr/share/php/${PN}
- doins -r dba inc
-}
diff --git a/dev-php/awl/awl-0.61.ebuild b/dev-php/awl/awl-0.64.ebuild
index 4e25a5083da7..731942cc9202 100644
--- a/dev-php/awl/awl-0.61.ebuild
+++ b/dev-php/awl/awl-0.64.ebuild
@@ -1,7 +1,7 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
DESCRIPTION="Andrew McMillan's Web Libraries"
HOMEPAGE="https://gitlab.com/davical-project/awl"
@@ -10,22 +10,17 @@ SRC_URI="https://www.davical.org/downloads/${PN}_${PV}.orig.tar.xz -> ${P}.tar.x
LICENSE="GPL-2 GPL-2+ GPL-3+ LGPL-2+ LGPL-3+"
SLOT="0"
KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-BDEPEND="test? ( dev-php/phpunit )"
-RDEPEND="dev-lang/php:*[pdo,postgres,xml]"
+RDEPEND="dev-lang/php:*[pdo,xml]"
S="${WORKDIR}"
+PATCHES=( "${FILESDIR}/${P}-php8.x-compat.patch" )
+
src_compile() {
:
}
-src_test() {
- phpunit --do-not-cache-result tests/ || die "test suite failed"
-}
-
src_install() {
einstalldocs
insinto /usr/share/php/${PN}
diff --git a/dev-php/awl/files/awl-0.64-php8.x-compat.patch b/dev-php/awl/files/awl-0.64-php8.x-compat.patch
new file mode 100644
index 000000000000..dd64c7b0bf14
--- /dev/null
+++ b/dev-php/awl/files/awl-0.64-php8.x-compat.patch
@@ -0,0 +1,463 @@
+From d3759db21195b1e49e171f83f9685bd3b650569a Mon Sep 17 00:00:00 2001
+From: Florian Schlichting <fsfs@debian.org>
+Date: Thu, 23 Mar 2023 22:19:06 +0100
+Subject: [PATCH 01/16] use array_merge instead of "+" to concatenate arrays
+
+I noticed this when looking for other occurrences of davical#288
+
+It likely has no consequences as we're never calling GetElements() with
+a second argument...
+---
+ inc/XMLElement.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/inc/XMLElement.php b/inc/XMLElement.php
+index 08d6cbd..d36bf52 100644
+--- a/inc/XMLElement.php
++++ b/inc/XMLElement.php
+@@ -157,7 +157,7 @@ class XMLElement {
+ $elements[] = $v;
+ }
+ if ( $recursive ) {
+- $elements = $elements + $v->GetElements($tag,true);
++ $elements = array_merge( $elements, $v->GetElements($tag,true) );
+ }
+ }
+ }
+--
+2.43.2
+
+From ff437d2ad1f3e947012a4deedaf79d4f39476fb7 Mon Sep 17 00:00:00 2001
+From: Matthew Hunt <matt@catalyst.net.nz>
+Date: Fri, 9 Jun 2023 12:50:25 +1200
+Subject: [PATCH 02/16] Fix for some deprecations and warnings in PHP8.1
+
+---
+ inc/AuthPlugins.php | 2 +-
+ inc/AwlDBDialect.php | 10 ++++++----
+ inc/AwlQuery.php | 2 +-
+ inc/PgQuery.php | 12 ++++++------
+ 4 files changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/inc/AuthPlugins.php b/inc/AuthPlugins.php
+index 1b05487..d9fa3dd 100644
+--- a/inc/AuthPlugins.php
++++ b/inc/AuthPlugins.php
+@@ -37,7 +37,7 @@ require_once('DataUpdate.php');
+ function auth_other_awl( $username, $password ) {
+ global $c;
+
+- $authconn = pg_Connect($c->authenticate_hook['config']['connection']);
++ $authconn = pg_connect($c->authenticate_hook['config']['connection']);
+ if ( ! $authconn ) {
+ echo <<<EOERRMSG
+ <html><head><title>Database Connection Failure</title></head><body>
+diff --git a/inc/AwlDBDialect.php b/inc/AwlDBDialect.php
+index fac5a23..f2c5b95 100644
+--- a/inc/AwlDBDialect.php
++++ b/inc/AwlDBDialect.php
+@@ -82,7 +82,7 @@ class AwlDBDialect {
+ *
+ * The database will be opened.
+ *
+- * @param string $connection_string The PDO connection string, in all it's glory
++ * @param string $connection_string The PDO connection string, in all its glory
+ * @param string $dbuser The database username to connect as
+ * @param string $dbpass The database password to connect with
+ * @param array $options An array of driver options
+@@ -165,10 +165,12 @@ class AwlDBDialect {
+
+ switch ( $this->dialect ) {
+ case 'pgsql':
+- list( $schema, $table ) = explode('.', $tablename_string, 2);
+- if ( empty($table) ) {
++ $schema = null;
++ $table = null;
++ if ( strpos($tablename_string, '.') ) {
++ list( $schema, $table ) = explode('.', $tablename_string, 2);
++ } else {
+ $table = $tablename_string;
+- $schema = null;
+ }
+
+ $sql = 'SELECT f.attname AS fieldname, t.typname AS typename, f.atttypmod AS precision FROM pg_attribute f';
+diff --git a/inc/AwlQuery.php b/inc/AwlQuery.php
+index 1547cb7..586b389 100644
+--- a/inc/AwlQuery.php
++++ b/inc/AwlQuery.php
+@@ -162,7 +162,7 @@ class AwlQuery
+ protected $rownum = null;
+
+ /**
+- * number of rows from pg_numrows - use accessor to get value
++ * number of rows from pg_num_rows - use accessor to get value
+ * @var int
+ */
+ protected $rows;
+diff --git a/inc/PgQuery.php b/inc/PgQuery.php
+index 0d2f199..69454d3 100644
+--- a/inc/PgQuery.php
++++ b/inc/PgQuery.php
+@@ -33,7 +33,7 @@
+ */
+
+
+-if ( ! function_exists('pg_Connect') ) {
++if ( ! function_exists('pg_connect') ) {
+ echo <<<EOERRMSG
+ <html>
+ <head>
+@@ -70,7 +70,7 @@ function connect_configured_database() {
+ if ( isset($c->pg_connect) && is_array($c->pg_connect) ) {
+ foreach( $c->pg_connect AS $k => $v ) {
+ if ( !$dbconn ) {
+- if ( $dbconn = ((isset($c->use_persistent) && $c->use_persistent) ? pg_pConnect($v) : pg_Connect($v) ) ) break;
++ if ( $dbconn = ((isset($c->use_persistent) && $c->use_persistent) ? pg_pconnect($v) : pg_connect($v) ) ) break;
+ }
+ }
+ }
+@@ -327,7 +327,7 @@ class PgQuery
+ * @access public
+ */
+ /**
+- * number of rows from pg_numrows - for fetching result
++ * number of rows from pg_num_rows - for fetching result
+ * should be read-only
+ * @var int
+ */
+@@ -492,7 +492,7 @@ class PgQuery
+
+ $t1 = microtime(); // get start time
+ $this->result = @pg_exec( $this->connection, $this->querystring ); // execute the query
+- $this->rows = ($this->result ? pg_numrows($this->result) : -1); // number of rows returned
++ $this->rows = ($this->result ? pg_num_rows($this->result) : -1); // number of rows returned
+ $t2 = microtime(); // get end time
+ $i_took = duration( $t1, $t2 ); // calculate difference
+ $c->total_query_time += $i_took;
+@@ -500,7 +500,7 @@ class PgQuery
+
+ if ( !$this->result ) {
+ // query simply failed
+- $this->errorstring = @pg_errormessage(); // returns database error message
++ $this->errorstring = @pg_last_error(); // returns database error message
+ $this->_log_error( $this->location, 'QF', $this->querystring, $line, $file );
+ $this->_log_error( $this->location, 'QF', $this->errorstring, $line, $file );
+ }
+@@ -637,7 +637,7 @@ class PgQuery
+ $display_value = $row[1];
+ if ( isset($translate) ) $display_value = translate( $display_value );
+ if ( isset($maxwidth) ) $display_value = substr( $display_value, 0, $maxwidth);
+- $nextrow = "<option value=\"".htmlspecialchars($row[0])."\"$selected>".htmlspecialchars($display_value)."</option>";
++ $nextrow = "<option value=\"".htmlspecialchars($row[0])."\"$selected>".htmlspecialchars($display_value ?? '')."</option>";
+ $result .= $nextrow;
+ }
+ }
+--
+2.43.2
+
+From 44e2ee89e5aa4994878520fe5b0e5d1f30205f7c Mon Sep 17 00:00:00 2001
+From: Andrew Ruthven <andrew@etc.gen.nz>
+Date: Sun, 25 Feb 2024 14:25:28 +1300
+Subject: [PATCH 08/16] Explicitly declare all class properties
+
+PHP 8.2.0 has deprecated dynamic creation of properties.
+
+This kind of warning message is displayed:
+
+Deprecated: Creation of dynamic property DAViCalSession::$login_failed is
+ deprecated in /usr/share/awl/inc/Session.php on line 153
+---
+ inc/MenuSet.php | 6 ++++
+ inc/Session.php | 81 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 87 insertions(+)
+
+diff --git a/inc/MenuSet.php b/inc/MenuSet.php
+index 2da1ced..2d26bff 100644
+--- a/inc/MenuSet.php
++++ b/inc/MenuSet.php
+@@ -65,6 +65,12 @@ class MenuOption {
+ var $submenu_set;
+ /**#@-*/
+
++ /**
++ * MenuSet attributes
++ * @var array
++ */
++ var $attributes;
++
+ /**
+ * A reference to this menu option itself
+ * @var reference
+diff --git a/inc/Session.php b/inc/Session.php
+index 5d55f9d..29cfde9 100644
+--- a/inc/Session.php
++++ b/inc/Session.php
+@@ -63,6 +63,12 @@ class Session
+ */
+ var $roles;
+ var $cause = '';
++
++ /**
++ * Session start times for confirmation emails
++ * @var array
++ var $session_start;
++
+ /**#@-*/
+
+ /**#@+
+@@ -113,6 +119,55 @@ class Session
+ */
+ var $just_logged_in = false;
+
++ /**
++ * The date and time that the user's email address was confirmed.
++ * @var string
++ */
++ var $email_ok;
++
++ /**
++ * The date and time that the user joined (account created).
++ * @var string
++ */
++ var $joined;
++
++ /**
++ * The date and time that the user's record was last updated.
++ * @var string
++ */
++ var $updated;
++
++ /**
++ * The date and time that the user was last used (not used?).
++ * @var string
++ */
++ var $last_used;
++
++ /**
++ * The user's password.
++ * @var string
++ */
++ var $password;
++
++ /**
++ * The user's config_data. I don't know what type this should be as I can't
++ * see any examples of it being used.
++ * @var string
++ */
++ var $config_data;
++
++ /**
++ * The user's data format type.
++ * @var string
++ */
++ var $date_format_type;
++
++ /**
++ * The user's locale.
++ * @var string
++ */
++ var $locale;
++
+ /**
+ * The date and time that the user logged on during their last session.
+ * @var string
+@@ -125,6 +180,32 @@ class Session
+ * @var string
+ */
+ var $last_session_end;
++
++ /**
++ * The date and time that the users session start.
++ * @var string
++ */
++ var $session_start;
++
++ /**
++ * Session config. I don't know what type this should be as I can't see any
++ * examples of it being used.
++ * @var string
++ */
++ var $session_config;
++
++ /**
++ * The date and time that the users session ends.
++ * @var string
++ */
++ var $session_end;
++
++ /**
++ * Flag to indicate if login failed.
++ * @var boolean
++ */
++ var $login_failed = false;
++
+ /**#@-*/
+
+ /**
+--
+2.43.2
+
+From 45b796e24bc21ba83332aff9f6af7a0108d906b0 Mon Sep 17 00:00:00 2001
+From: Andrew Ruthven <andrew@etc.gen.nz>
+Date: Sun, 25 Feb 2024 23:47:43 +1300
+Subject: [PATCH 10/16] Explicitly declare all class properties (more)
+
+---
+ inc/Session.php | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/inc/Session.php b/inc/Session.php
+index 29cfde9..a064209 100644
+--- a/inc/Session.php
++++ b/inc/Session.php
+@@ -119,6 +119,12 @@ class Session
+ */
+ var $just_logged_in = false;
+
++ /**
++ * Is the user active (aka enabled)?
++ * @var boolean
++ */
++ var $active;
++
+ /**
+ * The date and time that the user's email address was confirmed.
+ * @var string
+@@ -200,6 +206,12 @@ class Session
+ */
+ var $session_end;
+
++ /**
++ * Current session key
++ * @var string
++ */
++ var $session_key;
++
+ /**
+ * Flag to indicate if login failed.
+ * @var boolean
+--
+2.43.2
+
+From b879addd766ab2a54aa92d58c48c26a985c89690 Mon Sep 17 00:00:00 2001
+From: Andrew Ruthven <andrew@etc.gen.nz>
+Date: Wed, 28 Feb 2024 00:57:59 +1300
+Subject: [PATCH 11/16] Ensure we pass a string to htmlspecialchars()
+
+PHP 8.1 deprecated passing null into many functions. This fixes these errors:
+
+Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of
+ type string is deprecated in /usr/share/awl/inc/classEditor.php on line 626
+---
+ inc/classEditor.php | 29 ++++++++++++++++++++++++-----
+ 1 file changed, 24 insertions(+), 5 deletions(-)
+
+diff --git a/inc/classEditor.php b/inc/classEditor.php
+index afdd534..36703cd 100644
+--- a/inc/classEditor.php
++++ b/inc/classEditor.php
+@@ -621,28 +621,47 @@ class Editor
+ }
+ }
+ return $field->RenderLabel('<input type="hidden" value="off" name="'.$field_name.'"><input class="entry" type="checkbox" value="on" name="'.$field_name.'"'.$checked.$attributes.'>' );
++
+ case "input":
+ $size = (isset($part3) ? $part3 : 6);
+- return "<input class=\"entry\" value=\"".htmlspecialchars($field_value)."\" name=\"$field_name\" size=\"$size\"$attributes>";
++ return "<input class=\"entry\" value=\""
++ . (isset($field_value) ? htmlspecialchars($field_value) : '')
++ . "\" name=\"$field_name\" size=\"$size\"$attributes>";
++
+ case "file":
+ $size = (isset($part3) ? $part3 : 30);
+- return "<input type=\"file\" class=\"entry\" value=\"".htmlspecialchars($field_value)."\" name=\"$field_name\" size=\"$size\"$attributes>";
++ return "<input type=\"file\" class=\"entry\" value=\""
++ . (isset($field_value) ? htmlspecialchars($field_value) : '')
++ . "\" name=\"$field_name\" size=\"$size\"$attributes>";
++
+ case "money":
+ $size = (isset($part3) ? $part3 : 8);
+- return "<input class=\"money\" value=\"".htmlspecialchars(sprintf("%0.2lf",$field_value))."\" name=\"$field_name\" size=\"$size\"$attributes>";
++ return "<input class=\"money\" value=\""
++ . (isset($field_value) ? htmlspecialchars(sprintf("%0.2lf",$field_value)) : '')
++ . "\" name=\"$field_name\" size=\"$size\"$attributes>";
++
+ case "date":
+ $size = (isset($part3) ? $part3 : 10);
+- return "<input class=\"date\" value=\"".htmlspecialchars($field_value)."\" name=\"$field_name\" size=\"$size\"$attributes>";
++ return "<input class=\"date\" value=\""
++ . (isset($field_value) ? htmlspecialchars($field_value) : '')
++ . "\" name=\"$field_name\" size=\"$size\"$attributes>";
++
+ case "textarea":
+ list( $cols, $rows ) = explode( 'x', $part3);
+- return "<textarea class=\"entry\" name=\"$field_name\" rows=\"$rows\" cols=\"$cols\"$attributes>".htmlspecialchars($field_value)."</textarea>";
++ return "<textarea class=\"entry\" name=\"$field_name\" rows=\"$rows\" cols=\"$cols\"$attributes>"
++ . (isset($field_value) ? htmlspecialchars($field_value) : '')
++ . "</textarea>";
++
+ case "hidden":
+ return sprintf( "<input type=\"hidden\" value=\"%s\" name=\"$field_name\">", htmlspecialchars($field_value) );
++
+ case "password":
+ return sprintf( "<input type=\"password\" value=\"%s\" name=\"$field_name\" size=\"10\">", htmlspecialchars($part3) );
++
+ case "encval":
+ case "enc":
+ return htmlspecialchars($field_value);
++
+ case "submit":
+ $action = ( $this->RecordAvailable ? 'update' : 'insert' );
+ return sprintf('<input type="hidden" name="_editor_action[%s]" value="%s"><input type="submit" class="submit" name="%s" value="%s">',
+--
+2.43.2
+
+From 27b37d1eba82c3f9abbc4505179d06abce0fa0d3 Mon Sep 17 00:00:00 2001
+From: Andrew Ruthven <andrew@etc.gen.nz>
+Date: Wed, 28 Feb 2024 01:03:36 +1300
+Subject: [PATCH 12/16] Remove a PHP 7ism
+
+---
+ inc/PgQuery.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/inc/PgQuery.php b/inc/PgQuery.php
+index 69454d3..f2ba9c3 100644
+--- a/inc/PgQuery.php
++++ b/inc/PgQuery.php
+@@ -637,7 +637,7 @@ class PgQuery
+ $display_value = $row[1];
+ if ( isset($translate) ) $display_value = translate( $display_value );
+ if ( isset($maxwidth) ) $display_value = substr( $display_value, 0, $maxwidth);
+- $nextrow = "<option value=\"".htmlspecialchars($row[0])."\"$selected>".htmlspecialchars($display_value ?? '')."</option>";
++ $nextrow = "<option value=\"".htmlspecialchars($row[0])."\"$selected>" . (isset($display_value) ? htmlspecialchars($display_value) : '') . "</option>";
+ $result .= $nextrow;
+ }
+ }
+--
+2.43.2
+
+From 33678418692ab1d82ff4ab064e64d1d7064ec10a Mon Sep 17 00:00:00 2001
+From: Andrew Ruthven <andrew@etc.gen.nz>
+Date: Wed, 28 Feb 2024 08:14:16 +1300
+Subject: [PATCH 13/16] Explicitly declare all class properties (more)
+
+---
+ inc/classBrowser.php | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/inc/classBrowser.php b/inc/classBrowser.php
+index f169c72..850006a 100644
+--- a/inc/classBrowser.php
++++ b/inc/classBrowser.php
+@@ -209,6 +209,7 @@ class Browser
+ var $match_function;
+ var $DivOpen;
+ var $DivClose;
++ var $current_row;
+
+ /**
+ * The Browser class constructor
+--
+2.43.2
+