custom donation content

This commit is contained in:
xiaomlove
2022-05-06 22:25:00 +08:00
parent cc7b046926
commit 83c0a261db
9 changed files with 144 additions and 19 deletions

View File

@@ -9,6 +9,13 @@ class Setting extends NexusModel
{
protected $fillable = ['name', 'value'];
/**
* get setting autoload = yes with cache
*
* @param null $name
* @param null $default
* @return array|\ArrayAccess|false|int|mixed|string|null
*/
public static function get($name = null, $default = null)
{
$settings = NexusDB::remember("nexus_settings_in_laravel", 600, function () {
@@ -20,18 +27,19 @@ class Setting extends NexusModel
return Arr::get($settings, $name, $default);
}
public static function getFromDb($name = null, $default = null)
/**
* get setting autoload = yes without cache
*
* @param null $name
* @param null $default
* @return mixed
*/
public static function getFromDb($name = null, $default = null): mixed
{
$rows = self::query()->get(['name', 'value']);
$rows = self::query()->where('autoload', 'yes')->get(['name', 'value']);
$result = [];
foreach ($rows as $row) {
$value = $row->value;
if (!is_null($value)) {
$arr = json_decode($value, true);
if (is_array($arr)) {
$value = $arr;
}
}
$value = self::normalizeValue($row);
Arr::set($result, $row->name, $value);
}
if (is_null($name)) {
@@ -40,4 +48,42 @@ class Setting extends NexusModel
return Arr::get($result, $name, $default);
}
/**
* get from db by name, generally used for `autoload` = 'no'
*
* @param $name
* @param null $default
* @return mixed
*/
public static function getByName($name, $default = null): mixed
{
$result = self::query()->where('name', $name)->first();
if ($result) {
return self::normalizeValue($result);
}
return $default;
}
public static function getByWhereRaw($whereRaw): array
{
$result = [];
$list = self::query()->whereRaw($whereRaw)->get();
foreach ($list as $value) {
Arr::set($result, $value->name, self::normalizeValue($value));
}
return $result;
}
public static function normalizeValue(Setting $setting)
{
$value = $setting->value;
if (!is_null($value)) {
$arr = json_decode($value, true);
if (is_array($arr)) {
$value = $arr;
}
}
return $value;
}
}

View File

@@ -25,7 +25,7 @@ class ClaimRepository extends BaseRepository
public function store($uid, $torrentId)
{
$isEnabled = Claim::getConfigIsEnabled();
if ($isEnabled) {
if (!$isEnabled) {
throw new \RuntimeException(nexus_trans("torrent.claim_disabled"));
}
$exists = Claim::query()->where('uid', $uid)->where('torrent_id', $torrentId)->exists();

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('settings', function (Blueprint $table) {
$table->enum('autoload', ['yes', 'no'])->default('yes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn('autoload');
});
}
};

View File

@@ -4938,17 +4938,17 @@ function torrentTags($tags = 0, $type = 'checkbox')
return $html;
}
function saveSetting($prefix, $nameAndValue)
function saveSetting($prefix, $nameAndValue, $autoload = 'yes')
{
$prefix = strtolower($prefix);
$datetimeNow = date('Y-m-d H:i:s');
$sql = "insert into settings (name, value, created_at, updated_at) values ";
$sql = "insert into settings (name, value, created_at, updated_at, autoload) values ";
$data = [];
foreach ($nameAndValue as $name => $value) {
if (is_array($value)) {
$value = json_encode($value);
}
$data[] = sprintf("(%s, %s, %s, %s)", sqlesc("$prefix.$name"), sqlesc($value), sqlesc($datetimeNow), sqlesc($datetimeNow));
$data[] = sprintf("(%s, %s, %s, %s, '%s')", sqlesc("$prefix.$name"), sqlesc($value), sqlesc($datetimeNow), sqlesc($datetimeNow), $autoload);
}
$sql .= implode(",", $data) . " on duplicate key update value = values(value)";
sql_query($sql) or sqlerr(__FILE__, __LINE__);

View File

@@ -753,6 +753,11 @@ $lang_settings = array
'claim_give_up_deduct_user_bonus' => '用户主动放弃认领扣除用户 %s 魔力。',
'claim_reach_standard' => '达标标准:每月做种时间大于等于 %s 小时, 或上传量大于等于其体积 %s 倍。',
'claim_bonus_multiplier' => '计算达标种子魔力奖励是正常魔力值的 %s 倍。',
'row_misc_settings' => '其他设定',
'submit_misc_settings' => '其他设定',
'text_misc_settings_note' => '配置其他杂项。',
'row_misc_donation_custom' => '捐赠自定义内容',
'text_donation_custom_note' => '捐赠页自定义的内容展示于支付宝、PayPal上面。支持&nbsp;<b><a href="tags.php" target="_blank">bbcode 标签</a></b>',
);
?>

View File

@@ -752,6 +752,11 @@ $lang_settings = array
'claim_give_up_deduct_user_bonus' => '用戶主動放棄認領扣除用戶 %s 魔力。',
'claim_reach_standard' => '達標標準:每月做種時間大於等於 %s 小時, 或上傳量大於等於其體積 %s 倍。',
'claim_bonus_multiplier' => '計算達標種子魔力獎勵是正常魔力值的 %s 倍。',
'row_misc_settings' => '其他設定',
'submit_misc_settings' => '其他設定',
'text_misc_settings_note' => '配置其他雜項。',
'row_misc_donation_custom' => '捐贈自定義內容',
'text_donation_custom_note' => '捐贈頁自定義的內容展示於支付寶、PayPal上面。支持&nbsp;<b><a href="tags.php" target="_blank">bbcode 標簽</a></b>',
);
?>

View File

@@ -752,6 +752,11 @@ $lang_settings = array
'claim_give_up_deduct_user_bonus' => 'User actively gives up claiming deduct user %s bonus.',
'claim_reach_standard' => 'Standard: Monthly seeding time greater than or equal to %s of hours, or uploaded greater than or equal to %s times its size.',
'claim_bonus_multiplier' => 'Calculate %s times the normal bonus value of the attained seed bonus.',
'row_misc_settings' => 'Misc settings',
'submit_misc_settings' => 'Misc settings',
'text_misc_settings_note' => 'Misc settings',
'row_misc_donation_custom' => 'Donation custom',
'text_donation_custom_note' => 'Donation page custom content, displayed above Alipay, PayPal. Support&nbsp;<b><a href="tags.php" target="_blank">bbcode tag</a></b>',
);
?>

View File

@@ -10,8 +10,9 @@ $do = $_GET['do'] ?? '';
if ($do == 'thanks') {
stderr($lang_donate['std_success'], $lang_donate['std_donation_success_note_one']."<a href=\"sendmessage.php?receiver=".$ACCOUNTANTID."\"><b>".$lang_donate['std_here']."</b></a>".$lang_donate['std_donation_success_note_two'], false);
}
else
else
{
$custom = trim(\App\Models\Setting::getByName('misc.donation_custom'));
$paypal = safe_email($PAYPALACCOUNT);
if ($paypal && check_email($paypal))
$showpaypal = true;
@@ -27,14 +28,19 @@ else
$tdattr = "width=\"50%\"";
elseif ($showpaypal || $showalipay)
$tdattr = "colspan=\"2\" width=\"100%\"";
else
stderr($lang_donate['std_error'], $lang_donate['std_no_donation_account_available'], false);
if (!$showpaypal && !$showalipay && !$custom) {
stderr($lang_donate['std_error'], $lang_donate['std_no_donation_account_available'], false);
}
stdhead($lang_donate['head_donation']);
begin_main_frame();
print("<h2>".$lang_donate['text_donate']."</h2>");
print("<table width=100%><tr>");
print("<td colspan=2 class=text align=left>".$lang_donate['text_donation_note']."</td></tr>");
print("<table width=100%>");
print("<tr><td colspan=2 class=text align=left>".$lang_donate['text_donation_note']."</td></tr>");
if ($custom) {
echo sprintf('<tr><td class="text" align="left">%s</td></tr>', format_comment($custom));
}
print("<tr>");
if ($showpaypal){
?>

View File

@@ -23,7 +23,7 @@ function yesorno($title, $name, $value, $note="")
}
$action = isset($_POST['action']) ? $_POST['action'] : 'showmenu';
$allowed_actions = array('basicsettings','mainsettings','smtpsettings','securitysettings','authoritysettings','tweaksettings', 'botsettings','codesettings','bonussettings','accountsettings','torrentsettings', 'attachmentsettings', 'advertisementsettings', 'savesettings_basic', 'savesettings_main','savesettings_smtp','savesettings_security','savesettings_authority','savesettings_tweak','savesettings_bot','savesettings_code','savesettings_bonus', 'savesettings_account','savesettings_torrent', 'savesettings_attachment', 'savesettings_advertisement', 'showmenu');
$allowed_actions = array('basicsettings','mainsettings','smtpsettings','securitysettings','authoritysettings','tweaksettings', 'botsettings','codesettings','bonussettings','accountsettings','torrentsettings', 'attachmentsettings', 'advertisementsettings', 'savesettings_basic', 'savesettings_main','savesettings_smtp','savesettings_security','savesettings_authority','savesettings_tweak','savesettings_bot','savesettings_code','savesettings_bonus', 'savesettings_account','savesettings_torrent', 'savesettings_attachment', 'savesettings_advertisement', 'showmenu', 'miscsettings', 'savesettings_misc');
if (!in_array($action, $allowed_actions))
$action = 'showmenu';
$notice = "<h1 align=\"center\"><a class=\"faqlink\" href=\"settings.php\">".$lang_settings['text_website_settings']."</a></h1><table cellspacing=\"0\" cellpadding=\"10\" width=\"97%\"><tr><td colspan=\"2\" style='padding: 10px; background: black' align=\"center\">
@@ -267,6 +267,20 @@ elseif ($action == 'savesettings_advertisement') // save advertisement
write_log("Tracker ADVERTISEMENT settings updated by {$CURUSER['username']}. $actiontime",'mod');
go_back();
}
elseif ($action == 'savesettings_misc')
{
stdhead($lang_settings['row_misc_settings']);
$validConfig = array('donation_custom', );
GetVar($validConfig);
$data = [];
foreach($validConfig as $config) {
$data[$config] = $$config ?? null;
}
saveSetting('misc', $data, 'no');
$actiontime = date("F j, Y, g:i a");
write_log("Misc settings updated by {$CURUSER['username']}. $actiontime",'mod');
go_back();
}
elseif ($action == 'tweaksettings') // tweak settings
{
$TWEAK = get_setting_from_db('tweak');
@@ -817,6 +831,17 @@ JS;
tr($lang_settings['row_save_settings'],"<input type='submit' name='save' value='".$lang_settings['submit_save_settings']."'>", 1);
print ("</form>");
}
elseif ($action == 'miscsettings')
{
$result = \App\Models\Setting::getByWhereRaw("name like 'misc.%'");
$misc = $result['misc'] ?? [];
stdhead($lang_settings['head_torrent_settings']);
print ($notice);
print ("<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='savesettings_misc'>");
tr($lang_settings['row_misc_donation_custom'],"<textarea cols=\"100\" rows=\"10\" name='donation_custom'>".($misc['donation_custom'] ?? '')."</textarea><br/>".$lang_settings['text_donation_custom_note'], 1);
tr($lang_settings['row_save_settings'],"<input type='submit' name='save' value='".$lang_settings['submit_save_settings']."'>", 1);
print ("</form>");
}
elseif ($action == 'showmenu') // settings main page
{
stdhead($lang_settings['head_website_settings']);
@@ -832,6 +857,7 @@ elseif ($action == 'showmenu') // settings main page
tr($lang_settings['row_torrents_settings'], "<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='torrentsettings'><input type='submit' value=\"".$lang_settings['submit_torrents_settings']."\"> ".$lang_settings['text_torrents_settings_note']."</form>", 1);
tr($lang_settings['row_attachment_settings'], "<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='attachmentsettings'><input type='submit' value=\"".$lang_settings['submit_attachment_settings']."\"> ".$lang_settings['text_attachment_settings_note']."</form>", 1);
tr($lang_settings['row_advertisement_settings'], "<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='advertisementsettings'><input type='submit' value=\"".$lang_settings['submit_advertisement_settings']."\"> ".$lang_settings['text_advertisement_settings_note']."</form>", 1);
tr($lang_settings['row_misc_settings'], "<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='miscsettings'><input type='submit' value=\"".$lang_settings['submit_misc_settings']."\"> ".$lang_settings['text_misc_settings_note']."</form>", 1);
// tr($lang_settings['row_code_settings'], "<form method='post' action='".$_SERVER["SCRIPT_NAME"]."'><input type='hidden' name='action' value='codesettings'><input type='submit' value=\"".$lang_settings['submit_code_settings']."\"> ".$lang_settings['text_code_settings_note']."</form>", 1);
}
print("</table>");