Files
Virtnet.bond/Disabled/ProductPageBuilder/ProductPageBuilder.php
2025-11-30 11:57:22 +01:00

90 lines
2.7 KiB
PHP

<?php
namespace Paymenter\Extensions\Others\ProductPageBuilder;
use App\Classes\Extension\Extension;
use Filament\Facades\Filament;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\View;
use Paymenter\Extensions\Others\ProductPageBuilder\Models\ProductPageSettings;
class ProductPageBuilder extends Extension
{
public function getConfig($values = [])
{
return [
[
'name' => 'notice',
'type' => 'placeholder',
'label' => 'Use this extension to customize your product pages with custom sections.',
],
];
}
public function enabled()
{
Artisan::call('migrate', [
'--path' => 'extensions/Others/ProductPageBuilder/database/migrations',
'--force' => true,
]);
}
public function boot()
{
// Add category_id column if it doesn't exist
if (!$this->columnExists('ext_product_page_builder', 'category_id')) {
DB::statement('ALTER TABLE ext_product_page_builder ADD COLUMN category_id bigint unsigned NULL');
DB::statement('ALTER TABLE ext_product_page_builder ADD CONSTRAINT product_page_builder_category_id_foreign FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL');
}
// Register views
View::addNamespace('product_page_builder', __DIR__ . '/resources/views');
// Register routes
Route::middleware('web')->group(__DIR__ . '/routes/web.php');
// Register Filament resources
if (class_exists('\Filament\Facades\Filament')) {
Filament::registerResources([
Admin\Resources\ProductPageResource::class,
]);
}
Event::listen('product.page', function ($product) {
$settings = ProductPageSettings::first();
if (!$settings) {
return [];
}
return [
'view' => view('product_page_builder::product', [
'settings' => $settings,
'product' => $product,
]),
];
});
Event::listen('navigation', function () {
if (ProductPageSettings::count() == 0) {
return;
}
return [
'name' => 'Games',
'route' => 'product-page.index',
// 'icon' => '',
'separator' => true,
'children' => [],
];
});
}
private function columnExists($table, $column)
{
return DB::getSchemaBuilder()->hasColumn($table, $column);
}
}