diff --git a/README-EN.md b/README-EN.md
index 4dfbb769..0f8290e6 100644
--- a/README-EN.md
+++ b/README-EN.md
@@ -20,9 +20,9 @@ Complete PT website building solution. Based on NexusPHP + Laravel Framework + E
- ....
## System Requirements
-- PHP: 8.0, must have extensions: bcmath, ctype, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd
+- PHP: 8.0, must have extensions: bcmath, ctype, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis
- Mysql: 5.7 latest version or above
-- Redis:optional
+- Redis:1.0.0 or above
## More information
Blog:[https://nexusphp.org](https://nexusphp.org/)
diff --git a/README.md b/README.md
index be4700fc..f267a42f 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,9 @@
- ....
## 系统要求
-- PHP: 8.0,必须扩展:bcmath, ctype, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd
+- PHP: 8.0,必须扩展:bcmath, ctype, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml, mysqli, gd, redis
- Mysql: 5.7最新版或以上版本
-- Redis:可选
+- Redis:1.0.0或以上版本
## 捐赠
此程序由个人维护,如果对你有帮助,可以请我喝杯咖啡。感谢以下捐赠者:
diff --git a/classes/class_cache_redis.php b/classes/class_cache_redis.php
index 2a5e7e06..7d01f607 100644
--- a/classes/class_cache_redis.php
+++ b/classes/class_cache_redis.php
@@ -21,8 +21,10 @@ class class_cache_redis {
function __construct() {
$success = $this->connect(); // Connect to Redis
if ($success) {
+ do_log("Redis is enabled!");
$this->isEnabled = 1;
} else {
+ do_log("Redis is disabled!");
$this->isEnabled = 0;
}
}
@@ -61,6 +63,7 @@ class class_cache_redis {
}
return $connectResult;
} catch (\Exception $exception) {
+ do_log("Redis connect fail: " . $exception->getMessage(), 'error');
return false;
}
}
diff --git a/composer.json b/composer.json
index cc79d594..5551b7be 100644
--- a/composer.json
+++ b/composer.json
@@ -29,6 +29,7 @@
"ext-mysqli": "*",
"ext-xml": "*",
"ext-bcmath": "*",
+ "ext-redis": "*",
"doctrine/dbal": "^3.1",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
diff --git a/include/cleanup_cli.php b/include/cleanup_cli.php
index eaa5cabb..30686d8e 100644
--- a/include/cleanup_cli.php
+++ b/include/cleanup_cli.php
@@ -10,8 +10,10 @@ require "bittorrent.php";
$fd = fopen(sprintf('%s/nexus_cleanup_cli.lock', sys_get_temp_dir()), 'w+');
if (!flock($fd, LOCK_EX|LOCK_NB)) {
do_log("can not get lock, skip!");
+ exit();
}
register_shutdown_function(function () use ($fd) {
+ flock($fd, LOCK_UN);
fclose($fd);
});
diff --git a/include/functions.php b/include/functions.php
index b3aa73d1..8fc0deb7 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1009,7 +1009,7 @@ function begin_compose($title = "",$type="new", $body="", $hassubject=true, $sub
print("
\n");
if ($hassubject)
print("| ".$lang_functions['row_subject']." | " .
-" |
\n");
+" | \n");
print("| ".$lang_functions['row_body']." | ");
textbbcode("compose","body", $body, false);
print(" |
");
diff --git a/nexus/Install/Install.php b/nexus/Install/Install.php
index 3dbe863d..4aa56010 100644
--- a/nexus/Install/Install.php
+++ b/nexus/Install/Install.php
@@ -126,7 +126,7 @@ class Install
public function listRequirementTableRows()
{
$gdInfo = function_exists('gd_info') ? gd_info() : [];
- $extensions = ['ctype', 'fileinfo', 'json', 'mbstring', 'openssl', 'pdo_mysql', 'tokenizer', 'xml', 'mysqli', 'gd', 'bcmath'];
+ $extensions = ['ctype', 'fileinfo', 'json', 'mbstring', 'openssl', 'pdo_mysql', 'tokenizer', 'xml', 'mysqli', 'bcmath', 'redis', 'gd'];
$tableRows = [];
$tableRows[] = [
'label' => 'PHP version',
@@ -160,12 +160,6 @@ class Install
'current' => $gdInfo['GIF Read Support'] ?? '',
'result' => $this->yesOrNo($gdInfo['GIF Read Support'] ?? ''),
];
- $tableRows[] = [
- 'label' => 'PHP extension redis',
- 'required' => 'optional',
- 'current' => extension_loaded('redis'),
- 'result' => $this->yesOrNo(extension_loaded('redis')),
- ];
$fails = array_filter($tableRows, function ($value) {return in_array($value['required'], ['true', 'enabled']) && $value['result'] == 'NO';});
$pass = empty($fails);
@@ -434,15 +428,13 @@ class Install
$this->doLog("[CREATE ENV] final newData: " . json_encode($newData));
unset($key, $value);
mysql_connect($newData['DB_HOST'], $newData['DB_USERNAME'], $newData['DB_PASSWORD'], $newData['DB_DATABASE'], $newData['DB_PORT']);
- if (extension_loaded('redis') && !empty($newData['REDIS_HOST'])) {
- $redis = new \Redis();
- $redis->connect($newData['REDIS_HOST'], $newData['REDIS_PORT'] ?: 6379);
- if (isset($newData['REDIS_DB'])) {
- if (!ctype_digit($newData['REDIS_DB']) || $newData['REDIS_DB'] < 0 || $newData['REDIS_DB'] > 15) {
- throw new \InvalidArgumentException("invalid redis database: " . $newData['REDIS_DB']);
- }
- $redis->select($newData['REDIS_DB']);
+ $redis = new \Redis();
+ $redis->connect($newData['REDIS_HOST'], $newData['REDIS_PORT'] ?: 6379);
+ if (isset($newData['REDIS_DB'])) {
+ if (!ctype_digit($newData['REDIS_DB']) || $newData['REDIS_DB'] < 0 || $newData['REDIS_DB'] > 15) {
+ throw new \InvalidArgumentException("invalid redis database: " . $newData['REDIS_DB']);
}
+ $redis->select($newData['REDIS_DB']);
}
$content = "";
foreach ($newData as $key => $value) {
diff --git a/nexus/Install/install/install.php b/nexus/Install/install/install.php
index bf65a7c6..b68ee22f 100644
--- a/nexus/Install/install/install.php
+++ b/nexus/Install/install/install.php
@@ -173,7 +173,6 @@ if (!empty($error)) {
echo $install->renderTable($header, $requirements['table_rows']);
} elseif ($currentStep == 2) {
echo $install->renderTable($header, $tableRows);
- echo '若 Redis 不启用,相关项目留空
';
echo $install->renderForm($envFormControls);
} elseif ($currentStep == 3) {
diff --git a/nexus/Install/update/update.php b/nexus/Install/update/update.php
index e2bd3bd8..df6676f6 100644
--- a/nexus/Install/update/update.php
+++ b/nexus/Install/update/update.php
@@ -200,7 +200,7 @@ if (!empty($error)) {
echo $update->renderTable($header, $requirements['table_rows']);
} elseif ($currentStep == 3) {
echo $update->renderTable($header, $tableRows);
- echo '若 Redis 不启用,相关项目留空
';
+ echo '下一步之前,请确保在根目录执行了 composer install 更新了依赖。
';
echo $update->renderForm($envFormControls);
} elseif ($currentStep == 2) {
diff --git a/public/amountbonus.php b/public/amountbonus.php
index 3a2da942..01946547 100644
--- a/public/amountbonus.php
+++ b/public/amountbonus.php
@@ -4,11 +4,27 @@ dbconn();
loggedinorreturn();
if (get_user_class() < UC_MODERATOR)
stderr("Error", "Access denied.");
+$seedBonusAll = [
+ 1 => 100,
+ 2 => 1000,
+ 3 => 10000,
+];
+$selectName = 'seed_bonus_type';
+$select = '';
+
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
- if ($_POST['doit'] == 'yes') {
- sql_query("UPDATE users SET seedbonus = seedbonus + 25.0 WHERE status='confirmed'");
- stderr("Bonus", "25.0 bonus point is sent to everyone...");
+ if (isset($_POST['doit']) && $_POST['doit'] == 'yes') {
+ if (empty($_POST[$selectName]) || !isset($seedBonusAll[$_POST[$selectName]])) {
+ stderr("Error", "Invalid form data: $selectName.");
+ }
+ $seedBonusIncrease = $seedBonusAll[$_POST[$selectName]];
+ sql_query("UPDATE users SET seedbonus = seedbonus + $seedBonusIncrease WHERE status='confirmed'");
+ stderr("Bonus", "$seedBonusIncrease bonus point is sent to everyone...");
die;
}
@@ -40,14 +56,19 @@ print("