• You MUST read the Babiato Rules before making your first post otherwise you may get permanent warning points or a permanent Ban.

    Our resources on Babiato Forum are CLEAN and SAFE. So you can use them for development and testing purposes. If your are on Windows and have an antivirus that alerts you about a possible infection: Know it's a false positive because all scripts are double checked by our experts. We advise you to add Babiato to trusted sites/sources or disable your antivirus momentarily while downloading a resource. "Enjoy your presence on Babiato"

6amTech Payment & SMS Gateway Addon

6amTech Payment & SMS Gateway Addon v1.1

No permission to download
Hi, Found the solution. If you are using 6valley, in the main code go to
app\Http\Controllers\Admin\System\AddonController.php

and change the whole code with


<?php
namespace App\Http\Controllers\Admin;
use App\CPU\Helpers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Http;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Routing\Redirector;
use Illuminate\Http\RedirectResponse;
class AddonController extends Controller
{
public function index()
{
$module_dir = base_path('Modules/');
if (!File::exists($module_dir)) {
File::makeDirectory($module_dir);
File::chmod($module_dir, 0777);
}
$dir = 'Modules';
$directories = self::getDirectories($dir);
$addons = [];
foreach ($directories as $directory) {
$sub_dirs = self::getDirectories('Modules/' . $directory);
if (in_array('Addon', $sub_dirs)) {
$addons[] = 'Modules/' . $directory;
}
}
return view('admin-views.addons.index', compact('addons'));
}
public function publish(Request $request): JsonResponse|int
{
$full_data = include($request['path'] . '/Addon/info.php');
$path = $request['path'];
$addon_name = $full_data['name'];
if ($full_data['purchase_code'] == null || $full_data['username'] == null) {
return response()->json([
'flag' => 'inactive',
'view' => view('admin-views.addons.partials.activation-modal-data', compact('full_data', 'path', 'addon_name'))->render(),
]);
}
$full_data['is_published'] = $full_data['is_published'] ? 0 : 1;
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
return response()->json([
'status' => 'success',
'message' => 'status_updated_successfully'
]);
}
public function activation(Request $request): Redirector|RedirectResponse|Application
{
$remove = ["http://", "https://", "www."];
$url = str_replace($remove, "", url('/'));
$full_data = include($request['path'] . '/Addon/info.php');
$full_data['is_published'] = 1;
$full_data['username'] = $request['username'];
$full_data['purchase_code'] = $request['purchase_code'];
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
Toastr::success(translate('activated_successfully'));
return back();
}
public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'file_upload' => 'required|mimes:zip'
]);
if ($validator->errors()->count() > 0) {
$error = Helpers::error_processor($validator);
return response()->json(['status' => 'error', 'message' => $error[0]['message']]);
}
$extractPath = storage_path('app/temp/');
if (!File::exists($extractPath)) {
File::makeDirectory($extractPath);
}
$file = $request->file('file_upload');
$filename = $file->getClientOriginalName();
$tempPath = $file->storeAs('temp', $filename);
$zip = new \ZipArchive();
if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) {
// Extract the contents to a directory
$zip->extractTo($extractPath);
$zip->close();
Storage::delete($tempPath);
if (File::exists($extractPath . '/' . explode('.', $filename)[0] . '/Addon/info.php')) {
$moveToPath = base_path('Modules/');
if (!File::exists($moveToPath)) {
File::makeDirectory($moveToPath);
}
if (File::exists($moveToPath . '/' . explode('.', $filename)[0])) {
Toastr::warning(translate('already_installed!'));
$message = translate('already_installed');
$status = 'error';
} else {
File::copyDirectory($extractPath, $moveToPath);
File::chmod($moveToPath, 0777);
File::chmod($moveToPath . '/' . explode('.', $filename)[0], 0777);
File::chmod($moveToPath . '/' . explode('.', $filename)[0] . '/Addon', 0777);
Toastr::success(translate('file_upload_successfully!'));
$status = 'success';
$message = translate('file_upload_successfully!');
}
} else {
File::deleteDirectory($extractPath . '/' . explode('.', $filename)[0]);
$status = 'error';
$message = translate('invalid_file!');
}
} else {
$status = 'error';
$message = translate('file_upload_fail!');
}
File::deleteDirectory($extractPath);
return response()->json([
'status' => $status,
'message' => $message
]);
}
public function delete_theme(Request $request)
{
$path = $request->path;
$full_path = base_path($path);
$old = base_path('app/Traits/Payment.php');
$new = base_path('app/Traits/Payment.txt');
copy($new, $old);
if (File::deleteDirectory($full_path)) {
return response()->json([
'status' => 'success',
'message' => translate('file_delete_successfully')
]);
} else {
return response()->json([
'status' => 'error',
'message' => translate('file_delete_fail')
]);
}
}
//helper functions
function getDirectories(string $path): array
{
$directories = [];
$items = scandir($path);
foreach ($items as $item) {
if ($item == '..' || $item == '.')
continue;
if (is_dir($path . '/' . $item))
$directories[] = $item;
}
return $directories;
}
}
Do you have a solution for 6valley V14.4? They have changed code structure
 
Hello, I found the solution for 6ammart Version 2.5. Once the code that I leave below has been replaced in the following route, activate it with fictitious data and that's it, it will be activated.

path and file that should replace all the code:

app\Http\Controllers\Admin\System\AddonController.php

<?php

namespace App\Http\Controllers\Admin\System;

use Illuminate\Http\Request;
use App\CentralLogics\Helpers;
use App\CentralLogics\SMS_module;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\DB;
use Illuminate\Contracts\View\View;
use App\Http\Controllers\Controller;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\RedirectResponse;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Contracts\Foundation\Application;
use Modules\Gateways\Traits\SmsGateway;

class AddonController extends Controller
{
public function __construct(){
if (is_dir('Modules\Gateways\Traits') && trait_exists('Modules\Gateways\Traits\SmsGateway')) {
$this->extendWithSmsGatewayTrait();
}
}

private function extendWithSmsGatewayTrait()
{
$extendedControllerClass = $this->generateExtendedControllerClass();
eval($extendedControllerClass);
}

private function generateExtendedControllerClass()
{
$baseControllerClass = get_class($this);
$traitClassName = 'Modules\Gateways\Traits\SmsGateway';

$extendedControllerClass = "
class ExtendedController extends $baseControllerClass {
use $traitClassName;
}
";

return $extendedControllerClass;
}

public function index(): Factory|View|Application
{
$dir = 'Modules';
$directories = self::getDirectories($dir);
$addons = [];
foreach ($directories as $directory) {
$sub_dirs = self::getDirectories('Modules/' . $directory);
if (in_array('Addon', $sub_dirs)) {
$addons[] = 'Modules/' . $directory;
}
}
return view('admin-views.system.addon.index', compact('addons'));
}

public function publish(Request $request): JsonResponse|int
{
$full_data = include($request['path'] . '/Addon/info.php');
$path = $request['path'];
$addon_name = $full_data['name'];
if ($full_data['purchase_code'] == null || $full_data['username'] == null) {
return response()->json([
'flag' => 'inactive',
'view' => view('admin-views.system.addon.partials.activation-modal-data', compact('full_data', 'path', 'addon_name'))->render(),
]);
}
$full_data['is_published'] = $full_data['is_published'] ? 0 : 1;
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);

return response()->json([
'status' => 'success',
'message'=> 'status_updated_successfully'
]);
}

public function activation(Request $request): Redirector|RedirectResponse|Application
{
$remove = ["http://", "https://", "www."];
$url = str_replace($remove, "", url('/'));
$full_data = include($request['path'] . '/Addon/info.php');
$full_data['is_published'] = 1;
$full_data['username'] = $request['username'];
$full_data['purchase_code'] = $request['purchase_code'];
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
Toastr::success(translate('activated_successfully'));
return back();
}

public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'file_upload' => 'required|mimes:zip'
]);

if ($validator->errors()->count() > 0) {
$error = Helpers::error_processor($validator);
return response()->json(['status' => 'error', 'message' => $error[0]['message']]);
}

$file = $request->file('file_upload');
$filename = $file->getClientOriginalName();
$tempPath = $file->storeAs('temp', $filename);
$zip = new \ZipArchive();

if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) {
// Extract the contents to a directory
$extractPath = base_path('Modules/');
$zip->extractTo($extractPath);
$zip->close();
if(File::exists($extractPath.'/'.explode('.', $filename)[0].'/Addon/info.php')){
File::chmod($extractPath.'/'.explode('.', $filename)[0].'/Addon', 0777);
Toastr::success(translate('file_upload_successfully!'));
$status = 'success';
$message = translate('file_upload_successfully!');
}else{
File::deleteDirectory($extractPath.'/'.explode('.', $filename)[0]);
$status = 'error';
$message = translate('invalid_file!');
}
}else{
$status = 'error';
$message = translate('file_upload_fail!');
}

Storage::delete($tempPath);

return response()->json([
'status' => $status,
'message'=> $message
]);
}

public function delete_theme(Request $request){
$path = $request->path;

$full_path = base_path($path);

if(File::deleteDirectory($full_path)){
return response()->json([
'status' => 'success',
'message'=> translate('file_delete_successfully')
]);
}else{
return response()->json([
'status' => 'error',
'message'=> translate('file_delete_fail')
]);
}

}

//helper functions
function getDirectories(string $path): array
{
$directories = [];
$items = scandir($path);
foreach ($items as $item) {
if ($item == '..' || $item == '.')
continue;
if (is_dir($path . '/' . $item))
$directories[] = $item;
}
return $directories;
}
}
This method also works on

StackFood Multi Restaurant

Thank you​

 
Do you have a solution for 6valley V14.4? They have changed code structure
Do you have a solution for 6valley V14.4? They have changed code structure
Hello, I found the solution for 6ammart Version 2.5. Once the code that I leave below has been replaced in the following route, activate it with fictitious data and that's it, it will be activated.

path and file that should replace all the code:

app\Http\Controllers\Admin\System\AddonController.php

<?php

namespace App\Http\Controllers\Admin\System;

use Illuminate\Http\Request;
use App\CentralLogics\Helpers;
use App\CentralLogics\SMS_module;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\DB;
use Illuminate\Contracts\View\View;
use App\Http\Controllers\Controller;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\RedirectResponse;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Contracts\Foundation\Application;
use Modules\Gateways\Traits\SmsGateway;

class AddonController extends Controller
{
public function __construct(){
if (is_dir('Modules\Gateways\Traits') && trait_exists('Modules\Gateways\Traits\SmsGateway')) {
$this->extendWithSmsGatewayTrait();
}
}

private function extendWithSmsGatewayTrait()
{
$extendedControllerClass = $this->generateExtendedControllerClass();
eval($extendedControllerClass);
}

private function generateExtendedControllerClass()
{
$baseControllerClass = get_class($this);
$traitClassName = 'Modules\Gateways\Traits\SmsGateway';

$extendedControllerClass = "
class ExtendedController extends $baseControllerClass {
use $traitClassName;
}
";

return $extendedControllerClass;
}

public function index(): Factory|View|Application
{
$dir = 'Modules';
$directories = self::getDirectories($dir);
$addons = [];
foreach ($directories as $directory) {
$sub_dirs = self::getDirectories('Modules/' . $directory);
if (in_array('Addon', $sub_dirs)) {
$addons[] = 'Modules/' . $directory;
}
}
return view('admin-views.system.addon.index', compact('addons'));
}

public function publish(Request $request): JsonResponse|int
{
$full_data = include($request['path'] . '/Addon/info.php');
$path = $request['path'];
$addon_name = $full_data['name'];
if ($full_data['purchase_code'] == null || $full_data['username'] == null) {
return response()->json([
'flag' => 'inactive',
'view' => view('admin-views.system.addon.partials.activation-modal-data', compact('full_data', 'path', 'addon_name'))->render(),
]);
}
$full_data['is_published'] = $full_data['is_published'] ? 0 : 1;
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);

return response()->json([
'status' => 'success',
'message'=> 'status_updated_successfully'
]);
}

public function activation(Request $request): Redirector|RedirectResponse|Application
{
$remove = ["http://", "https://", "www."];
$url = str_replace($remove, "", url('/'));
$full_data = include($request['path'] . '/Addon/info.php');
$full_data['is_published'] = 1;
$full_data['username'] = $request['username'];
$full_data['purchase_code'] = $request['purchase_code'];
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
Toastr::success(translate('activated_successfully'));
return back();
}

public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'file_upload' => 'required|mimes:zip'
]);

if ($validator->errors()->count() > 0) {
$error = Helpers::error_processor($validator);
return response()->json(['status' => 'error', 'message' => $error[0]['message']]);
}

$file = $request->file('file_upload');
$filename = $file->getClientOriginalName();
$tempPath = $file->storeAs('temp', $filename);
$zip = new \ZipArchive();

if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) {
// Extract the contents to a directory
$extractPath = base_path('Modules/');
$zip->extractTo($extractPath);
$zip->close();
if(File::exists($extractPath.'/'.explode('.', $filename)[0].'/Addon/info.php')){
File::chmod($extractPath.'/'.explode('.', $filename)[0].'/Addon', 0777);
Toastr::success(translate('file_upload_successfully!'));
$status = 'success';
$message = translate('file_upload_successfully!');
}else{
File::deleteDirectory($extractPath.'/'.explode('.', $filename)[0]);
$status = 'error';
$message = translate('invalid_file!');
}
}else{
$status = 'error';
$message = translate('file_upload_fail!');
}

Storage::delete($tempPath);

return response()->json([
'status' => $status,
'message'=> $message
]);
}

public function delete_theme(Request $request){
$path = $request->path;

$full_path = base_path($path);

if(File::deleteDirectory($full_path)){
return response()->json([
'status' => 'success',
'message'=> translate('file_delete_successfully')
]);
}else{
return response()->json([
'status' => 'error',
'message'=> translate('file_delete_fail')
]);
}

}

//helper functions
function getDirectories(string $path): array
{
$directories = [];
$items = scandir($path);
foreach ($items as $item) {
if ($item == '..' || $item == '.')
continue;
if (is_dir($path . '/' . $item))
$directories[] = $item;
}
return $directories;
}
}
expand...
Do you have a solution for 6valley V14.4? They have changed code structure
 
Hello, I found the solution for 6ammart Version 2.5. Once the code that I leave below has been replaced in the following route, activate it with fictitious data and that's it, it will be activated.

path and file that should replace all the code:

app\Http\Controllers\Admin\System\AddonController.php

<?php

namespace App\Http\Controllers\Admin\System;

use Illuminate\Http\Request;
use App\CentralLogics\Helpers;
use App\CentralLogics\SMS_module;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\DB;
use Illuminate\Contracts\View\View;
use App\Http\Controllers\Controller;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\RedirectResponse;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Contracts\Foundation\Application;
use Modules\Gateways\Traits\SmsGateway;

class AddonController extends Controller
{
public function __construct(){
if (is_dir('Modules\Gateways\Traits') && trait_exists('Modules\Gateways\Traits\SmsGateway')) {
$this->extendWithSmsGatewayTrait();
}
}

private function extendWithSmsGatewayTrait()
{
$extendedControllerClass = $this->generateExtendedControllerClass();
eval($extendedControllerClass);
}

private function generateExtendedControllerClass()
{
$baseControllerClass = get_class($this);
$traitClassName = 'Modules\Gateways\Traits\SmsGateway';

$extendedControllerClass = "
class ExtendedController extends $baseControllerClass {
use $traitClassName;
}
";

return $extendedControllerClass;
}

public function index(): Factory|View|Application
{
$dir = 'Modules';
$directories = self::getDirectories($dir);
$addons = [];
foreach ($directories as $directory) {
$sub_dirs = self::getDirectories('Modules/' . $directory);
if (in_array('Addon', $sub_dirs)) {
$addons[] = 'Modules/' . $directory;
}
}
return view('admin-views.system.addon.index', compact('addons'));
}

public function publish(Request $request): JsonResponse|int
{
$full_data = include($request['path'] . '/Addon/info.php');
$path = $request['path'];
$addon_name = $full_data['name'];
if ($full_data['purchase_code'] == null || $full_data['username'] == null) {
return response()->json([
'flag' => 'inactive',
'view' => view('admin-views.system.addon.partials.activation-modal-data', compact('full_data', 'path', 'addon_name'))->render(),
]);
}
$full_data['is_published'] = $full_data['is_published'] ? 0 : 1;
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);

return response()->json([
'status' => 'success',
'message'=> 'status_updated_successfully'
]);
}

public function activation(Request $request): Redirector|RedirectResponse|Application
{
$remove = ["http://", "https://", "www."];
$url = str_replace($remove, "", url('/'));
$full_data = include($request['path'] . '/Addon/info.php');
$full_data['is_published'] = 1;
$full_data['username'] = $request['username'];
$full_data['purchase_code'] = $request['purchase_code'];
$str = "<?php return " . var_export($full_data, true) . ";";
file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
Toastr::success(translate('activated_successfully'));
return back();
}

public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'file_upload' => 'required|mimes:zip'
]);

if ($validator->errors()->count() > 0) {
$error = Helpers::error_processor($validator);
return response()->json(['status' => 'error', 'message' => $error[0]['message']]);
}

$file = $request->file('file_upload');
$filename = $file->getClientOriginalName();
$tempPath = $file->storeAs('temp', $filename);
$zip = new \ZipArchive();

if ($zip->open(storage_path('app/' . $tempPath)) === TRUE) {
// Extract the contents to a directory
$extractPath = base_path('Modules/');
$zip->extractTo($extractPath);
$zip->close();
if(File::exists($extractPath.'/'.explode('.', $filename)[0].'/Addon/info.php')){
File::chmod($extractPath.'/'.explode('.', $filename)[0].'/Addon', 0777);
Toastr::success(translate('file_upload_successfully!'));
$status = 'success';
$message = translate('file_upload_successfully!');
}else{
File::deleteDirectory($extractPath.'/'.explode('.', $filename)[0]);
$status = 'error';
$message = translate('invalid_file!');
}
}else{
$status = 'error';
$message = translate('file_upload_fail!');
}

Storage::delete($tempPath);

return response()->json([
'status' => $status,
'message'=> $message
]);
}

public function delete_theme(Request $request){
$path = $request->path;

$full_path = base_path($path);

if(File::deleteDirectory($full_path)){
return response()->json([
'status' => 'success',
'message'=> translate('file_delete_successfully')
]);
}else{
return response()->json([
'status' => 'error',
'message'=> translate('file_delete_fail')
]);
}

}

//helper functions
function getDirectories(string $path): array
{
$directories = [];
$items = scandir($path);
foreach ($items as $item) {
if ($item == '..' || $item == '.')
continue;
if (is_dir($path . '/' . $item))
$directories[] = $item;
}
return $directories;
}
}
This method also works on

6ammart V2.6

Thank you​

 
6VALLEY :
Solve the problem of the upload button disappearing

GO to
resources/views/admin-views/addons/index.blade.php

Replace the following code from lines 126 to 134

before :
Code:
@if($condition_one && $condition_two)
                        <div class="col-12">
                            <div class="d-flex justify-content-end">
                                <button type="{{env('APP_MODE')!='demo'?'submit':'button'}}"
                                        class="btn btn--primary px-4 {{env('APP_MODE')!='demo'?'':'call-demo'}}"
                                        id="upload-theme">{{translate('upload')}}</button>
                            </div>
                        </div>
                        @endif
                            .......
                                .....

After (put this code) :

Code:
                        <div class="col-12">
                            <div class="d-flex justify-content-end">
                                <button type="'submit':'button'"
                                        class="btn btn--primary px-4 {{env('APP_MODE')!='demo'?'':'call-demo'}}"
                                        id="upload-theme">{{translate('upload')}}</button>
                            </div>
                        </div>
 
  • Like
Reactions: avibe
6VALLEY 14.5
Activate Gateways

Go to :

app\Http\Controllers\Admin\System\AddonController.php

replace line # 43 - 51

before :
PHP:
public function activation(Request $request, AddonService $addonService): Redirector|RedirectResponse|Application
    {
        $data = $addonService->getActivationData(request: $request);
        if ($data['status']) {
            Toastr::success(translate('activated_successfully'));
            return back();
        }
        return redirect($data['activationUrl']);
    }

after :
PHP:
public function activation(Request $request): Redirector | RedirectResponse | Application
    {
        $remove = ["http://", "https://", "www."];
        $url = str_replace($remove, "", url('/'));
        $full_data = include $request['path'] . '/Addon/info.php';
        $full_data['is_published'] = 1;
        $full_data['username'] = $request['username'];
        $full_data['purchase_code'] = $request['purchase_code'];
        $str = "<?php return " . var_export($full_data, true) . ";";
        file_put_contents(base_path($request['path'] . '/Addon/info.php'), $str);
        Toastr::success(translate('activated_successfully'));
        return back();
    }
 

Forum statistics

Threads
79,453
Messages
1,142,787
Members
248,411
Latest member
ThaGangsta
AdBlock Detected

We get it, advertisements are annoying!

However in order to keep our huge array of resources free of charge we need to generate income from ads so to use the site you will need to turn off your adblocker.

If you'd like to have an ad free experience you can become a Babiato Lover by donating as little as $5 per month. Click on the Donate menu tab for more info.

I've Disabled AdBlock