File "CustomModuleController.php"
Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/Admin/CustomModuleController.php
File size: 4.36 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Helpers\Reply;
use App\Http\Controllers\AdminBaseController;
use App\Traits\ModuleVerify;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Session;
use Nwidart\Modules\Facades\Module;
use Zip;
class CustomModuleController extends AdminBaseController
{
use ModuleVerify;
public function __construct()
{
parent::__construct();
$this->pageTitle = __('core.moduleSettings');
$this->pageIcon = 'icon-settings';
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$this->type = 'custom';
$this->updateFilePath = config('froiden_envato.tmp_path');
$this->allModules = Module::all();
return view('admin.custom-modules.index', $this->data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->type = 'custom';
$this->updateFilePath = config('froiden_envato.tmp_path');
return view('admin.custom-modules.install', $this->data);
}
/**
* @param Request $request
* @return array
* @throws \Exception
*/
public function store(Request $request)
{
File::put(public_path() . '/install-version.txt', 'complete');
$filePath = $request->filePath;
$zip = Zip::open($filePath);
$array = explode('/', $filePath);
$zipName = end($array);
$moduleName = str_replace('.zip', '', $zipName);
// Extract the files to storage folder first for checking the right plugin
$zip->extract(storage_path('app') . '/Modules');
if ($this->validateModule($moduleName)) {
// Move files to Modules if modules belongs to this product
File::moveDirectory(storage_path('app') . '/Modules/' . $moduleName, base_path() . '/Modules/' . $moduleName, true);
$this->flushData();
return Reply::success('Installed successfully.');
}
return Reply::error('The zip that you are trying to install doesn\'t belongs to this product');
}
public function validateModule($moduleName)
{
if (file_exists(storage_path('app') . '/Modules/' . $moduleName . '/Config/config.php')) {
$config = require_once storage_path('app') . '/Modules/' . $moduleName . '/Config/config.php';
if (isset($config['parent_envato_id']) && ($config['parent_envato_id'] == config('froiden_envato.envato_item_id'))) {
return true;
}
}
return false;
}
private function flushData()
{
Artisan::call('optimize:clear');
Artisan::call('module:migrate');
session()->forget('check_migrate_status');
Session::flush();
Auth::logout();
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return $this->verifyModulePurchase($id);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$module = Module::find($id);
if ($request->status == 'active') {
$module->enable();
} else {
$module->disable();
}
$plugins = \Nwidart\Modules\Facades\Module::allEnabled();
foreach ($plugins as $plugin) {
Artisan::call('module:migrate', array($plugin, '--force' => true));
}
session()->forget('check_migrate_status');
session(['hrm_plugins' => array_keys($plugins)]);
$msg = $request->status =='actived' ? 'Module Activatedd successfully':'Module Deactivated successfully';
return Reply::success($msg);
}
public function verifyingModulePurchase(Request $request)
{
$request->validate([
'purchase_code' => 'required|max:80',
]);
$module = $request->module;
$purchaseCode = $request->purchase_code;
return $this->modulePurchaseVerified($module, $purchaseCode);
}
}