diff --git a/endpoints/cronjobs/sendcancellationnotifications.php b/endpoints/cronjobs/sendcancellationnotifications.php index 0b11c683c..056e1f6e5 100644 --- a/endpoints/cronjobs/sendcancellationnotifications.php +++ b/endpoints/cronjobs/sendcancellationnotifications.php @@ -42,7 +42,7 @@ $email['smtpUsername'] = $row["smtp_username"]; $email['smtpPassword'] = $row["smtp_password"]; $email['fromEmail'] = $row["from_email"] ? $row["from_email"] : "wallos@wallosapp.com"; - $email['otherEmail'] = $row["other_email"]; + $email['otherEmails'] = $row["other_emails"]; } // Check if Discord notifications are enabled and get the settings @@ -217,8 +217,15 @@ $mail->setFrom($email['fromEmail'], 'Wallos App'); $mail->addAddress($emailaddress, $name); - if (!empty($email['otherEmail'])) { - $list = explode(';', $email['otherEmail']); + if (!empty($email['otherEmails'])) { + $list = explode(';', $email['otherEmails']); + + // Avoid duplicate emails + $list = array_unique($list); + $list = array_filter($list, function ($value) use ($emailaddress) { + return $value !== $emailaddress; + }); + foreach($list as $value) { $mail->addCC(trim($value)); } diff --git a/endpoints/cronjobs/sendnotifications.php b/endpoints/cronjobs/sendnotifications.php index 842207e8f..7e47bf6af 100644 --- a/endpoints/cronjobs/sendnotifications.php +++ b/endpoints/cronjobs/sendnotifications.php @@ -60,7 +60,7 @@ $email['smtpUsername'] = $row["smtp_username"]; $email['smtpPassword'] = $row["smtp_password"]; $email['fromEmail'] = $row["from_email"] ? $row["from_email"] : "wallos@wallosapp.com"; - $email['otherEmail'] = $row["other_email"]; + $email['otherEmails'] = $row["other_emails"]; } // Check if Discord notifications are enabled and get the settings @@ -261,8 +261,15 @@ $mail->setFrom($email['fromEmail'], 'Wallos App'); $mail->addAddress($emailaddress, $name); - if (!empty($email['otherEmail'])) { - $list = explode(';', $email['otherEmail']); + if (!empty($email['otherEmails'])) { + $list = explode(';', $email['otherEmails']); + + // Avoid duplicate emails + $list = array_unique($list); + $list = array_filter($list, function ($value) use ($emailaddress) { + return $value !== $emailaddress; + }); + foreach($list as $value) { $mail->addCC(trim($value)); } diff --git a/endpoints/notifications/saveemailnotifications.php b/endpoints/notifications/saveemailnotifications.php index 8ef13f776..4c76d06e1 100644 --- a/endpoints/notifications/saveemailnotifications.php +++ b/endpoints/notifications/saveemailnotifications.php @@ -34,7 +34,7 @@ $smtpUsername = $data["smtpusername"]; $smtpPassword = $data["smtppassword"]; $fromEmail = $data["fromemail"]; - $otherEmail = $data["otheremail"]; + $otherEmails = $data["otheremails"]; $query = "SELECT COUNT(*) FROM email_notifications WHERE user_id = :userId"; $stmt = $db->prepare($query); @@ -51,12 +51,12 @@ $row = $result->fetchArray(); $count = $row[0]; if ($count == 0) { - $query = "INSERT INTO email_notifications (enabled, smtp_address, smtp_port, smtp_username, smtp_password, from_email, other_email, encryption, user_id) - VALUES (:enabled, :smtpAddress, :smtpPort, :smtpUsername, :smtpPassword, :fromEmail, :otherEmail, :encryption, :userId)"; + $query = "INSERT INTO email_notifications (enabled, smtp_address, smtp_port, smtp_username, smtp_password, from_email, other_emails, encryption, user_id) + VALUES (:enabled, :smtpAddress, :smtpPort, :smtpUsername, :smtpPassword, :fromEmail, :otherEmails, :encryption, :userId)"; } else { $query = "UPDATE email_notifications SET enabled = :enabled, smtp_address = :smtpAddress, smtp_port = :smtpPort, - smtp_username = :smtpUsername, smtp_password = :smtpPassword, from_email = :fromEmail, other_email = :otherEmail, encryption = :encryption WHERE user_id = :userId"; + smtp_username = :smtpUsername, smtp_password = :smtpPassword, from_email = :fromEmail, other_emails = :otherEmails, encryption = :encryption WHERE user_id = :userId"; } $stmt = $db->prepare($query); @@ -66,7 +66,7 @@ $stmt->bindValue(':smtpUsername', $smtpUsername, SQLITE3_TEXT); $stmt->bindValue(':smtpPassword', $smtpPassword, SQLITE3_TEXT); $stmt->bindValue(':fromEmail', $fromEmail, SQLITE3_TEXT); - $stmt->bindValue(':otherEmail', $otherEmail, SQLITE3_TEXT); + $stmt->bindValue(':otherEmails', $otherEmails, SQLITE3_TEXT); $stmt->bindValue(':encryption', $encryption, SQLITE3_TEXT); $stmt->bindValue(':userId', $userId, SQLITE3_INTEGER); diff --git a/endpoints/settings/show_original_price.php b/endpoints/settings/show_original_price.php new file mode 100644 index 000000000..c961c84fc --- /dev/null +++ b/endpoints/settings/show_original_price.php @@ -0,0 +1,34 @@ + false, + "message" => translate('session_expired', $i18n) + ])); +} + +if ($_SERVER["REQUEST_METHOD"] === "POST") { + $postData = file_get_contents("php://input"); + $data = json_decode($postData, true); + + $show_original_price = $data['value']; + + $stmt = $db->prepare('UPDATE settings SET show_original_price = :show_original_price WHERE user_id = :userId'); + $stmt->bindParam(':show_original_price', $show_original_price, SQLITE3_INTEGER); + $stmt->bindParam(':userId', $userId, SQLITE3_INTEGER); + + if ($stmt->execute()) { + die(json_encode([ + "success" => true, + "message" => translate("success", $i18n) + ])); + } else { + die(json_encode([ + "success" => false, + "message" => translate("error", $i18n) + ])); + } +} + +?> \ No newline at end of file diff --git a/endpoints/subscription/clone.php b/endpoints/subscription/clone.php index 35282bb14..9d78164d3 100644 --- a/endpoints/subscription/clone.php +++ b/endpoints/subscription/clone.php @@ -40,7 +40,8 @@ if ($cloneStmt->execute()) { $response = [ "success" => true, - "message" => translate('success', $i18n) + "message" => translate('success', $i18n), + "id" => $db->lastInsertRowID() ]; echo json_encode($response); } else { diff --git a/endpoints/subscriptions/get.php b/endpoints/subscriptions/get.php index 4647d8e23..2956839f2 100644 --- a/endpoints/subscriptions/get.php +++ b/endpoints/subscriptions/get.php @@ -28,28 +28,50 @@ $params = array(); $sql = "SELECT * FROM subscriptions WHERE user_id = :userId"; - if (isset($_GET['category']) && $_GET['category'] != "") { - $sql .= " AND category_id = :category"; - $params[':category'] = $_GET['category']; - } - - if (isset($_GET['payments']) && $_GET['payments'] !== "") { - $sql .= " AND ("; - $innerSql = []; - $idx = 0; - $allPayments = explode(',', $_GET['payments']); - foreach($allPayments as $payment) { - $innerSql[] = "payment_method_id = :payments{$idx}"; - $params[':payments' . $idx] = $payment; - $idx++; + if (isset($_GET['categories']) && $_GET['categories'] != "") { + $allCategories = explode(',', $_GET['categories']); + $placeholders = array_map(function($idx) { + return ":categories{$idx}"; + }, array_keys($allCategories)); + + $sql .= " AND (" . implode(' OR ', array_map(function($placeholder) { + return "category_id = {$placeholder}"; + }, $placeholders)) . ")"; + + foreach ($allCategories as $idx => $category) { + $params[":categories{$idx}"] = $category; } - $sql .= implode(' OR ', $innerSql) . ")"; +} + +if (isset($_GET['payments']) && $_GET['payments'] !== "") { + $allPayments = explode(',', $_GET['payments']); + $placeholders = array_map(function($idx) { + return ":payments{$idx}"; + }, array_keys($allPayments)); + + $sql .= " AND (" . implode(' OR ', array_map(function($placeholder) { + return "payment_method_id = {$placeholder}"; + }, $placeholders)) . ")"; + + foreach ($allPayments as $idx => $payment) { + $params[":payments{$idx}"] = $payment; } +} + +if (isset($_GET['members']) && $_GET['members'] != "") { + $allMembers = explode(',', $_GET['members']); + $placeholders = array_map(function($idx) { + return ":members{$idx}"; + }, array_keys($allMembers)); + + $sql .= " AND (" . implode(' OR ', array_map(function($placeholder) { + return "payer_user_id = {$placeholder}"; + }, $placeholders)) . ")"; - if (isset($_GET['member']) && $_GET['member'] != "") { - $sql .= " AND payer_user_id = :member"; - $params[':member'] = $_GET['member']; + foreach ($allMembers as $idx => $member) { + $params[":members{$idx}"] = $member; } +} if (isset($_GET['state']) && $_GET['state'] != "") { $sql .= " AND inactive = :inactive"; @@ -141,6 +163,10 @@ if (isset($settings['showMonthlyPrice']) && $settings['showMonthlyPrice'] === 'true') { $print[$id]['price'] = getPricePerMonth($cycle, $frequency, $print[$id]['price']); } + if (isset($settings['showOriginalPrice']) && $settings['showOriginalPrice'] === 'true') { + $print[$id]['original_price'] = floatval($subscription['price']); + $print[$id]['original_currency_code'] = $currencies[$subscription['currency_id']]['code']; + } } if ($sortOrder == "alphanumeric") { diff --git a/includes/getsettings.php b/includes/getsettings.php index 0710eb436..19120cbba 100644 --- a/includes/getsettings.php +++ b/includes/getsettings.php @@ -31,6 +31,7 @@ $settings['removeBackground'] = $settings['remove_background'] ? 'true': 'false'; $settings['hideDisabledSubscriptions'] = $settings['hide_disabled'] ? 'true': 'false'; $settings['disabledToBottom'] = $settings['disabled_to_bottom'] ? 'true': 'false'; + $settings['showOriginalPrice'] = $settings['show_original_price'] ? 'true': 'false'; } $query = "SELECT * FROM custom_colors WHERE user_id = :userId"; diff --git a/includes/i18n/de.php b/includes/i18n/de.php index c36d16faa..7c550746c 100644 --- a/includes/i18n/de.php +++ b/includes/i18n/de.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP Benutzername", "smtp_password" => "SMTP Passwort", "from_email" => "Absender E-Mail Adresse (optional)", + "send_to_other_emails" => "Benachrichtigungen auch an die folgenden E-Mail-Adressen senden (verwende ; um sie zu trennen):", "smtp_info" => "Das SMTP Passwort wird in Klartext übermittelt und gespeichert. Aus Sicherheitsgründen erstelle bitte einen gesonderten Account nur zu diesem Zweck.", "telegram" => "Telegram", "telegram_bot_token" => "Telegram Bot Token", @@ -196,6 +197,8 @@ "reset_custom_colors" => "Benutzerdefinierte Farben zurücksetzen", "calculate_monthly_price" => "Berechne und zeige monatlichen Preis für alle Abonnements an", "convert_prices" => "Preise immer in meine Hauptwährung umrechnen und darin anzeigen (langsamer)", + "show_original_price" => "Originalpreis anzeigen, wenn Umrechnungen oder Berechnungen durchgeführt werden", + "disabled_subscriptions" => "Deaktivierte Abonnements", "hide_disabled_subscriptions" => "Deaktivierte Abonnements verstecken", "show_disabled_subscriptions_at_the_bottom" => "Deaktivierte Abonnements am Ende anzeigen", "experimental_settings" => "Experimentelle Einstellungen", diff --git a/includes/i18n/el.php b/includes/i18n/el.php index 6f65ba553..8c6dd87ef 100644 --- a/includes/i18n/el.php +++ b/includes/i18n/el.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP χρήστης", "smtp_password" => "SMTP κωδικός", "from_email" => "Από (Προαιρετικό)", + "send_to_other_emails" => "Επίσης στείλτε ειδοποιήσεις στις ακόλουθες διευθύνσεις email (χρησιμοποιήστε ; για να τις διαχωρίσετε):", "smtp_info" => "Ο κωδικός πρόσβασης SMTP μεταδίδεται και αποθηκεύεται σε απλό κείμενο. Για λόγους ασφαλείας, παρακαλούμε δημιούργησε έναν λογαριασμό μόνο γι' αυτό το σκοπό.", "telegram" => "Telegram", "telegram_bot_token" => "Τηλεγραφήματα Bot Token", @@ -196,6 +197,8 @@ "save_custom_css" => "Αποθήκευση προσαρμοσμένου CSS", "calculate_monthly_price" => "Υπολογισμός και εμφάνιση της μηνιαίας τιμής για όλες τις συνδρομές", "convert_prices" => "Πάντα να μετατρέπει και να εμφανίζει τις τιμές στο κύριο νόμισμά μου (πιο αργό)", + "show_original_price" => "Εμφάνιση της αρχικής τιμής όταν γίνονται μετατροπές ή υπολογισμοί", + "disabled_subscriptions" => "Απενεργοποιημένες συνδρομές", "hide_disabled_subscriptions" => "Απόκρυψη απενεργοποιημένων συνδρομών", "show_disabled_subscriptions_at_the_bottom" => "Εμφάνιση απενεργοποιημένων συνδρομών στο τέλος", "experimental_settings" => "Πειραματικές ρυθμίσεις", diff --git a/includes/i18n/en.php b/includes/i18n/en.php index 73d1af010..653e2a54e 100644 --- a/includes/i18n/en.php +++ b/includes/i18n/en.php @@ -140,7 +140,8 @@ "smtp_username" => "SMTP Username", "smtp_password" => "SMTP Password", "from_email" => "From email (Optional)", - "other_email" => "Other email (Use ; to separate)", + "send_to_other_emails" => "Also send notifications to the following email addresses (use ; to separate them):", + "other_emails_placeholder" => "user@domain.com;test@user.com", "smtp_info" => "SMTP Password is transmitted and stored in plaintext. For security, please create an account just for this.", "telegram" => "Telegram", "telegram_bot_token" => "Telegram Bot Token", @@ -197,6 +198,8 @@ "save_custom_css" => "Save Custom CSS", "calculate_monthly_price" => "Calculate and show monthly price for all subscriptions", "convert_prices" => "Always convert and show prices on my main currency (slower)", + "show_original_price" => "Also show original price when conversions or calculations are made", + "disabled_subscriptions" => "Disabled Subscriptions", "hide_disabled_subscriptions" => "Hide disabled subscriptions", "show_disabled_subscriptions_at_the_bottom" => "Show disabled subscriptions at the bottom", "experimental_settings" => "Experimental Settings", diff --git a/includes/i18n/es.php b/includes/i18n/es.php index 2187da141..71901063b 100644 --- a/includes/i18n/es.php +++ b/includes/i18n/es.php @@ -140,6 +140,7 @@ "smtp_username" => "Nombre de usuario SMTP", "smtp_password" => "Contraseña SMTP", "from_email" => "Correo electrónico de origen (Opcional)", + "send_to_other_emails" => "También enviar notificaciones a las siguientes direcciones de correo electrónico (use ; para separarlas):", "smtp_info" => "La contraseña SMTP se transmite y almacena en texto plano. Por seguridad, crea una cuenta solo para esto.", "telegram" => "Telegram", "telegram_bot_token" => "Token del Bot de Telegram", @@ -196,6 +197,8 @@ "save_custom_css" => "Guardar CSS Personalizado", "calculate_monthly_price" => "Calcular y mostrar el precio mensual de todas las suscripciones", "convert_prices" => "Convertir y mostrar siempre los precios en mi moneda principal (más lento)", + "show_original_price" => "Mostrar también el precio original cuando se realicen conversiones o cálculos", + "disabled_subscriptions" => "Suscripciones Desactivadas", "hide_disabled_subscriptions" => "Ocultar suscripciones desactivadas", "show_disabled_subscriptions_at_the_bottom" => "Mostrar suscripciones desactivadas al final", "experimental_settings" => "Configuraciones Experimentales", diff --git a/includes/i18n/fr.php b/includes/i18n/fr.php index e3a42b591..4e378dea9 100644 --- a/includes/i18n/fr.php +++ b/includes/i18n/fr.php @@ -140,6 +140,7 @@ "smtp_username" => "Nom d'utilisateur SMTP", "smtp_password" => "Mot de passe SMTP", "from_email" => "De l'adresse courriel (facultatif)", + "send_to_other_emails" => "Envoyer également des notifications aux adresses courriel suivantes (utilisez ; pour les séparer):", "smtp_info" => "Le mot de passe SMTP est transmis et stocké en texte brut. Pour des raisons de sécurité, veuillez créer un compte uniquement à cette fin.", "telegram" => "Telegram", "telegram_bot_token" => "Jeton du bot Telegram", @@ -196,6 +197,8 @@ "save_custom_css" => "Enregistrer le CSS personnalisé", "calculate_monthly_price" => "Calculer et afficher le prix mensuel pour tous les abonnements", "convert_prices" => "Convertir toujours et afficher les prix dans ma devise principale (plus lent)", + "show_original_price" => "Afficher également le prix original lorsque des conversions ou des calculs sont effectués", + "disabled_subscriptions" => "Abonnements désactivés", "hide_disabled_subscriptions" => "Masquer les abonnements désactivés", "show_disabled_subscriptions_at_the_bottom" => "Afficher les abonnements désactivés en bas", "experimental_settings" => "Paramètres expérimentaux", diff --git a/includes/i18n/it.php b/includes/i18n/it.php index 4ad81ea7b..561ac9020 100644 --- a/includes/i18n/it.php +++ b/includes/i18n/it.php @@ -148,7 +148,6 @@ 'smtp_username' => 'Nome utente SMTP', 'smtp_password' => 'Password SMTP', 'from_email' => 'Da quale e-mail (Opzionale)', - "other_email" => "Altre e-mail (Usa ; per separare)", 'smtp_info' => 'La password SMTP viene memorizzata e trasmessa in chiaro. Per motivi di sicurezza, si prega di creare un account da utilizzare solo per questo.', "telegram" => "Telegram", "telegram_bot_token" => "Telegram Bot Token", @@ -205,6 +204,8 @@ "save_custom_css" => "Salva CSS personalizzato", 'calculate_monthly_price' => 'Calcola e mostra il prezzo mensile per tutti gli abbonamenti', 'convert_prices' => 'Converti sempre e mostra i prezzi nella mia valuta principale (più lento)', + "show_original_price" => "Mostra anche il prezzo originale quando vengono effettuate conversioni o calcoli", + "disabled_subscriptions" => 'Abbonamenti disattivati', "hide_disabled_subscriptions" => 'Nascondi gli abbonamenti disattivati', "show_disabled_subscriptions_at_the_bottom" => 'Mostra gli abbonamenti disattivati in fondo', 'experimental_settings' => 'Impostazioni sperimentali', diff --git a/includes/i18n/jp.php b/includes/i18n/jp.php index a84d8c81f..b32b466b9 100644 --- a/includes/i18n/jp.php +++ b/includes/i18n/jp.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTPユーザー名", "smtp_password" => "SMTPパスワード", "from_email" => "送信元アドレス (オプション)", + "send_to_other_emails" => "通知を以下のメールアドレスにも送信する(区切りには ; を使用):", "smtp_info" => "SMTPパスワードは平文で送信および保存されます。セキュリティのため専用のアカウントを作成してください。", "telegram" => "Telegram", "telegram_bot_token" => "Telegramボットトークン", @@ -196,6 +197,8 @@ "save_custom_css" => "カスタムCSSを保存", "calculate_monthly_price" => "すべての定期購入の月額料金を計算して表示する", "convert_prices" => "常にメイン通貨で価格を換算して表示する (遅い)", + "show_original_price" => "変換や計算が行われるときに元の価格も表示する", + "disabled_subscriptions" => "無効な定期購入", "hide_disabled_subscriptions" => "無効な定期購入を非表示にする", "show_disabled_subscriptions_at_the_bottom" => "無効な定期購入を一番下に表示する", "experimental_settings" => "実験的な設定", diff --git a/includes/i18n/ko.php b/includes/i18n/ko.php index 59efc08ae..d47c16488 100644 --- a/includes/i18n/ko.php +++ b/includes/i18n/ko.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP 유저명", "smtp_password" => "SMTP 비밀번호", "from_email" => "발송 주소 (선택사항)", + "send_to_other_emails" => "알림을 다음 이메일 주소로도 보내기 (구분자는 ; 사용):", "smtp_info" => "SMTP 비밀번호는 평문으로 저장되고 발송됩니다. 보안을 위해, 이 서비스를 위해서만 사용하는 계정을 생성해 주세요.", "telegram" => "텔레그램", "telegram_bot_token" => "텔레그램 봇 토큰", @@ -197,6 +198,8 @@ "save_custom_css" => "커스텀 CSS 저장", "calculate_monthly_price" => "모든 구독에 대한 월별 요금을 계산하고 표시", "convert_prices" => "항상 기본 통화로 가격을 환산하고 표시 (느림)", + "show_original_price" => "변환이나 계산이 이루어질 때 원래 가격도 표시", + "disabled_subscriptions" => "비활성화된 구독", "hide_disabled_subscriptions" => "비활성화된 구독 숨기기", "show_disabled_subscriptions_at_the_bottom" => "비활성화된 구독을 하단에 표시", "experimental_settings" => "실험적 설정", diff --git a/includes/i18n/pl.php b/includes/i18n/pl.php index fb5da2896..bc1122734 100644 --- a/includes/i18n/pl.php +++ b/includes/i18n/pl.php @@ -140,6 +140,7 @@ "smtp_username" => "Nazwa użytkownika SMTP", "smtp_password" => "Hasło SMTP", "from_email" => "Z adresu e-mail (opcjonalnie)", + "send_to_other_emails" => "Wyślij powiadomienia również na następujące adresy e-mail (użyj ; aby je rozdzielić):", "smtp_info" => "Hasło SMTP jest przesyłane i przechowywane w postaci zwykłego tekstu. Ze względów bezpieczeństwa utwórz konto tylko w tym celu.", "telegram" => "Telegram", "telegram_bot_token" => "Token bota", @@ -196,6 +197,8 @@ "save_custom_css" => "Zapisz niestandardowy CSS", "calculate_monthly_price" => "Oblicz i pokaż miesięczną cenę wszystkich subskrypcji", "convert_prices" => "Zawsze przeliczaj i pokazuj ceny w mojej głównej walucie (wolniej)", + "show_original_price" => "Pokaż również oryginalną cenę, gdy dokonywane są przeliczenia lub obliczenia", + "disabled_subscriptions" => "Wyłączone subskrypcje", "hide_disabled_subscriptions" => "Ukryj wyłączone subskrypcje", "show_disabled_subscriptions_at_the_bottom" => "Pokaż wyłączone subskrypcje na dole", "experimental_settings" => "Ustawienia eksperymentalne", diff --git a/includes/i18n/pt.php b/includes/i18n/pt.php index 1622572ef..50e41434b 100644 --- a/includes/i18n/pt.php +++ b/includes/i18n/pt.php @@ -140,6 +140,7 @@ "smtp_username" => "Utilizador SMTP", "smtp_password" => "Password SMTP", "from_email" => "Email de envio (Opcional)", + "send_to_other_emails" => "Também enviar notificações para os seguintes endereços de email (use ; para os separar):", "smtp_info" => "A Password é armazenada e transmitida em texto. Por segurança, crie uma conta só para esta finalidade.", "telegram" => "Telegram", "telegram_bot_token" => "Token do Bot Telegram", @@ -196,6 +197,8 @@ "save_custom_css" => "Guardar CSS Personalizado", "calculate_monthly_price" => "Calcular e mostrar preço mensal para todas as subscrições", "convert_prices" => "Converter e mostrar todas as subscrições na moeda principal (mais lento)", + "show_original_price" => "Também mostrar o preço original quando são feitas conversões ou cálculos", + "disabled_subscriptions" => "Subscrições Desactivadas", "hide_disabled_subscriptions" => "Esconder subscrições desactivadas", "show_disabled_subscriptions_at_the_bottom" => "Mostrar subscrições desactivadas no fundo da lista", "experimental_settings" => "Definições Experimentais", diff --git a/includes/i18n/pt_br.php b/includes/i18n/pt_br.php index 040418ccb..ed4f21e37 100644 --- a/includes/i18n/pt_br.php +++ b/includes/i18n/pt_br.php @@ -140,6 +140,7 @@ "smtp_username" => "Usuário SMTP", "smtp_password" => "Senha SMTP", "from_email" => "Email de envio (Opcional)", + "send_to_other_emails" => "Também enviar notificações para os seguintes endereços de email (use ; para separá-los):", "smtp_info" => "A senha do SMTP é transmitida em texto puro. Por segurança, crie uma conta só para esta finalidade.", "telegram" => "Telegram", "telegram_bot_token" => "Token do Bot", @@ -196,6 +197,8 @@ "save_custom_css" => "Salvar CSS Personalizado", "calculate_monthly_price" => "Calcular e exibir o custo mensal para todas as assinaturas", "convert_prices" => "Sempre converter e exibir preços na moeda principal (mais lento)", + "show_original_price" => "Também mostrar o preço original quando conversões ou cálculos são feitos", + "disabled_subscriptions" => "Assinaturas desativadas", "hide_disabled_subscriptions" => "Ocultar assinaturas desativadas", "show_disabled_subscriptions_at_the_bottom" => "Mostre as assinaturas desativadas no final da lista", "experimental_settings" => "Configurações experimentais", diff --git a/includes/i18n/ru.php b/includes/i18n/ru.php index b8be5bba4..4ec39da0a 100644 --- a/includes/i18n/ru.php +++ b/includes/i18n/ru.php @@ -140,6 +140,7 @@ "smtp_username" => "Имя пользователя SMTP", "smtp_password" => "Пароль SMTP", "from_email" => "От кого E-Mail (необязательно)", + "send_to_other_emails" => "Также отправлять уведомления на следующие адреса электронной почты (используйте ; для их разделения):", "smtp_info" => "Пароль SMTP передается и сохраняется в виде открытого текста. В целях безопасности создайте учетную запись только для Wallos.", "telegram" => "Telegram", "telegram_bot_token" => "Токен Telegram-бота", @@ -196,6 +197,8 @@ "save_custom_css" => "Сохранить пользовательский CSS", "calculate_monthly_price" => "Рассчитать и показать ежемесячную цену для всех подписок", "convert_prices" => "Всегда конвертировать и показывать цены в моей основной валюте (медленнее)", + "show_original_price" => "Также показывать оригинальную цену при выполнении конверсий или расчетов", + "disabled_subscriptions" => "Отключенные подписки", "hide_disabled_subscriptions" => "Скрыть отключенные подписки", "show_disabled_subscriptions_at_the_bottom" => "Показать отключенные подписки внизу списка", "experimental_settings" => "Экспериментальные настройки", diff --git a/includes/i18n/sl.php b/includes/i18n/sl.php index 16145e081..395fac72b 100644 --- a/includes/i18n/sl.php +++ b/includes/i18n/sl.php @@ -140,6 +140,7 @@ "smtp_username" => "Uporabniško ime SMTP", "smtp_password" => "Geslo SMTP", "from_email" => "Iz e-pošte (izbirno)", + "send_to_other_emails" => "Pošlji obvestila tudi na naslednje e-poštne naslove (uporabi ; za ločevanje):", "smtp_info" => "Geslo SMTP se prenaša in shranjuje v navadnem besedilu. Zaradi varnosti ustvarite račun samo za to.", "telegram" => "Telegram", "telegram_bot_token" => "Telegram Bot žeton", @@ -196,6 +197,8 @@ "save_custom_css" => "Shrani CSS po meri", "calculate_monthly_price" => "Izračunaj in prikaži mesečno ceno za vse naročnine", "convert_prices" => "Vedno pretvori in prikaži cene v moji glavni valuti (počasneje)", + "show_original_price" => "Prikaži tudi originalno ceno, ko se izvajajo pretvorbe ali izračuni", + "disabled_subscriptions" => "Onemogočene naročnine", "hide_disabled_subscriptions" => "Skrij onemogočene naročnine", "show_disabled_subscriptions_at_the_bottom" => "Prikaži onemogočene naročnine na dnu seznama", "experimental_settings" => "Eksperimentalne nastavitve", diff --git a/includes/i18n/sr.php b/includes/i18n/sr.php index 1e04ac3cd..75b124da9 100644 --- a/includes/i18n/sr.php +++ b/includes/i18n/sr.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP корисничко име", "smtp_password" => "SMTP лозинка", "from_email" => "Од е-поште (Опционо)", + "send_to_other_emails" => "Такође пошаљите обавештења на следеће адресе е-поште (користите ; за њихово раздвајање):", "smtp_info" => "SMTP лозинка се преноси и чува у обичном тексту. Из сигурносних разлога, молимо вас да направите налог само за ово.", "telegram" => "Телеграм", "telegram_bot_token" => "Телеграм бот токен", @@ -196,6 +197,8 @@ "save_custom_css" => "Сачувај прилагођени CSS", "calculate_monthly_price" => "Израчунајте и прикажите месечну цену за све претплате", "convert_prices" => "Увек конвертујте и прикажите цене на мојој главној валути (спорије)", + "show_original_price" => "Прикажи и оригиналну цену када се врше конверзије или прорачуни", + "disabled_subscriptions" => "Онемогућене претплате", "hide_disabled_subscriptions" => "Сакриј онемогућене претплате", "show_disabled_subscriptions_at_the_bottom" => "Прикажи онемогућене претплате на дну", "experimental_settings" => "Експериментална подешавања", diff --git a/includes/i18n/sr_lat.php b/includes/i18n/sr_lat.php index 4f42e82b0..5b78af93b 100644 --- a/includes/i18n/sr_lat.php +++ b/includes/i18n/sr_lat.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP korisničko ime", "smtp_password" => "SMTP lozinka", "from_email" => "Od e-pošte (Opciono)", + "send_to_other_emails" => "Takođe pošaljite obaveštenja na sledeće e-mail adrese (koristite ; za razdvajanje):", "smtp_info" => "SMTP lozinka se prenosi i čuva u običnom tekstu. Iz sigurnosnih razloga, molimo vas da napravite nalog samo za ovo.", "telegram" => "Telegram", "telegram_bot_token" => "Telegram bot token", @@ -196,6 +197,8 @@ "save_custom_css" => "Sačuvaj prilagođeni CSS", "calculate_monthly_price" => "Izračunaj i prikaži mesečnu cenu za sve pretplate", "convert_prices" => "Uvek konvertuj i prikaži cene u mojoj glavnoj valuti (sporije)", + "show_original_price" => "Prikaži i originalnu cenu kada se vrše konverzije ili proračuni", + "disabled_subscriptions" => "Onemogućene pretplate", "hide_disabled_subscriptions" => "Sakrij onemogućene pretplate", "show_disabled_subscriptions_at_the_bottom" => "Prikaži onemogućene pretplate na dnu", "experimental_settings" => "Eksperimentalna podešavanja", diff --git a/includes/i18n/tr.php b/includes/i18n/tr.php index 1c5baf6a5..9184ec033 100644 --- a/includes/i18n/tr.php +++ b/includes/i18n/tr.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP Kullanıcı Adı", "smtp_password" => "SMTP Şifresi", "from_email" => "Gönderen e-posta (İsteğe bağlı)", + "send_to_other_emails" => "Bildirimleri aşağıdaki e-posta adreslerine de gönder (ayırmak için ; kullanın):", "smtp_info" => "SMTP Şifresi düz metin olarak iletilir ve saklanır. Güvenlik için, lütfen bunun için özel bir hesap oluşturun.", "telegram" => "Telegram", "telegram_bot_token" => "Telegram Bot Token", @@ -196,6 +197,8 @@ "save_custom_css" => "Özel CSS'yi Kaydet", "calculate_monthly_price" => "Tüm aboneliklerin aylık fiyatını hesaplayın ve gösterin", "convert_prices" => "Fiyatları her zaman ana para birimimde dönüştürün ve gösterin (daha yavaş)", + "show_original_price" => "Dönüşümler veya hesaplamalar yapıldığında orijinal fiyatı da göster", + "disabled_subscriptions" => "Devre Dışı Bırakılan Abonelikler", "hide_disabled_subscriptions" => "Devre dışı bırakılan abonelikleri gizle", "show_disabled_subscriptions_at_the_bottom" => "Devre dışı bırakılan abonelikleri altta göster", "experimental_settings" => "Deneysel Ayarlar", diff --git a/includes/i18n/zh_cn.php b/includes/i18n/zh_cn.php index aee47e3cc..ac01dcb09 100644 --- a/includes/i18n/zh_cn.php +++ b/includes/i18n/zh_cn.php @@ -148,6 +148,7 @@ "smtp_username" => "SMTP 用户名", "smtp_password" => "SMTP 密码", "from_email" => "发件人邮箱(可选)", + "send_to_other_emails" => "还发送通知到以下电子邮件地址(使用 ; 分隔它们):", "smtp_info" => "SMTP 密码以明文传输和存储。为安全起见,建议专门为 Wallos 创建一个账户。", "telegram" => "Telegram", "telegram_bot_token" => "Telegram 机器人令牌", @@ -204,6 +205,8 @@ "save_custom_css" => "保存自定义 CSS", "calculate_monthly_price" => "计算并显示所有订阅的月价格", "convert_prices" => "始终按我的主要货币转换和显示价格(较慢)", + "show_original_price" => "当进行转换或计算时,也显示原始价格", + "disabled_subscriptions" => "已停用的订阅", "hide_disabled_subscriptions" => "隐藏已停用的订阅", "show_disabled_subscriptions_at_the_bottom" => "在订阅列表底部显示已停用的订阅", "experimental_settings" => "实验性设置", diff --git a/includes/i18n/zh_tw.php b/includes/i18n/zh_tw.php index be1e81163..275bea30b 100644 --- a/includes/i18n/zh_tw.php +++ b/includes/i18n/zh_tw.php @@ -140,6 +140,7 @@ "smtp_username" => "SMTP 使用者名稱", "smtp_password" => "SMTP 密碼", "from_email" => "寄件人信箱(可選)", + "send_to_other_emails" => "還發送通知到以下電子郵件地址(使用 ; 分隔它們):", "smtp_info" => "SMTP 密碼將以明文傳輸和儲存。為了安全起見,建議專門為 Wallos 建立一個帳戶。", "telegram" => "Telegram", "telegram_bot_token" => "Telegram 機器人令牌", @@ -196,6 +197,8 @@ "save_custom_css" => "儲存自訂 CSS", "calculate_monthly_price" => "計算並顯示所有訂閱的每月價格", "convert_prices" => "始終按照我的主要貨幣單位轉換和顯示價格(較慢)", + "show_original_price" => "當進行轉換或計算時,也顯示原始價格", + "disabled_subscriptions" => "停用的訂閱", "hide_disabled_subscriptions" => "隱藏已停用的訂閱", "show_disabled_subscriptions_at_the_bottom" => "將已停用的訂閱顯示在底部", "experimental_settings" => "實驗性設定", diff --git a/includes/list_subscriptions.php b/includes/list_subscriptions.php index c3794bdb0..10515d933 100644 --- a/includes/list_subscriptions.php +++ b/includes/list_subscriptions.php @@ -118,9 +118,21 @@ function printSubscriptions($subscriptions, $sort, $categories, $members, $i18n, - - + + + + + + + () + +