/home/brandsfa/.trash/app/Services/LanguageService.php
<?php
namespace App\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
class LanguageService
{
public function getAddData(object $request, object $language): array
{
$languageArray = [];
$codes = [];
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] != $request['code']) {
if (!array_key_exists('default', $data)) {
$default = array('default' => $data['code'] == 'en');
$data = array_merge($data, $default);
}
$languageArray[] = $data;
$codes[] = $data['code'];
}
}
$codes[] = $request['code'];
if (!file_exists(base_path('resources/lang/' . $request['code']))) {
mkdir(base_path('resources/lang/' . $request['code']), 0777, true);
}
$lang_file = fopen(base_path('resources/lang/' . $request['code'] . '/' . 'messages.php'), "w") or die("Unable to open file!");
$read = file_get_contents(base_path('resources/lang/en/messages.php'));
fwrite($lang_file, $read);
$languageValue = json_decode($language['value'], true);
$languageCount = count($languageValue);
$id = $languageValue[$languageCount-1]['id']+1;
$languageArray[] = [
'id' => $id,
'name' => $request['name'],
'code' => $request['code'],
'direction' => $request['direction'],
'status' => 0,
'default' => false,
];
return [
'languages' => $languageArray,
'codes' => $codes,
];
}
public function getStatusData(object $request, object $language): array
{
$languageArray = [];
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] == $request['code']) {
$lang = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => $data['status'] == 1 ? 0 : 1,
'default' => (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'),
];
} else {
$lang = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => $data['status'],
'default' => (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'),
];
}
$languageArray[] = $lang;
}
return $languageArray;
}
public function getDefaultData(object $request, object $language): array
{
$languageArray = [];
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] == $request['code']) {
$lang = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => 1,
'default' => true,
];
} else {
$lang = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => $data['status'],
'default' => false,
];
}
$languageArray[] = $lang;
}
return $languageArray;
}
public function getUpdateData(object $request, object $language): array
{
$languageArray = [];
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] == $request['code']) {
$lang = [
'id' => $data['id'],
'name' => $request['name'],
'direction' => $request['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => 0,
'default' => (array_key_exists('default', $data) ? $data['default'] : (($data['code'] == 'en') ? true : false)),
];
} else {
$lang = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => $data['status'],
'default' => (array_key_exists('default', $data) ? $data['default'] : (($data['code'] == 'en') ? true : false)),
];
}
$languageArray[] = $lang;
}
return $languageArray;
}
public function getLangDelete(object $language, string $code): array
{
$del_default = false;
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] == $code && array_key_exists('default', $data) && $data['default']) {
$del_default = true;
}
}
$languageArray = [];
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] != $code) {
$lang_data = [
'id' => $data['id'],
'name' => $data['name'],
'direction' => $data['direction'] ?? 'ltr',
'code' => $data['code'],
'status' => ($del_default && $data['code'] == 'en') ? 1 : $data['status'],
'default' => ($del_default && $data['code'] == 'en') ? true : (array_key_exists('default', $data) ? $data['default'] : $data['code'] == 'en'),
];
$languageArray[] = $lang_data;
}
}
$dir = base_path('resources/lang/' . $code);
if (File::isDirectory($dir)) {
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($files as $file) {
if ($file->isDir()) {
rmdir($file->getRealPath());
} else {
unlink($file->getRealPath());
}
}
rmdir($dir);
}
return $languageArray;
}
}