diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 53e047f9..3d858651 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -43,7 +43,7 @@ jobs:
actions: read
id-token: write
contents: write
- uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0
+ uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
with:
base64-subjects: "${{ needs.release.outputs.hashes }}"
draft-release: true
diff --git a/cfg/conf.sample.php b/cfg/conf.sample.php
index cd64a5fa..75831f45 100644
--- a/cfg/conf.sample.php
+++ b/cfg/conf.sample.php
@@ -37,9 +37,12 @@ defaultformatter = "plaintext"
; size limit per paste or comment in bytes, defaults to 10 Mebibytes
sizelimit = 10485760
-; template to include, default is "bootstrap" (tpl/bootstrap.php)
-; Also available is a dark version ("bootstrap-dark",) and
-; a theme that resembles the classic ZeroBin style ("page".)
+; template to include, default is "bootstrap" (tpl/bootstrap.php), also
+; available are "page" (tpl/page.php), the classic ZeroBin style and several
+; bootstrap variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page",
+; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page"
+; and finally "bootstrap-compact-page" - previews at:
+; https://privatebin.info/screenshots.html
template = "bootstrap"
; (optional) info text to display
diff --git a/composer.json b/composer.json
index bbd720ae..0d792ebf 100644
--- a/composer.json
+++ b/composer.json
@@ -30,8 +30,8 @@
"yzalis/identicon": "2.0.0"
},
"suggest" : {
- "google/cloud-storage" : "1.32.0",
- "aws/aws-sdk-php" : "3.275.1"
+ "google/cloud-storage" : "1.41.0",
+ "aws/aws-sdk-php" : "3.302.0"
},
"require-dev" : {
"phpunit/phpunit" : "^9"
diff --git a/composer.lock b/composer.lock
index b455c50c..a08c960e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -809,16 +809,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.18",
+ "version": "9.6.19",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04"
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04",
- "reference": "32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
"shasum": ""
},
"require": {
@@ -892,7 +892,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.18"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
},
"funding": [
{
@@ -908,7 +908,7 @@
"type": "tidelift"
}
],
- "time": "2024-03-21T12:07:32+00:00"
+ "time": "2024-04-05T04:35:58+00:00"
},
{
"name": "sebastian/cli-parser",
diff --git a/doc/Installation.md b/doc/Installation.md
index 77f79fbb..b09de9e1 100644
--- a/doc/Installation.md
+++ b/doc/Installation.md
@@ -22,6 +22,7 @@ for more information.
### Minimal Requirements
- PHP version 7.3 or above
+- ctype extension
- GD extension (when using identicon or vizhash icons, jdenticon works without it)
- zlib extension
- some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php)
diff --git a/i18n/it.json b/i18n/it.json
index cb672e55..591ebf4f 100644
--- a/i18n/it.json
+++ b/i18n/it.json
@@ -215,7 +215,7 @@
"Trying to shorten a URL that isn't pointing at our instance.": "Tantativo in corso di accorciare un URL che non punta alla nostra istanza.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Errore nella chiamata a YOURLS. Probabilmente un problema di configurazione, come un \"apiurl\" o una \"signature\" sbagliati o mancanti.",
"Error parsing YOURLS response.": "Errore nell'analizzare la risposta YOURLS.",
- "This secret message can only be displayed once. Would you like to see it now?": "Messaggi di tipo Distruggi-dopo-lettura piovono essere visualizzata solo una volta al caricamento. Vuoi vederlo ora?",
- "Yes, see it": "Sì, vederlo",
+ "This secret message can only be displayed once. Would you like to see it now?": "Questo messaggio di tipo Distruggi-dopo-lettura può essere visualizzato solo una volta. Vuoi vederlo ora?",
+ "Yes, see it": "Sì, visualizzalo",
"Dark Mode": "Dark Mode"
}
diff --git a/i18n/tr.json b/i18n/tr.json
index b4c95f87..f6ef1ded 100644
--- a/i18n/tr.json
+++ b/i18n/tr.json
@@ -3,7 +3,7 @@
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s sunucunun burada paylaştığınız veriyi görmediği, minimal, açık kaynak bir pastebindir. Veriler tarayıcıda 256 bit AES kullanılarak şifrelenir/çözülür.",
"More information on the project page.": "Daha fazla bilgi için proje sayfası'na göz atabilirsiniz.",
"Because ignorance is bliss": "Çünkü, cehalet mutluluktur",
- "Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.",
+ "Paste does not exist, has expired or has been deleted.": "Bu mevcut değil, süresi dolmuş veya silinmiş.",
"%s requires php %s or above to work. Sorry.": "%s PHP %s veya daha üstünü gerektirir.",
"%s requires configuration section [%s] to be present in configuration file.": "%s konfigürasyon bölümünün [%s] bulunmasını gerektir.",
"Please wait %d seconds between each post.": [
@@ -188,7 +188,7 @@
"Decrypting paste…": "Yazı şifresi çözülüyor…",
"Preparing new paste…": "Yeni yazı hazırlanıyor…",
"In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "In case this message never disappears please have a look at this FAQ for information to troubleshoot.",
- "+++ no paste text +++": "+++ no paste text +++",
+ "+++ no paste text +++": "+++ yazı içeriği yok +++",
"Could not get paste data: %s": "Yazı verisi alınamıyor: %s",
"QR code": "QR kodu",
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
@@ -216,6 +216,6 @@
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
- "Yes, see it": "Yes, see it",
+ "Yes, see it": "Evet, görüyorum",
"Dark Mode": "Dark Mode"
}
diff --git a/lib/Vizhash16x16.php b/lib/Vizhash16x16.php
index b61fd56b..2d296af8 100644
--- a/lib/Vizhash16x16.php
+++ b/lib/Vizhash16x16.php
@@ -109,9 +109,9 @@ class Vizhash16x16
for ($i = 0; $i < 7; ++$i) {
$action = $this->getInt();
$color = imagecolorallocate($image, $r, $g, $b);
- $r = $r0 = ($r0 + $this->getInt() / 25) % 256;
- $g = $g0 = ($g0 + $this->getInt() / 25) % 256;
- $b = $b0 = ($b0 + $this->getInt() / 25) % 256;
+ $r = $r0 = ((int) $r0 + $this->getInt() / 25) % 256;
+ $g = $g0 = ((int) $g0 + $this->getInt() / 25) % 256;
+ $b = $b0 = ((int) $b0 + $this->getInt() / 25) % 256;
$this->drawshape($image, $action, $color);
}
@@ -136,7 +136,7 @@ class Vizhash16x16
{
$v = $this->VALUES[$this->VALUES_INDEX];
++$this->VALUES_INDEX;
- $this->VALUES_INDEX %= count($this->VALUES); // Warp around the array
+ $this->VALUES_INDEX %= count($this->VALUES); // Wrap around the array
return $v;
}
@@ -148,7 +148,7 @@ class Vizhash16x16
*/
private function getX()
{
- return $this->width * $this->getInt() / 256;
+ return (int) $this->width * $this->getInt() / 256;
}
/**
@@ -159,7 +159,7 @@ class Vizhash16x16
*/
private function getY()
{
- return $this->height * $this->getInt() / 256;
+ return (int) $this->height * $this->getInt() / 256;
}
/**
@@ -190,9 +190,9 @@ class Vizhash16x16
($color2[2] - $color1[2]) / $size,
);
for ($i = 0; $i < $size; ++$i) {
- $r = $color1[0] + ($diffs[0] * $i);
- $g = $color1[1] + ($diffs[1] * $i);
- $b = $color1[2] + ($diffs[2] * $i);
+ $r = $color1[0] + ((int) $diffs[0] * $i);
+ $g = $color1[1] + ((int) $diffs[1] * $i);
+ $b = $color1[2] + ((int) $diffs[2] * $i);
if ($direction == 'h') {
imageline($img, $i, 0, $i, $sizeinv, imagecolorallocate($img, $r, $g, $b));
} else {
@@ -222,7 +222,7 @@ class Vizhash16x16
break;
case 3:
$points = array($this->getX(), $this->getY(), $this->getX(), $this->getY(), $this->getX(), $this->getY(), $this->getX(), $this->getY());
- imagefilledpolygon($image, $points, 4, $color);
+ version_compare(PHP_VERSION, '8.1', '<') ? imagefilledpolygon($image, $points, 4, $color) : imagefilledpolygon($image, $points, $color);
break;
default:
$start = $this->getInt() * 360 / 256;
diff --git a/tst/Bootstrap.php b/tst/Bootstrap.php
index 7f4caa32..183d1b1d 100644
--- a/tst/Bootstrap.php
+++ b/tst/Bootstrap.php
@@ -508,6 +508,11 @@ class ConnectionInterfaceStub implements ConnectionInterface
throw new BadMethodCallException('not supported by this stub');
}
+ public function restoreObject(array $args = array())
+ {
+ throw new BadMethodCallException('not supported by this stub');
+ }
+
public function copyObject(array $args = array())
{
throw new BadMethodCallException('not supported by this stub');