|
Server IP : 72.167.149.90 / Your IP : 216.73.216.228 Web Server : Apache System : Linux server.zoomride.app 4.18.0-553.158.1.el8_10.x86_64 #1 SMP Wed Aug 26 03:18:33 EDT 2026 x86_64 User : zoomride2022 ( 1001) PHP Version : 8.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0711) : /home/zoomride2022/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
$account->preferred_language = $lang;
$account->save();
}
break;
}
}
return redirect()->back();
}
public function usefulPage
CODE;
$contents = preg_replace(
$pattern,
$replacement,
$contents,
1,
$count
);
if ($count !== 1) {
throw new RuntimeException("Language-switch method was not located. Replacement count: {$count}");
}
if (file_put_contents($file, $contents) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
} else {
echo "Already updated: {$file}\n";
}
PHP
#1787321388
clear
#1787321390
php <<'PHP'
<?php
$files = [
'app/Http/Controllers/User/Auth/RegisterController.php' =>
'return User::create($data);',
'app/Http/Controllers/Merchant/Auth/RegisterController.php' =>
'return Merchant::create($data);',
'app/Http/Controllers/Agent/Auth/RegisterController.php' =>
'return Agent::create($data);',
];
foreach ($files as $file => $returnStatement) {
$contents = file_get_contents($file);
if ($contents === false) {
throw new RuntimeException("Unable to read {$file}");
}
if (str_contains($contents, "\$data['preferred_language']")) {
echo "Already updated: {$file}\n";
continue;
}
if (! str_contains($contents, $returnStatement)) {
throw new RuntimeException("Registration return statement not found in {$file}");
}
$replacement =
"\$data['preferred_language'] = in_array(app()->getLocale(), ['en', 'ar'], true)\n" .
" ? app()->getLocale()\n" .
" : 'en';\n\n" .
" {$returnStatement}";
$contents = str_replace(
$returnStatement,
$replacement,
$contents,
$count
);
if ($count !== 1) {
throw new RuntimeException("Unexpected replacement count in {$file}: {$count}");
}
if (file_put_contents($file, $contents) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787321400
clear
#1787321402
php -l app/Http/Controllers/SiteController.php
#1787321402
php -l app/Http/Controllers/User/Auth/RegisterController.php
#1787321403
php -l app/Http/Controllers/Merchant/Auth/RegisterController.php
#1787321403
php -l app/Http/Controllers/Agent/Auth/RegisterController.php
#1787321404
php artisan optimize:clear
#1787321412
grep -n -A 35 "function changeLanguage" app/Http/Controllers/SiteController.php
#1787321412
grep -n -B 3 -A 6 "preferred_language" app/Http/Controllers/User/Auth/RegisterController.php app/Http/Controllers/Merchant/Auth/RegisterController.php app/Http/Controllers/Agent/Auth/RegisterController.php
#1787321434
grep -n -A 35 "function changeLanguage" app/Http/Controllers/SiteController.php
#1787321434
grep -n -B 3 -A 6 "preferred_language" app/Http/Controllers/User/Auth/RegisterController.php app/Http/Controllers/Merchant/Auth/RegisterController.php app/Http/Controllers/Agent/Auth/RegisterController.php
#1787321444
php artisan tinker --execute='dump(App\Models\User::query()->select("id","email","preferred_language")->latest("id")->take(10)->get()->toArray());'
#1787321511
clear
#1787321514
cd /home/zoomride2022/public_html/syrpayment.com
#1787321514
cp app/Http/Controllers/Api/User/Auth/LoginController.php app/Http/Controllers/Api/User/Auth/LoginController.php.backup-language-20260821
#1787321514
cp app/Http/Controllers/Api/Merchant/Auth/LoginController.php app/Http/Controllers/Api/Merchant/Auth/LoginController.php.backup-language-20260821
#1787321514
cp app/Http/Controllers/Api/Agent/Auth/LoginController.php app/Http/Controllers/Api/Agent/Auth/LoginController.php.backup-language-20260821
#1787321514
cp app/Http/Middleware/Api/HandleLocalization.php app/Http/Middleware/Api/HandleLocalization.php.backup-language-20260821
#1787321523
php <<'PHP'
<?php
$files = [
'app/Http/Controllers/Api/User/Auth/LoginController.php',
'app/Http/Controllers/Api/Merchant/Auth/LoginController.php',
'app/Http/Controllers/Api/Agent/Auth/LoginController.php',
];
foreach ($files as $file) {
$contents = file_get_contents($file);
if ($contents === false) {
throw new RuntimeException("Unable to read {$file}");
}
if (str_contains($contents, '$user->preferred_language')) {
echo "Already updated: {$file}\n";
continue;
}
$target = '$user->registered_by';
$position = strpos($contents, $target);
if ($position === false) {
throw new RuntimeException("registered_by assignment not found in {$file}");
}
$lineEnd = strpos($contents, "\n", $position);
if ($lineEnd === false) {
throw new RuntimeException("Unable to locate end of registered_by line in {$file}");
}
$insertion = <<<'CODE'
$user->preferred_language = in_array(app()->getLocale(), ['en', 'ar'], true)
? app()->getLocale()
: 'en';
CODE;
$contents = substr_replace(
$contents,
$insertion,
$lineEnd,
0
);
if (file_put_contents($file, $contents) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787321532
cat > app/Http/Middleware/Api/HandleLocalization.php <<'PHP'
<?php
namespace App\Http\Middleware\Api;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class HandleLocalization
{
public function handle(Request $request, Closure $next)
{
$allowedLanguages = ['en', 'ar'];
$requestedLanguage = $request->get('lang');
$account = $request->user();
if (in_array($requestedLanguage, $allowedLanguages, true)) {
App::setLocale($requestedLanguage);
if (
$account &&
isset($account->preferred_language) &&
$account->preferred_language !== $requestedLanguage
) {
$account->preferred_language = $requestedLanguage;
$account->save();
}
} elseif (
$account &&
method_exists($account, 'preferredLocale')
) {
App::setLocale($account->preferredLocale());
} else {
App::setLocale('en');
}
return $next($request);
}
}
PHP
#1787321540
php -l app/Http/Controllers/Api/User/Auth/LoginController.php
#1787321540
php -l app/Http/Controllers/Api/Merchant/Auth/LoginController.php
#1787321540
php -l app/Http/Controllers/Api/Agent/Auth/LoginController.php
#1787321540
php -l app/Http/Middleware/Api/HandleLocalization.php
#1787321542
php artisan optimize:clear
#1787321549
grep -n -B 3 -A 6 "preferred_language" app/Http/Controllers/Api/User/Auth/LoginController.php app/Http/Controllers/Api/Merchant/Auth/LoginController.php app/Http/Controllers/Api/Agent/Auth/LoginController.php
#1787321557
php artisan tinker --execute='dump(App\Models\User::where("email","basel.alyasin@gmail.com")->first()?->only(["email","preferred_language"]));'
#1787321602
clear
#1787321605
cd /home/zoomride2022/public_html/syrpayment.com
#1787321605
cp app/Http/Middleware/LanguageMiddleware.php app/Http/Middleware/LanguageMiddleware.php.backup-preference-20260821
#1787321611
cat > app/Http/Middleware/LanguageMiddleware.php <<'PHP'
<?php
namespace App\Http\Middleware;
use App\Models\Admin\Language;
use Closure;
class LanguageMiddleware
{
public function handle($request, Closure $next)
{
$allowedLanguages = ['en', 'ar'];
$locale = null;
/*
* For authenticated accounts, the database preference is authoritative.
*/
foreach (['web', 'merchant', 'agent'] as $guard) {
if (auth()->guard($guard)->check()) {
$account = auth()->guard($guard)->user();
$preferred = $account->preferred_language ?? null;
if (in_array($preferred, $allowedLanguages, true)) {
$locale = $preferred;
}
break;
}
}
/*
* Guests continue using the language selected in their session.
*/
if (! $locale) {
$sessionLanguage = session('local') ?? session('lang');
if (in_array($sessionLanguage, $allowedLanguages, true)) {
$locale = $sessionLanguage;
}
}
/*
* Final fallback is the configured default language, then English.
*/
if (! $locale) {
$locale = $this->getCode();
}
if (! in_array($locale, $allowedLanguages, true)) {
$locale = 'en';
}
session()->put('local', $locale);
session()->put('lang', $locale);
app()->setLocale($locale);
return $next($request);
}
public function getCode()
{
$language = Language::where('status', 1)->first();
return $language ? $language->code : 'en';
}
}
PHP
#1787321621
php -l app/Http/Middleware/LanguageMiddleware.php
#1787321621
php artisan optimize:clear
#1787321629
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->firstOrFail(); $u->preferred_language="ar"; $u->save(); dump($u->only(["email","preferred_language"]));'
#1787321642
find lang resources/lang -maxdepth 2 -type f -print 2>/dev/null | sort
#1787321648
grep -Rni -E '"Regards,"|"Hello!"|"Whoops!"|having trouble clicking|Thank you for using' lang resources/lang 2>/dev/null | head -100
#1787321802
clear
#1787321805
grep -RniE 'Regards|Hello|Whoops|having trouble|Thank you' lang resources/lang 2>/dev/null | head -50
#1787321849
clear
#1787321852
grep -RniE 'Regards|Hello|Whoops|having trouble|Thank you' lang/ar* resources/lang/ar* 2>/dev/null
#1787321871
clear
#1787321878
grep -RniE 'Regards|Hello|Whoops|having trouble|Thank you' lang resources/lang 2>/dev/null | head -50
#1787321909
clear
#1787321912
find lang resources/lang -maxdepth 2 -type f -print 2>/dev/null | sort
#1787321951
clear
#1787321953
find lang resources/lang -maxdepth 2 -type f -print 2>/dev/null | sort
#1787321998
clear
#1787322002
php artisan tinker --execute='foreach(["Hello!","Whoops!","Regards,","Thank you for using our application!","If you'\''re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:"] as $k) dump([$k => __($k,[],"ar")]);'
#1787322031
clear
#1787322035
cd /home/zoomride2022/public_html/syrpayment.com
#1787322036
cp lang/ar.json lang/ar.json.backup-email-20260821
#1787322048
php <<'PHP'
<?php
$file = 'lang/ar.json';
$data = json_decode(file_get_contents($file), true, 512, JSON_THROW_ON_ERROR);
$data['Hello!'] = 'مرحباً!';
$data['Whoops!'] = 'عذراً!';
$data['Regards,'] = 'مع تحياتنا،';
$data["If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:"] =
"إذا واجهت مشكلة في الضغط على زر \":actionText\"، فانسخ الرابط أدناه والصقه في متصفحك:";
file_put_contents(
$file,
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL
);
echo "Arabic email translations updated.\n";
PHP
#1787322056
php -r 'json_decode(file_get_contents("lang/ar.json"), true, 512, JSON_THROW_ON_ERROR); echo "Valid JSON\n";'
#1787322056
php artisan optimize:clear
#1787322064
php artisan tinker --execute='foreach(["Hello!","Whoops!","Regards,"] as $k) dump([$k => __($k,[],"ar")]);'
#1787322108
clear
#1787322118
php artisan tinker --execute='$k="If you'\''re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:"; dump(__($k,["actionText"=>"SyrPayment"],"ar"));'
#1787322125
sed -n '1,180p' resources/views/vendor/mail/html/layout.blade.php
#1787322134
grep -n -B 5 -A 12 "Salutation" resources/views/vendor/notifications/email.blade.php
#1787322163
clear
#1787322166
cp resources/views/vendor/mail/html/layout.blade.php resources/views/vendor/mail/html/layout.blade.php.backup-rtl-20260821
#1787322166
cp resources/views/vendor/notifications/email.blade.php resources/views/vendor/notifications/email.blade.php.backup-rtl-20260821
#1787322175
php <<'PHP'
<?php
$file = 'resources/views/vendor/mail/html/layout.blade.php';
$content = file_get_contents($file);
$replacements = [
'<!DOCTYPE html' =>
"@php(\$isRtl = app()->getLocale() === 'ar')\n<!DOCTYPE html",
'<html xmlns="http://www.w3.org/1999/xhtml">' =>
'<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ app()->getLocale() }}" dir="{{ $isRtl ? \'rtl\' : \'ltr\' }}">',
'<body>' =>
'<body dir="{{ $isRtl ? \'rtl\' : \'ltr\' }}" style="direction: {{ $isRtl ? \'rtl\' : \'ltr\' }}; text-align: {{ $isRtl ? \'right\' : \'left\' }};">',
'<td class="content-cell">' =>
'<td class="content-cell" dir="{{ $isRtl ? \'rtl\' : \'ltr\' }}" align="{{ $isRtl ? \'right\' : \'left\' }}" style="direction: {{ $isRtl ? \'rtl\' : \'ltr\' }}; text-align: {{ $isRtl ? \'right\' : \'left\' }};">',
];
foreach ($replacements as $old => $new) {
if (! str_contains($content, $old)) {
throw new RuntimeException("Expected layout code not found: {$old}");
}
$content = str_replace($old, $new, $content, $count);
if ($count !== 1) {
throw new RuntimeException("Unexpected replacement count for {$old}: {$count}");
}
}
file_put_contents($file, $content);
echo "Email RTL/LTR layout updated.\n";
PHP
#1787322182
php <<'PHP'
<?php
$file = 'resources/views/vendor/notifications/email.blade.php';
$content = file_get_contents($file);
$old = <<<'BLADE'
@lang('Regards,')<br>
{{ config('app.name') }}
BLADE;
$new = <<<'BLADE'
@lang('Regards,')<br>
{{ app()->getLocale() === 'ar' ? 'مدفوعات سوريا' : 'SyrPayment' }}
BLADE;
if (! str_contains($content, $old)) {
throw new RuntimeException('Notification signature code was not found.');
}
$content = str_replace($old, $new, $content, $count);
if ($count !== 1) {
throw new RuntimeException("Unexpected signature replacement count: {$count}");
}
file_put_contents($file, $content);
echo "Localized email signature updated.\n";
PHP
#1787322189
php artisan view:clear
#1787322190
php artisan optimize:clear
#1787322197
grep -nE 'isRtl|lang=|dir=|content-cell' resources/views/vendor/mail/html/layout.blade.php
#1787322197
grep -n -A 4 "Regards" resources/views/vendor/notifications/email.blade.php
#1787322306
clear
#1787322315
sed -n '1,160p' resources/views/vendor/mail/html/footer.blade.php
#1787322321
grep -RniE 'SyrPayment|config.*app.name' resources/views/vendor/mail resources/views/vendor/notifications --exclude='*.backup*'
#1787322350
clear
#1787322353
sed -n '1,80p' resources/views/vendor/mail/html/message.blade.php
#1787322354
sed -n '1,80p' resources/views/vendor/mail/text/message.blade.php
#1787322360
php artisan tinker --execute='dump(__("All rights reserved.",[],"ar"));'
#1787322400
clear
#1787322403
cp resources/views/vendor/mail/html/message.blade.php resources/views/vendor/mail/html/message.blade.php.backup-language-20260821
#1787322403
cp resources/views/vendor/mail/text/message.blade.php resources/views/vendor/mail/text/message.blade.php.backup-language-20260821
#1787322411
php <<'PHP'
<?php
$files = [
'resources/views/vendor/mail/html/message.blade.php',
'resources/views/vendor/mail/text/message.blade.php',
];
$old = "{{ config('app.name') }}";
$new = "{{ app()->getLocale() === 'ar' ? 'مدفوعات سوريا' : 'SyrPayment' }}";
foreach ($files as $file) {
$content = file_get_contents($file);
if ($content === false) {
throw new RuntimeException("Unable to read {$file}");
}
$count = substr_count($content, $old);
if ($count !== 2) {
throw new RuntimeException("Expected 2 brand references in {$file}; found {$count}");
}
$content = str_replace($old, $new, $content);
if (file_put_contents($file, $content) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787322420
php <<'PHP'
<?php
$file = 'lang/ar.json';
$data = json_decode(file_get_contents($file), true, 512, JSON_THROW_ON_ERROR);
$data['All rights reserved.'] = 'جميع الحقوق محفوظة.';
file_put_contents(
$file,
json_encode(
$data,
JSON_UNESCAPED_UNICODE |
JSON_UNESCAPED_SLASHES |
JSON_PRETTY_PRINT
) . PHP_EOL
);
echo "Arabic footer translation added.\n";
PHP
#1787322429
php -r 'json_decode(file_get_contents("lang/ar.json"), true, 512, JSON_THROW_ON_ERROR); echo "Valid JSON\n";'
#1787322429
php artisan optimize:clear
#1787322436
grep -RniE "مدفوعات سوريا|All rights reserved" resources/views/vendor/mail/html/message.blade.php resources/views/vendor/mail/text/message.blade.php
#1787322437
php artisan tinker --execute='dump(__("All rights reserved.",[],"ar"));'
#1787322481
clear
#1787322484
grep -Rli --exclude-dir=vendor -E 'extends Notification|new MailMessage' app | head -30
#1787322492
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->first(); dump($u?->only(["id","email","status","preferred_language"]));'
#1787322524
clear
#1787322528
find app/Notifications/User -type f -name '*.php' -print | head -30
#1787322535
sed -n '1,220p' app/Notifications/User/Auth/SendVerifyCode.php
#1787322543
find app/Notifications -type f -iname '*verify*code*.php' -print
#1787322608
clear
#1787322612
php artisan tinker --execute='foreach(["Hello","Verification Code ( Register )","You are trying to verify code for register.","Here is your OTP","Thank you for using our application!"] as $k) dump([$k=>__($k,[],"ar")]);'
#1787322646
clear
#1787322649
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->firstOrFail(); dump(["app_locale_before"=>app()->getLocale(),"user_preference"=>$u->preferredLocale()]); $u->notify(new App\Notifications\User\Auth\SendVerifyCode($u->email,"482193")); dump("Arabic verification email sent.");'
#1787322911
grep -nE '^h1|^h2|^h3|^p |^\.content-cell|^\.subcopy|text-align' resources/views/vendor/mail/html/themes/default.css | head -80
#1787322919
clear
#1787323024
cd home/zoomride2022/public_html/syrpayment.com
#1787323072
clear
#1787323077
cd /home/zoomride2022/public_html/syrpayment.com
#1787323086
grep -nE '^h1|^h2|^h3|^p |^\.content-cell|^\.subcopy|text-align' resources/views/vendor/mail/html/themes/default.css | head -80
#1787323095
tail -90 resources/views/vendor/mail/html/themes/default.css
#1787323147
clear
#1787323150
cp resources/views/vendor/mail/html/themes/default.css resources/views/vendor/mail/html/themes/default.css.backup-rtl-20260821
#1787323157
php <<'PHP'
<?php
$file = 'resources/views/vendor/mail/html/themes/default.css';
$content = file_get_contents($file);
$marker = '/* SyrPayment Arabic RTL email */';
if (str_contains($content, $marker)) {
echo "RTL email CSS already exists.\n";
exit;
}
$rtlCss = <<<'CSS'
/* SyrPayment Arabic RTL email */
html[dir="rtl"] .inner-body {
direction: rtl !important;
}
html[dir="rtl"] .content-cell {
direction: rtl !important;
text-align: right !important;
}
html[dir="rtl"] .content-cell h1,
html[dir="rtl"] .content-cell h2,
html[dir="rtl"] .content-cell h3,
html[dir="rtl"] .content-cell p {
direction: rtl !important;
text-align: right !important;
}
html[dir="rtl"] .subcopy,
html[dir="rtl"] .subcopy p {
direction: rtl !important;
text-align: right !important;
}
html[dir="rtl"] .content-cell h1,
html[dir="rtl"] .content-cell p {
unicode-bidi: plaintext;
}
CSS;
if (file_put_contents($file, $content . $rtlCss) === false) {
throw new RuntimeException("Unable to update {$file}");
}
echo "Arabic RTL email CSS added.\n";
PHP
#1787323168
php artisan view:clear
#1787323169
php artisan optimize:clear
#1787323178
tail -45 resources/views/vendor/mail/html/themes/default.css
#1787323189
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->firstOrFail(); $u->notify(new App\Notifications\User\Auth\SendVerifyCode($u->email,"739214")); dump(["sent"=>true,"language"=>$u->preferredLocale()]);'
#1787323382
clear
#1787323387
grep -Rni --exclude-dir=vendor -E "Update Profile|Profile Information|profile.update|updateProfile" resources/views/user app/Http/Controllers/User routes | head -50
#1787323395
grep -Rni --exclude-dir=vendor -E "Update Profile|Profile Information|profile.update|updateProfile" resources/views/merchant resources/views/agent app/Http/Controllers/Merchant app/Http/Controllers/Agent routes | head -80
#1787323427
clear
#1787323430
grep -Rni -E "name\(['\"]profile\.|profile\.update|function profileUpdate|function update" routes/web.php routes/user.php routes/merchant.php routes/agent.php app/Http/Controllers/User app/Http/Controllers/Merchant app/Http/Controllers/Agent 2>/dev/null | head -100
#1787323439
sed -n '1,150p' resources/views/user/sections/profile/index.blade.php
#1787323456
clear
#1787323461
sed -n '1,150p' resources/views/merchant/sections/profile/index.blade.php
#1787323470
sed -n '1,150p' resources/views/agent/sections/profile/index.blade.php
#1787323564
clear
#1787323569
sed -n '1,130p' app/Http/Controllers/User/ProfileController.php
#1787323584
sed -n '1,130p' app/Http/Controllers/Agent/ProfileController.php
#1787323647
clear
#1787323652
sed -n '1,140p' app/Http/Controllers/Merchant/ProfileController.php
#1787323692
clear
#1787323696
for file in app/Http/Controllers/User/ProfileController.php app/Http/Controllers/Merchant/ProfileController.php app/Http/Controllers/Agent/ProfileController.php resources/views/user/sections/profile/index.blade.php resources/views/merchant/sections/profile/index.blade.php resources/views/agent/sections/profile/index.blade.php; do cp "$file" "$file.backup-preferred-language-20260821"; done
#1787323704
php <<'PHP'
<?php
$files = [
'app/Http/Controllers/User/ProfileController.php',
'app/Http/Controllers/Merchant/ProfileController.php',
'app/Http/Controllers/Agent/ProfileController.php',
];
foreach ($files as $file) {
$content = file_get_contents($file);
if ($content === false) {
throw new RuntimeException("Unable to read {$file}");
}
if (str_contains($content, "'preferred_language' => \"required|string|in:en,ar\"")) {
echo "Already updated: {$file}\n";
continue;
}
$target = ' \'image\' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",';
$replacement = <<<'PHP_CODE'
'preferred_language' => "required|string|in:en,ar",
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
PHP_CODE;
if (! str_contains($content, $target)) {
throw new RuntimeException("Image validation line not found in {$file}");
}
$content = str_replace($target, $replacement, $content, $count);
if ($count !== 1) {
throw new RuntimeException("Unexpected replacement count in {$file}: {$count}");
}
if (file_put_contents($file, $content) === false) {
throw new RuntimeException("Unable to update {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787323713
php <<'PHP'
<?php
$files = [
'resources/views/user/sections/profile/index.blade.php',
'resources/views/merchant/sections/profile/index.blade.php',
'resources/views/agent/sections/profile/index.blade.php',
];
$field = <<<'BLADE'
<div class="col-xl-6 col-lg-6 form-group">
<label>{{ __('Preferred Communication Language') }}<span>*</span></label>
<select name="preferred_language" class="form--control">
<option value="en"
@selected(old('preferred_language', auth()->user()->preferred_language ?? 'en') === 'en')>
{{ __('English') }}
</option>
<option value="ar"
@selected(old('preferred_language', auth()->user()->preferred_language ?? 'en') === 'ar')>
{{ __('Arabic') }}
</option>
</select>
<small class="text-muted">
{{ __('Emails, SMS messages, and account notifications will use this language.') }}
</small>
</div>
BLADE;
$target = <<<'BLADE'
<div class="col-xl-6 col-lg-6 form-group">
<label>{{ __('country') }}<span>*</span></label>
BLADE;
foreach ($files as $file) {
$content = file_get_contents($file);
if ($content === false) {
throw new RuntimeException("Unable to read {$file}");
}
if (str_contains($content, 'name="preferred_language"')) {
echo "Already updated: {$file}\n";
continue;
}
if (! str_contains($content, $target)) {
throw new RuntimeException("Country field was not found in {$file}");
}
$content = str_replace($target, $field . $target, $content, $count);
if ($count !== 1) {
throw new RuntimeException("Unexpected insertion count in {$file}: {$count}");
}
if (file_put_contents($file, $content) === false) {
throw new RuntimeException("Unable to update {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787323722
php <<'PHP'
<?php
$file = 'lang/ar.json';
$data = json_decode(file_get_contents($file), true, 512, JSON_THROW_ON_ERROR);
$data['Preferred Communication Language'] = 'لغة التواصل المفضلة';
$data['Emails, SMS messages, and account notifications will use this language.'] =
'سيتم استخدام هذه اللغة في رسائل البريد الإلكتروني والرسائل النصية وإشعارات الحساب.';
$data['English'] = 'الإنجليزية';
$data['Arabic'] = 'العربية';
file_put_contents(
$file,
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL
);
echo "Profile language translations added.\n";
PHP
#1787323730
php -l app/Http/Controllers/User/ProfileController.php
#1787323730
php -l app/Http/Controllers/Merchant/ProfileController.php
#1787323730
php -l app/Http/Controllers/Agent/ProfileController.php
#1787323730
php -r 'json_decode(file_get_contents("lang/ar.json"), true, 512, JSON_THROW_ON_ERROR); echo "Valid JSON\n";'
#1787323730
php artisan optimize:clear
#1787323933
clear
#1787323936
cd /home/zoomride2022/public_html/syrpayment.com
#1787323936
grep -Rni --exclude-dir=vendor "Information of User" resources/views app/Http/Controllers | head -20
#1787323946
grep -Rni --exclude-dir=vendor -E "email_verified.*sms_verified|two_factor_status.*kyc_verified" app/Http/Controllers/Admin | head -30
#1787323993
clear
#1787323997
cd /home/zoomride2022/public_html/syrpayment.com
#1787323997
sed -n '160,270p' resources/views/admin/sections/user-care/details.blade.php
#1787324004
grep -nE '<form|action=|method=|name=' resources/views/admin/sections/user-care/details.blade.php | tail -50
#1787324011
grep -Rni -E "user-care|user.details|user.update|details.update" routes/admin.php | head -50
#1787324068
clear
#1787324071
cd /home/zoomride2022/public_html/syrpayment.com
#1787324072
sed -n '320,405p' routes/admin.php
#1787324079
grep -Rni --exclude-dir=vendor "function userDetailsUpdate" app/Http/Controllers/Admin
#1787324086
sed -n '250,325p' resources/views/admin/sections/user-care/details.blade.php
#1787324148
clear
#1787324151
cd /home/zoomride2022/public_html/syrpayment.com
#1787324151
sed -n '225,310p' app/Http/Controllers/Admin/UserCareController.php
#1787324151
sed -n '145,225p' app/Http/Controllers/Admin/MerchantCareController.php
#1787324152
sed -n '135,215p' app/Http/Controllers/Admin/AgentCareController.php
#1787324160
grep -Rni --exclude-dir=vendor -E "admin\.merchants\.details\.update|admin\.agents\.details\.update" resources/views/admin | head -20
#1787324216
clear
#1787324220
cd /home/zoomride2022/public_html/syrpayment.com
#1787324220
cp app/Http/Controllers/Admin/UserCareController.php app/Http/Controllers/Admin/UserCareController.php.backup-language-admin-20260821
#1787324220
cp app/Http/Controllers/Admin/MerchantCareController.php app/Http/Controllers/Admin/MerchantCareController.php.backup-language-admin-20260821
#1787324220
cp app/Http/Controllers/Admin/AgentCareController.php app/Http/Controllers/Admin/AgentCareController.php.backup-language-admin-20260821
#1787324220
cp resources/views/admin/sections/user-care/details.blade.php resources/views/admin/sections/user-care/details.blade.php.backup-language-admin-20260821
#1787324220
cp resources/views/admin/sections/merchant-care/details.blade.php resources/views/admin/sections/merchant-care/details.blade.php.backup-language-admin-20260821
#1787324220
cp resources/views/admin/sections/agent-care/details.blade.php resources/views/admin/sections/agent-care/details.blade.php.backup-language-admin-20260821
#1787324236
php <<'PHP'
<?php
$files = [
'app/Http/Controllers/Admin/UserCareController.php',
'app/Http/Controllers/Admin/MerchantCareController.php',
'app/Http/Controllers/Admin/AgentCareController.php',
];
foreach ($files as $file) {
$content = file_get_contents($file);
if ($content === false) {
throw new RuntimeException("Unable to read {$file}");
}
$methodPosition = strpos($content, 'public function userDetailsUpdate');
if ($methodPosition === false) {
throw new RuntimeException("Update method not found in {$file}");
}
$statusPosition = strpos(
$content,
"'email_verified'",
$methodPosition
);
if ($statusPosition === false) {
throw new RuntimeException("Validation anchor not found in {$file}");
}
$methodSection = substr(
$content,
$methodPosition,
$statusPosition - $methodPosition
);
if (str_contains($methodSection, "'preferred_language'")) {
echo "Already updated: {$file}\n";
continue;
}
$lineStart = strrpos(
substr($content, 0, $statusPosition),
"\n"
) + 1;
$newRule = " 'preferred_language' => 'required|string|in:en,ar',\n";
$content = substr_replace(
$content,
$newRule,
$lineStart,
0
);
if (file_put_contents($file, $content) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787324250
php <<'PHP'
<?php
$views = [
'resources/views/admin/sections/user-care/details.blade.php'
=> "admin.users.details.update",
'resources/views/admin/sections/merchant-care/details.blade.php'
=> "admin.merchants.details.update",
'resources/views/admin/sections/agent-care/details.blade.php'
=> "admin.agents.details.update",
];
$field = <<<'BLADE'
<div class="col-xl-6 col-lg-6 form-group">
<label>
{{ __("Preferred Communication Language") }}
<span>*</span>
</label>
<select name="preferred_language"
class="form--control nice-select"
required>
<option value="en"
@selected(old('preferred_language', $user->preferred_language ?? 'en') === 'en')>
{{ __("English") }}
</option>
<option value="ar"
@selected(old('preferred_language', $user->preferred_language ?? 'en') === 'ar')>
{{ __("Arabic") }}
</option>
</select>
<small class="text-muted">
{{ __("Emails, SMS messages, and account notifications will use this language.") }}
</small>
@error("preferred_language")
<span class="invalid-feedback d-block" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
BLADE;
foreach ($views as $file => $route) {
$content = file_get_contents($file);
if ($content === false) {
throw new RuntimeException("Unable to read {$file}");
}
if (str_contains($content, 'name="preferred_language"')) {
echo "Already updated: {$file}\n";
continue;
}
$formMarker = "action=\"{{ setRoute('{$route}',\$user->username) }}\"";
$formPosition = strpos($content, $formMarker);
if ($formPosition === false) {
throw new RuntimeException("Admin update form not found in {$file}");
}
$switcherPosition = strpos(
$content,
"@include('admin.components.form.switcher'",
$formPosition
);
if ($switcherPosition === false) {
throw new RuntimeException("First switcher not found in {$file}");
}
$containerPosition = strrpos(
substr($content, 0, $switcherPosition),
'<div class="col-xl-3'
);
if ($containerPosition === false) {
throw new RuntimeException("Switcher container not found in {$file}");
}
$content = substr_replace(
$content,
$field,
$containerPosition,
0
);
if (file_put_contents($file, $content) === false) {
throw new RuntimeException("Unable to write {$file}");
}
echo "Updated: {$file}\n";
}
PHP
#1787324260
cp lang/ar.json lang/ar.json.backup-language-admin-20260821
#1787324260
php <<'PHP'
<?php
$file = 'lang/ar.json';
$data = json_decode(
file_get_contents($file),
true,
512,
JSON_THROW_ON_ERROR
);
$data['Preferred Communication Language'] = 'لغة التواصل المفضلة';
$data['English'] = 'الإنجليزية';
$data['Arabic'] = 'العربية';
$data['Emails, SMS messages, and account notifications will use this language.']
= 'سيتم استخدام هذه اللغة في رسائل البريد الإلكتروني والرسائل النصية وإشعارات الحساب.';
file_put_contents(
$file,
json_encode(
$data,
JSON_UNESCAPED_UNICODE |
JSON_UNESCAPED_SLASHES |
JSON_PRETTY_PRINT
) . PHP_EOL
);
echo "Arabic translations updated.\n";
PHP
#1787324269
php -l app/Http/Controllers/Admin/UserCareController.php
#1787324269
php -l app/Http/Controllers/Admin/MerchantCareController.php
#1787324270
php -l app/Http/Controllers/Admin/AgentCareController.php
#1787324270
php -r 'json_decode(file_get_contents("lang/ar.json"), true, 512, JSON_THROW_ON_ERROR); echo "Valid JSON\n";'
#1787324270
grep -Rni "preferred_language" app/Http/Controllers/Admin/UserCareController.php app/Http/Controllers/Admin/MerchantCareController.php app/Http/Controllers/Admin/AgentCareController.php resources/views/admin/sections/user-care/details.blade.php resources/views/admin/sections/merchant-care/details.blade.php resources/views/admin/sections/agent-care/details.blade.php
#1787324271
php artisan optimize:clear
#1787324279
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->first(); dump($u?->only(["email","preferred_language"]));'
#1787324374
clear
#1787324376
cd /home/zoomride2022/public_html/syrpayment.com
#1787324377
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->firstOrFail(); dump(["email"=>$u->email,"stored"=>$u->preferred_language,"notification_locale"=>$u->preferredLocale()]);'
#1787324386
php artisan tinker --execute='$u=App\Models\User::where("email","basel.alyasin@gmail.com")->firstOrFail(); $u->notify(new App\Notifications\User\Auth\SendVerifyCode($u->email,"864219")); dump("Localized test email sent.");'
#1787341129
cd /home/zoomride2022/public_html/syrpayment.com
#1787341130
grep -nF '"Hello!"' lang/*.json
#1787341142
grep -Rni -B 15 -A 25 --exclude-dir=vendor "Duplicate Key Found" app routes
#1787341150
php -r '
foreach (glob("lang/*.json") as $file) {
try {
json_decode(
file_get_contents($file),
true,
512,
JSON_THROW_ON_ERROR
);
echo "VALID: {$file}\n";
} catch (Throwable $e) {
echo "INVALID: {$file} — {$e->getMessage()}\n";
}
}
'
#1787341247
clear
#1787341251
grep -nE '"Hello!?":[[:space:]]*' lang/ar.json
#1787341260
cp lang/ar.json lang/ar.json.backup-flutter-language-20260821
#1787341267
php <<'PHP'
<?php
$file = 'lang/ar.json';
$data = json_decode(
file_get_contents($file),
true,
512,
JSON_THROW_ON_ERROR
);
$data['Hello'] = 'مرحباً';
$data['Hello!'] = 'مرحباً';
file_put_contents(
$file,
json_encode(
$data,
JSON_UNESCAPED_UNICODE |
JSON_UNESCAPED_SLASHES |
JSON_PRETTY_PRINT
) . PHP_EOL
);
echo "Aligned Hello translation keys.\n";
PHP
#1787341276
php -r 'json_decode(file_get_contents("lang/ar.json"), true, 512, JSON_THROW_ON_ERROR); echo "Valid JSON\n";'
#1787341277
php artisan optimize:clear
#1787341286
curl -sS -H "Accept: application/json" "https://syrpayment.com/api/app-settings/languages?lang=en" | head -c 300
#1787341287
echo
#1787342567
cd /home/zoomride2022/public_html/syrpayment.com
#1787342567
grep -n -B 15 -A 35 -E "credentials|function login|function sendCode|function forgot" app/Http/Controllers/Api/User/Auth/LoginController.php
#1787342578
Select-String `
-Path lib\backend\services\api_services.dart `
#1787342578
-Pattern "login_type|sendForgotOTPEmail|forget/password" `
-Context 15,25
#1787342605
Get-Content lib\controller\auth\login\signin_controller.dart | Select-Object -Skip 220 -First 80