You've already forked Atomcms-edit
Initial commit
This commit is contained in:
Executable
+44
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteSetting;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
abstract class BaseSettingsSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Get the settings array to be seeded.
|
||||
* Override this in child classes.
|
||||
*/
|
||||
abstract protected function getSettings(): array;
|
||||
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
foreach ($this->getSettings() as $setting) {
|
||||
WebsiteSetting::firstOrCreate(
|
||||
['key' => $setting['key']],
|
||||
[
|
||||
'key' => $setting['key'],
|
||||
'value' => $setting['value'],
|
||||
'comment' => $setting['comment'] ?? null,
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a setting array with common structure.
|
||||
*/
|
||||
protected function setting(string $key, string $value, string $comment = ''): array
|
||||
{
|
||||
return [
|
||||
'key' => $key,
|
||||
'value' => $value,
|
||||
'comment' => $comment,
|
||||
];
|
||||
}
|
||||
}
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\DailyChallenge;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DailyChallengeSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$challenges = [
|
||||
['name' => 'Eerste Overwinning', 'description' => 'Win 1 potje', 'type' => 'wins', 'target' => 1, 'reward_currency' => 'credits', 'reward_amount' => 100],
|
||||
['name' => 'Winnaar', 'description' => 'Win 3 potjes', 'type' => 'wins', 'target' => 3, 'reward_currency' => 'duckets', 'reward_amount' => 50],
|
||||
['name' => 'Champion', 'description' => 'Win 5 potjes', 'type' => 'wins', 'target' => 5, 'reward_currency' => 'duckets', 'reward_amount' => 100],
|
||||
['name' => 'Speler', 'description' => 'Speel 5 potjes', 'type' => 'games', 'target' => 5, 'reward_currency' => 'credits', 'reward_amount' => 50],
|
||||
['name' => 'Actief', 'description' => 'Speel 10 potjes', 'type' => 'games', 'target' => 10, 'reward_currency' => 'credits', 'reward_amount' => 100],
|
||||
['name' => 'Hotshot', 'description' => 'Behaal 100 punten in Snake', 'game' => 'snake', 'type' => 'score', 'target' => 100, 'reward_currency' => 'credits', 'reward_amount' => 200],
|
||||
['name' => 'Quizmaster', 'description' => 'Behaal 50 punten in Quiz', 'game' => 'quiz', 'type' => 'score', 'target' => 50, 'reward_currency' => 'duckets', 'reward_amount' => 75],
|
||||
];
|
||||
|
||||
foreach ($challenges as $challenge) {
|
||||
DailyChallenge::updateOrCreate(
|
||||
['name' => $challenge['name'], 'date' => now()->toDateString()],
|
||||
array_merge($challenge, ['date' => now()->toDateString()]),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$this->call([
|
||||
// General seeders
|
||||
WebsiteSettingsSeeder::class,
|
||||
WebsiteLanguageSeeder::class,
|
||||
WebsitePermissionSeeder::class,
|
||||
WebsiteWordfilterSeeder::class,
|
||||
WebsiteMaintenanceTasksSeeder::class,
|
||||
|
||||
WebsiteArticleSeeder::class,
|
||||
WebsiteTeamSeeder::class,
|
||||
|
||||
// Shop
|
||||
WebsiteShopCategoriesSeeder::class,
|
||||
WebsiteShopArticleSeeder::class,
|
||||
|
||||
// Help center
|
||||
WebsiteRuleCategorySeeder::class,
|
||||
WebsiteRuleSeeder::class,
|
||||
WebsiteHelperCenterCategorySeeder::class,
|
||||
WebsiteHelperCenterCategorySeeder::class,
|
||||
|
||||
// Values
|
||||
WebsiteRareValuesCategorySeeder::class,
|
||||
|
||||
// Housekeeping permissions
|
||||
HousekeepingPermissionSeeder::class,
|
||||
]);
|
||||
|
||||
// \App\Models\User::factory(10)->create();
|
||||
|
||||
// \App\Models\User::factory()->create([
|
||||
// 'name' => 'Test User',
|
||||
// 'email' => 'test@example.com',
|
||||
// ]);
|
||||
}
|
||||
}
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\GameRank;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class GameRankSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$ranks = [
|
||||
['name' => 'Brons I', 'slug' => 'bronze-1', 'icon' => '🥉', 'color' => '#cd7f32', 'min_points' => 0, 'max_points' => 99, 'tier' => 1],
|
||||
['name' => 'Brons II', 'slug' => 'bronze-2', 'icon' => '🥈🥉', 'color' => '#cd7f32', 'min_points' => 100, 'max_points' => 299, 'tier' => 2],
|
||||
['name' => 'Brons III', 'slug' => 'bronze-3', 'icon' => '🏅', 'color' => '#cd7f32', 'min_points' => 300, 'max_points' => 499, 'tier' => 3],
|
||||
['name' => 'Zilver I', 'slug' => 'silver-1', 'icon' => '🥈', 'color' => '#c0c0c0', 'min_points' => 500, 'max_points' => 799, 'tier' => 4],
|
||||
['name' => 'Zilver II', 'slug' => 'silver-2', 'icon' => '🥈🥈', 'color' => '#c0c0c0', 'min_points' => 800, 'max_points' => 999, 'tier' => 5],
|
||||
['name' => 'Zilver III', 'slug' => 'silver-3', 'icon' => '🏆', 'color' => '#c0c0c0', 'min_points' => 1000, 'max_points' => 1499, 'tier' => 6],
|
||||
['name' => 'Goud I', 'slug' => 'gold-1', 'icon' => '🥇', 'color' => '#ffd700', 'min_points' => 1500, 'max_points' => 1999, 'tier' => 7],
|
||||
['name' => 'Goud II', 'slug' => 'gold-2', 'icon' => '🥇🥇', 'color' => '#ffd700', 'min_points' => 2000, 'max_points' => 2499, 'tier' => 8],
|
||||
['name' => 'Goud III', 'slug' => 'gold-3', 'icon' => '👑', 'color' => '#ffd700', 'min_points' => 2500, 'max_points' => 2999, 'tier' => 9],
|
||||
['name' => 'Platinum', 'slug' => 'platinum', 'icon' => '💎', 'color' => '#e5e4e2', 'min_points' => 3000, 'max_points' => 3999, 'tier' => 10],
|
||||
['name' => 'Diamant I', 'slug' => 'diamond-1', 'icon' => '💠', 'color' => '#b9f2ff', 'min_points' => 4000, 'max_points' => 4999, 'tier' => 11],
|
||||
['name' => 'Diamant II', 'slug' => 'diamond-2', 'icon' => '💎💎', 'color' => '#b9f2ff', 'min_points' => 5000, 'max_points' => 5999, 'tier' => 12],
|
||||
['name' => 'Diamant III', 'slug' => 'diamond-3', 'icon' => '🔷', 'color' => '#b9f2ff', 'min_points' => 6000, 'max_points' => 7999, 'tier' => 13],
|
||||
['name' => 'Meester', 'slug' => 'master', 'icon' => '🎓', 'color' => '#9b59b6', 'min_points' => 8000, 'max_points' => 9999, 'tier' => 14],
|
||||
['name' => 'Legende', 'slug' => 'legend', 'icon' => '⚡', 'color' => '#e74c3c', 'min_points' => 10000, 'max_points' => null, 'tier' => 15],
|
||||
];
|
||||
|
||||
foreach ($ranks as $rank) {
|
||||
GameRank::updateOrCreate(['slug' => $rank['slug']], $rank);
|
||||
}
|
||||
}
|
||||
}
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\WebsiteHousekeepingPermission;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class HousekeepingPermissionSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$permissions = [
|
||||
[
|
||||
'permission' => 'can_access_housekeeping',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to login to the housekeeping',
|
||||
],
|
||||
[
|
||||
'permission' => 'edit_user',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to edit a user',
|
||||
],
|
||||
[
|
||||
'permission' => 'reset_user_password',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to reset the password for a user',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_user',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to delete a user',
|
||||
],
|
||||
[
|
||||
'permission' => 'write_article',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to write an article',
|
||||
],
|
||||
[
|
||||
'permission' => 'edit_article',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to edit an article',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_article',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to delete an article',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_wordfilter',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage the wordfilter',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_bans',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage the bans',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_room_chatlogs',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to read room chatlogs',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_private_chatlogs',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to read private chatlogs',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_catalog_pages',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage catalog pages',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_catalog_pages',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to delete catalog pages',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_emulator_settings',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage emulator settings',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_emulator_texts',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage emulator texts',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_website_settings',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage website settings',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_website_blacklists',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage website blacklists',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_website_whitelists',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage website whitelists',
|
||||
],
|
||||
[
|
||||
'permission' => 'view_activity_logs',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to view activity logs',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_staff_applications',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage staff applications',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_website_settings',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to delete website settings',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_permissions',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage hotel rank permissions',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_permissions',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to delete hotel rank permissions',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_article_tags',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage article tags',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_teams',
|
||||
'min_rank' => 6,
|
||||
'description' => 'The minimum rank required before being able to manage teams',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_achievements',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage achievements',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_commandlogs',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage command logs',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_camera_web',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage published camera photos',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_housekeeping_permissions',
|
||||
'min_rank' => 7,
|
||||
'description' => 'The minimum rank required before being able to manage housekeeping permissions',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($permissions as $permission) {
|
||||
WebsiteHousekeepingPermission::query()->firstOrCreate(['permission' => $permission['permission']], [
|
||||
'permission' => $permission['permission'],
|
||||
'min_rank' => $permission['min_rank'],
|
||||
'description' => $permission['description'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class RadioContestSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class RadioGiveawaySeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class RadioListenerPointSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Executable
+168
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RadioSettingsSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$settings = [
|
||||
// AzureCast & Stream
|
||||
['key' => 'radio_enabled', 'value' => '0', 'comment' => 'Radio enabled (0=no, 1=yes)'],
|
||||
['key' => 'radio_stream_url', 'value' => '', 'comment' => 'Main stream URL'],
|
||||
['key' => 'radio_stream_backup_url', 'value' => '', 'comment' => 'Backup stream URL'],
|
||||
['key' => 'radio_azurecast_base_url', 'value' => '', 'comment' => 'AzureCast base URL'],
|
||||
['key' => 'radio_azurecast_station_id', 'value' => '1', 'comment' => 'AzureCast station ID'],
|
||||
['key' => 'radio_azurecast_api_key', 'value' => '', 'comment' => 'AzureCast API key'],
|
||||
['key' => 'radio_azurecast_port', 'value' => '8443', 'comment' => 'AzureCast stream port'],
|
||||
['key' => 'radio_azurecast_protocol', 'value' => 'https', 'comment' => 'AzureCast protocol (http/https)'],
|
||||
['key' => 'radio_azurecast_use_proxy', 'value' => '0', 'comment' => 'Use AzureCast proxy (0=no, 1=yes)'],
|
||||
|
||||
// Sambroadcaster & Virtual DJ
|
||||
['key' => 'radio_sambroadcaster_api_url', 'value' => '', 'comment' => 'Sambroadcaster API URL'],
|
||||
['key' => 'radio_sambroadcaster_password', 'value' => '', 'comment' => 'Sambroadcaster password'],
|
||||
['key' => 'radio_virtual_dj_url', 'value' => '', 'comment' => 'Virtual DJ URL'],
|
||||
['key' => 'radio_virtual_dj_password', 'value' => '', 'comment' => 'Virtual DJ password'],
|
||||
['key' => 'radio_djs_api_url', 'value' => '', 'comment' => 'DJs API URL'],
|
||||
|
||||
// Player Configuratie
|
||||
['key' => 'radio_style', 'value' => 'dark', 'comment' => 'Player style (dark/light/blue/purple/pink/gold)'],
|
||||
['key' => 'radio_player_type', 'value' => 'default', 'comment' => 'Player type (default/minimal/embedded)'],
|
||||
['key' => 'radio_auto_play', 'value' => '0', 'comment' => 'Auto-play on page load (0=no, 1=yes)'],
|
||||
['key' => 'radio_auto_play_delay', 'value' => '0', 'comment' => 'Auto-play delay in seconds'],
|
||||
['key' => 'radio_mute_on_start', 'value' => '0', 'comment' => 'Muted on start (0=no, 1=yes)'],
|
||||
['key' => 'radio_volume', 'value' => '80', 'comment' => 'Default volume (0-100)'],
|
||||
['key' => 'radio_language', 'value' => 'nl', 'comment' => 'Default language (nl/en/de/fr/es/pt/it/br)'],
|
||||
['key' => 'radio_multi_language_enabled', 'value' => '0', 'comment' => 'Multi-language support (0=no, 1=yes)'],
|
||||
|
||||
// Player Kleuren
|
||||
['key' => 'radio_player_color_primary', 'value' => '#eeb425', 'comment' => 'Player primary color'],
|
||||
['key' => 'radio_player_color_secondary', 'value' => '#1a1a2e', 'comment' => 'Player secondary color'],
|
||||
['key' => 'radio_player_color_text', 'value' => '#ffffff', 'comment' => 'Player text color'],
|
||||
['key' => 'radio_player_color_accent', 'value' => '#eeb425', 'comment' => 'Player accent color'],
|
||||
|
||||
// Nu Afspelen
|
||||
['key' => 'radio_now_playing_enabled', 'value' => '1', 'comment' => 'Show now playing info (0=no, 1=yes)'],
|
||||
['key' => 'radio_now_playing_api_url', 'value' => '', 'comment' => 'Now playing API URL'],
|
||||
['key' => 'radio_now_playing_cache_duration', 'value' => '30', 'comment' => 'Now playing cache duration in seconds'],
|
||||
['key' => 'radio_show_song_history', 'value' => '1', 'comment' => 'Show song history (0=no, 1=yes)'],
|
||||
['key' => 'radio_song_history_count', 'value' => '10', 'comment' => 'Number of songs in history'],
|
||||
|
||||
// Luisteraars Statistieken
|
||||
['key' => 'radio_listeners_enabled', 'value' => '1', 'comment' => 'Show listeners count (0=no, 1=yes)'],
|
||||
['key' => 'radio_listeners_api_url', 'value' => '', 'comment' => 'Listeners API URL'],
|
||||
['key' => 'radio_listeners_update_interval', 'value' => '30', 'comment' => 'Listeners update interval in seconds'],
|
||||
['key' => 'radio_show_listener_peak', 'value' => '1', 'comment' => 'Show listener peak (0=no, 1=yes)'],
|
||||
['key' => 'radio_peak_reset_time', 'value' => '00:00', 'comment' => 'Peak reset time (HH:MM)'],
|
||||
['key' => 'radio_store_listener_stats', 'value' => '1', 'comment' => 'Store listener statistics (0=no, 1=yes)'],
|
||||
['key' => 'radio_stats_retention_days', 'value' => '30', 'comment' => 'Statistics retention in days'],
|
||||
['key' => 'radio_show_listener_graph', 'value' => '0', 'comment' => 'Show listener graph (0=no, 1=yes)'],
|
||||
['key' => 'radio_listener_graph_period', 'value' => '24h', 'comment' => 'Listener graph period (1h/6h/12h/24h/7d)'],
|
||||
['key' => 'radio_show_average_listeners', 'value' => '1', 'comment' => 'Show average listeners (0=no, 1=yes)'],
|
||||
['key' => 'radio_show_unique_listeners', 'value' => '0', 'comment' => 'Show unique listeners (0=no, 1=yes)'],
|
||||
|
||||
// Luisteraars Meldingen
|
||||
['key' => 'radio_listener_alerts_enabled', 'value' => '0', 'comment' => 'Enable listener alerts (0=no, 1=yes)'],
|
||||
['key' => 'radio_min_listeners_threshold', 'value' => '0', 'comment' => 'Minimum listeners threshold'],
|
||||
['key' => 'radio_listener_alert_threshold_high', 'value' => '100', 'comment' => 'High listener alert threshold'],
|
||||
['key' => 'radio_listener_alert_threshold_low', 'value' => '5', 'comment' => 'Low listener alert threshold'],
|
||||
|
||||
// DJ Instellingen
|
||||
['key' => 'radio_show_current_dj', 'value' => '1', 'comment' => 'Show current DJ (0=no, 1=yes)'],
|
||||
['key' => 'radio_current_dj_id', 'value' => '', 'comment' => 'Manual DJ user ID'],
|
||||
['key' => 'radio_dj_avatar_size', 'value' => '64', 'comment' => 'DJ avatar size in pixels'],
|
||||
['key' => 'radio_show_dj_schedule', 'value' => '1', 'comment' => 'Show DJ schedule (0=no, 1=yes)'],
|
||||
|
||||
// Auto DJ Detectie
|
||||
['key' => 'radio_auto_dj_detection', 'value' => '0', 'comment' => 'Enable auto DJ detection (0=no, 1=yes)'],
|
||||
['key' => 'radio_dj_detection_interval', 'value' => '60', 'comment' => 'DJ detection interval in seconds'],
|
||||
['key' => 'auto_dj_detected_action', 'value' => 'set_dj', 'comment' => 'Action on DJ detection (set_dj/notify/both)'],
|
||||
|
||||
// Shouts
|
||||
['key' => 'radio_shouts_enabled', 'value' => '1', 'comment' => 'Enable shouts (0=no, 1=yes)'],
|
||||
['key' => 'radio_shouts_max_length', 'value' => '280', 'comment' => 'Maximum shout length in characters'],
|
||||
['key' => 'radio_shouts_cooldown', 'value' => '30', 'comment' => 'Shout cooldown in seconds'],
|
||||
['key' => 'radio_shouts_require_moderation', 'value' => '0', 'comment' => 'Require shout moderation (0=no, 1=yes)'],
|
||||
|
||||
// Live Chat
|
||||
['key' => 'radio_chat_enabled', 'value' => '0', 'comment' => 'Enable live chat (0=no, 1=yes)'],
|
||||
['key' => 'radio_chat_position', 'value' => 'right', 'comment' => 'Chat position (left/right/bottom)'],
|
||||
['key' => 'radio_chat_width', 'value' => '350', 'comment' => 'Chat width in pixels'],
|
||||
['key' => 'radio_chat_height', 'value' => '500', 'comment' => 'Chat height in pixels'],
|
||||
['key' => 'radio_chat_messages_count', 'value' => '50', 'comment' => 'Number of chat messages to show'],
|
||||
['key' => 'radio_chat_show_timestamps', 'value' => '1', 'comment' => 'Show chat timestamps (0=no, 1=yes)'],
|
||||
['key' => 'radio_chat_allow_links', 'value' => '0', 'comment' => 'Allow links in chat (0=no, 1=yes)'],
|
||||
['key' => 'radio_chat_allow_emojis', 'value' => '1', 'comment' => 'Allow emojis in chat (0=no, 1=yes)'],
|
||||
|
||||
// Song Verzoeken
|
||||
['key' => 'radio_request_form_enabled', 'value' => '1', 'comment' => 'Enable song requests (0=no, 1=yes)'],
|
||||
['key' => 'radio_request_max_per_user', 'value' => '3', 'comment' => 'Maximum requests per user'],
|
||||
['key' => 'radio_request_cooldown', 'value' => '300', 'comment' => 'Request cooldown in seconds'],
|
||||
['key' => 'radio_voting_enabled', 'value' => '1', 'comment' => 'Enable request voting (0=no, 1=yes)'],
|
||||
['key' => 'radio_voting_show_song_requests', 'value' => '1', 'comment' => 'Show requests with votes (0=no, 1=yes)'],
|
||||
|
||||
// Widget
|
||||
['key' => 'radio_widget_enabled', 'value' => '1', 'comment' => 'Enable radio widget (0=no, 1=yes)'],
|
||||
['key' => 'radio_widget_show_globally', 'value' => '0', 'comment' => 'Show widget globally (0=no, 1=yes)'],
|
||||
['key' => 'radio_widget_position', 'value' => 'bottom-right', 'comment' => 'Widget position'],
|
||||
|
||||
// Offline Pagina
|
||||
['key' => 'radio_show_offline_message', 'value' => '1', 'comment' => 'Show offline message (0=no, 1=yes)'],
|
||||
['key' => 'radio_offline_message', 'value' => 'We zijn momenteel offline. Check onze socials voor updates!', 'comment' => 'Offline message text'],
|
||||
['key' => 'radio_offline_image', 'value' => '', 'comment' => 'Offline page image URL'],
|
||||
['key' => 'radio_background_image', 'value' => '', 'comment' => 'Background image URL'],
|
||||
['key' => 'radio_logo_url', 'value' => '', 'comment' => 'Radio logo URL'],
|
||||
|
||||
// DJ Aanmeldingen
|
||||
['key' => 'radio_applications_enabled', 'value' => '1', 'comment' => 'Enable DJ applications (0=no, 1=yes)'],
|
||||
['key' => 'radio_applications_max_per_day', 'value' => '1', 'comment' => 'Maximum applications per day'],
|
||||
['key' => 'radio_applications_require_approval', 'value' => '1', 'comment' => 'Require application approval (0=no, 1=yes)'],
|
||||
|
||||
// Statistieken Weergave
|
||||
['key' => 'radio_stats_show_daily', 'value' => '1', 'comment' => 'Show daily statistics (0=no, 1=yes)'],
|
||||
['key' => 'radio_stats_show_weekly', 'value' => '1', 'comment' => 'Show weekly statistics (0=no, 1=yes)'],
|
||||
['key' => 'radio_stats_show_monthly', 'value' => '1', 'comment' => 'Show monthly statistics (0=no, 1=yes)'],
|
||||
['key' => 'radio_stats_show_top_djs', 'value' => '1', 'comment' => 'Show top DJs (0=no, 1=yes)'],
|
||||
['key' => 'radio_stats_show_top_songs', 'value' => '1', 'comment' => 'Show top songs (0=no, 1=yes)'],
|
||||
|
||||
// Social Media
|
||||
['key' => 'radio_social_facebook', 'value' => '', 'comment' => 'Facebook URL'],
|
||||
['key' => 'radio_social_twitter', 'value' => '', 'comment' => 'Twitter URL'],
|
||||
['key' => 'radio_social_instagram', 'value' => '', 'comment' => 'Instagram URL'],
|
||||
['key' => 'radio_social_discord', 'value' => '', 'comment' => 'Discord URL'],
|
||||
['key' => 'radio_social_youtube', 'value' => '', 'comment' => 'YouTube URL'],
|
||||
['key' => 'radio_social_twitch', 'value' => '', 'comment' => 'Twitch URL'],
|
||||
|
||||
// Contact
|
||||
['key' => 'radio_contact_email', 'value' => '', 'comment' => 'Contact email'],
|
||||
['key' => 'radio_contact_phone', 'value' => '', 'comment' => 'Contact phone'],
|
||||
['key' => 'radio_about_text', 'value' => '', 'comment' => 'About radio text'],
|
||||
|
||||
// Discord Webhook
|
||||
['key' => 'radio_discord_webhook_url', 'value' => '', 'comment' => 'Discord webhook URL'],
|
||||
['key' => 'radio_discord_enabled', 'value' => '0', 'comment' => 'Enable Discord notifications (0=no, 1=yes)'],
|
||||
['key' => 'radio_discord_dj_live', 'value' => '1', 'comment' => 'Discord DJ live notification (0=no, 1=yes)'],
|
||||
['key' => 'radio_discord_song_changes', 'value' => '0', 'comment' => 'Discord song change notification (0=no, 1=yes)'],
|
||||
['key' => 'radio_discord_custom_message', 'value' => 'DJ {dj_name} is nu live!', 'comment' => 'Custom Discord message template'],
|
||||
|
||||
// Custom Code
|
||||
['key' => 'radio_custom_css', 'value' => '', 'comment' => 'Custom CSS code'],
|
||||
['key' => 'radio_custom_js', 'value' => '', 'comment' => 'Custom JavaScript code'],
|
||||
];
|
||||
|
||||
foreach ($settings as $setting) {
|
||||
DB::table('website_settings')->updateOrInsert(
|
||||
['key' => $setting['key']],
|
||||
[
|
||||
'value' => $setting['value'],
|
||||
'comment' => $setting['comment'],
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
$this->command->info('Radio settings seeded successfully!');
|
||||
}
|
||||
}
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class RadioSongRequestSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class RadioSongVoteSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Executable
+79
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteSetting;
|
||||
use App\Models\RadioListenerPoint;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class RadioTestSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
// Ensure radio settings exist
|
||||
WebsiteSetting::updateOrCreate(
|
||||
['key' => 'radio_enabled'],
|
||||
['value' => '1', 'comment' => 'Enable radio system'],
|
||||
);
|
||||
|
||||
WebsiteSetting::updateOrCreate(
|
||||
['key' => 'points_enabled'],
|
||||
['value' => '1', 'comment' => 'Enable points system'],
|
||||
);
|
||||
|
||||
WebsiteSetting::updateOrCreate(
|
||||
['key' => 'points_per_minute'],
|
||||
['value' => '2', 'comment' => 'Points awarded per minute of listening'],
|
||||
);
|
||||
|
||||
WebsiteSetting::updateOrCreate(
|
||||
['key' => 'max_points_per_day'],
|
||||
['value' => '100', 'comment' => 'Maximum points per day per user'],
|
||||
);
|
||||
|
||||
WebsiteSetting::updateOrCreate(
|
||||
['key' => 'radio_shouts_enabled'],
|
||||
['value' => '1', 'comment' => 'Enable shouts system'],
|
||||
);
|
||||
|
||||
// Create test users with points
|
||||
$testUsers = [
|
||||
['username' => 'TopListener', 'points' => 1500],
|
||||
['username' => 'MusicFan', 'points' => 1200],
|
||||
['username' => 'RadioExpert', 'points' => 800],
|
||||
['username' => 'StreamLover', 'points' => 600],
|
||||
['username' => 'CasualListener', 'points' => 300],
|
||||
];
|
||||
|
||||
foreach ($testUsers as $userData) {
|
||||
$user = User::firstOrCreate(
|
||||
['username' => $userData['username']],
|
||||
[
|
||||
'mail' => strtolower($userData['username']) . '@test.com',
|
||||
'password' => Hash::make('password123'),
|
||||
'radio_points' => $userData['points'],
|
||||
'account_created' => now(),
|
||||
'ip_register' => '127.0.0.1',
|
||||
'ip_current' => '127.0.0.1',
|
||||
],
|
||||
);
|
||||
|
||||
// Create some point history
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
RadioListenerPoint::create([
|
||||
'user_id' => $user->id,
|
||||
'points' => rand(5, 50),
|
||||
'reason' => 'Luisteren',
|
||||
'earned_at' => now()->subDays(rand(1, 30))->subHours(rand(1, 23)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->command->info('Radio test data seeded successfully!');
|
||||
}
|
||||
}
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class TestUserSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteInstallation;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class TestingSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
WebsiteInstallation::query()->insert(['completed' => true, 'installation_key' => 'key', 'step' => 0]);
|
||||
|
||||
$this->call([
|
||||
WebsiteSettingsSeeder::class,
|
||||
WebsiteLanguageSeeder::class,
|
||||
WebsitePermissionSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Shop\WebsiteShopArticle;
|
||||
use App\Models\Shop\WebsiteShopArticleFeature;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteArticleFeatureSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$articles = WebsiteShopArticle::all();
|
||||
$firstArticle = $articles[0];
|
||||
$secondArticle = $articles[1];
|
||||
$thirdArticle = $articles[2];
|
||||
|
||||
if (! $firstArticle || ! $secondArticle || ! $thirdArticle) {
|
||||
return;
|
||||
}
|
||||
|
||||
$features = [
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => 'Bronze VIP badge',
|
||||
],
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => 'Bronze VIP catalogue',
|
||||
],
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => 'Bronze VIP commands',
|
||||
],
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => '350 credits every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => '350 duckets every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $firstArticle->id,
|
||||
'content' => '1 diamond every hour',
|
||||
],
|
||||
|
||||
// Silver VIP
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => 'Silver VIP badge',
|
||||
],
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => 'Silver VIP catalogue',
|
||||
],
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => 'Silver VIP commands',
|
||||
],
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => '450 credits every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => '450 duckets every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $secondArticle->id,
|
||||
'content' => '3 diamond every hour',
|
||||
],
|
||||
|
||||
// Gold VIP
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => 'Gold VIP badge',
|
||||
],
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => 'Gold VIP catalogue',
|
||||
],
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => 'Gold VIP commands',
|
||||
],
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => '550 credits every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => '550 duckets every 15 minutes',
|
||||
],
|
||||
[
|
||||
'article_id' => $thirdArticle->id,
|
||||
'content' => '5 diamond every hour',
|
||||
],
|
||||
];
|
||||
|
||||
WebsiteShopArticleFeature::insert($features, ['article_id']);
|
||||
}
|
||||
}
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Articles\WebsiteArticle;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class WebsiteArticleSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
if (User::count() === 0) {
|
||||
User::factory()->create();
|
||||
}
|
||||
|
||||
$title = 'Atom CMS has been installed';
|
||||
$slug = Str::slug($title);
|
||||
|
||||
if (WebsiteArticle::where('slug', $slug)->exists()) {
|
||||
return;
|
||||
}
|
||||
|
||||
WebsiteArticle::create([
|
||||
'slug' => $slug,
|
||||
'title' => $title,
|
||||
'short_story' => 'Welcome to your new hotel, we are super happy that you chose to use Atom CMS!',
|
||||
'full_story' => sprintf('<strong>Welcome to your new hotel</strong>!<br><br>First of all thank you for using Atom CMS - it truly means a lot❤️<br><br>We built Atom CMS for you and your users to get the best possible experience when it comes to visiting %s, and we hope the journey has been a pleasure for you so far.<br><br>We have used modern and industry approved technologies (Laravel & Tailwind CSS) in order to give you the most secure & robust CMS possible.<br><br>Our idea of a good CMS is <strong>accessibility</strong> and just that, is what we have tried to make Atom CMS, so that you can be able to customise it without being a PHP expert or frontend guru. <br/><br/><strong>Some of the built in features</strong><br/>Atom CMS comes packed with tons of features, we will however only mention a few that might help to improve your hotel further!<br/><ul><li>- <a style="color: #42b0f5; text-decoration: underline;" href="https://retros.guide/docs/atom-cms/vpn-block" target="_blank">VPN / IP manager</a> - Allows you to whitelist & blacklist specific IPs or ASNs</li><li>- <a style="color: #42b0f5; text-decoration: underline;" href="https://retros.guide/docs/atom-cms/themes" target="_blank">Theme system</a> - Switch between themes easily or built your own with the simplicity of running a single command!</li><li>- <a style="color: #42b0f5; text-decoration: underline;" href="https://retros.guide/docs/atom-cms/recaptcha" target="_blank">Google ReCaptcha</a> - Keep bots away from your site, by simply enabling Googles recaptcha</li><li>- Built in <a style="color: #42b0f5; text-decoration: underline;" href="https://retros.guide/docs/atom-cms/language" target="_blank">multi language support</a> - Allow your users to browse your site in their preferred language</li></ul><br/><strong>Built in theme system!</strong><br/> Atom CMS has its own theme system, making it an absolute breeze to brew up a new theme or switch themes between the existing ones. If you wish to build your own theme, but is a bit unsure how to start, then head over to the <a style="color: #42b0f5; text-decoration: underline;" href="https://retros.guide/docs/atom-cms/themes" target="__blank">Our documentation site</a>. It gives you a good idea on how to use the theming system and tons of other aspects of running your hotel✨<br><br>With everything being said it is time to wrap up the introduction, but before we do that we want to <strong>wish you the best of luck with your hotel</strong>!', setting('hotel_name')),
|
||||
'user_id' => User::first()->id,
|
||||
'image' => 'website_news_images/default.png',
|
||||
]);
|
||||
}
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Help\WebsiteHelpCenterCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteHelperCenterCategorySeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$categories = [
|
||||
[
|
||||
'name' => config('habbo.site.default_name') . ' Way',
|
||||
'content' => 'Welkom bij het ' . config('habbo.site.default_name') . ' Hotel, waar plezier en opwinding altijd om de hoek liggen! 🎉 Om ervoor te zorgen dat iedereen de best mogelijke ervaring heeft, hebben we De ' . config('habbo.site.default_name') . ' Way gecreëerd - ons speciale set van regels die onze gemeenschap veilig en vriendelijk houdt. 🌈<br/><br/>Het is belangrijk om te weten dat deze regels en voorschriften zonder kennisgeving kunnen veranderen. Als lid van onze geweldige ' . config('habbo.site.default_name') . ' gemeenschap, ga je akkoord met deze voorwaarden. 😊 Als je dat niet doet, kunnen er sancties worden toegepast op je account.<br/><br/>Maar maak je geen zorgen! Als je vragen of zorgen hebt over De ' . config('habbo.site.default_name') . ' Way, zijn onze vriendelijke Hotel Medewerkers altijd hier om te helpen. 💬 Ga nu gang en klik op de knop hieronder om De ' . config('habbo.site.default_name') . ' Way te lezen en ons te helpen een fantastische omgeving voor iedereen te creëren! 🚀',
|
||||
'image_url' => 'safety_tips_1.png',
|
||||
'button_text' => config('habbo.site.default_name') . ' Way',
|
||||
'button_url' => '/help-center/rules',
|
||||
'position' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'Ban Beroepen',
|
||||
'content' => 'Als je denkt dat je onterecht bent verbannen van ons supercool hotel, geen probleem - we zijn hier om te helpen! 🌟 Alles wat je hoeft te doen is een ticket indienen 🎟️ en ons te laten weten wat er is gebeurd.<br/><br/>We controleren het en geven je een eerlijke kans om terug te keren naar de geweldige wereld van ' . config('habbo.site.default_name') . '! 🕺💃 Dus ga je gang, deel je kant van het verhaal, en laten we je weer laten deelnemen aan het plezier! 😄',
|
||||
'image_url' => 'safety_tips_5.png',
|
||||
'button_text' => 'Dien een beroep in',
|
||||
'button_url' => '/help-center/tickets/create',
|
||||
'position' => 2,
|
||||
],
|
||||
[
|
||||
'name' => 'VPN Deblokkeren',
|
||||
'content' => 'We weten dat je soms een VPN of proxy-verbinding nodig kunt hebben tijdens je bezoek aan ons fantastische hotel! 🏨 Maar omdat we onze gemeenschap veilig en vrij van toxiciteit willen houden, blokkeren we deze verbindingen standaard. 🛡️<br/><br/>We begrijpen echter dat er uitzonderingen zijn, en we zijn hier om te helpen! 🌟 Als je in een van deze situaties terechtkomt, kun je een VPN-deblokkeringsverzoek aanvragen:<br/><br/><div style=\'margin-left: 15px;\'><strong>1.</strong> Je gebruikt geen VPN maar werd toch geflagd. 🚩<br/><strong>2.</strong> Je bent op school of universiteit en hebt een VPN nodig om toegang te krijgen tot ' . config('habbo.site.default_name') . '. 🏫<br /><strong>3.</strong> Je bent op openbare verbindingen die mogelijk als VPN zijn geflagd.</div> 📱<br/><br/>Houd er alstublieft rekening mee dat als het gebruik van een VPN optioneel is voor je, we het verzoek meestal afwijzen. Dit is alleen om ervoor te zorgen dat we een positieve en vriendelijke omgeving behouden voor al onze gebruikers! 😄<br/><br/>Om een VPN-deblokkeringsverzoek aan te vragen, dien je gewoon een ticket in met een uitleg van je situatie, en we doen ons best om je te helpen! Laten we samen de ' . config('habbo.site.default_name') . ' Hotel ervaring geweldig houden voor iedereen! 🎉',
|
||||
'image_url' => 'safety_tips_2.png',
|
||||
'button_text' => 'Dien een deblokkeringsverzoek in',
|
||||
'button_url' => '/help-center/tickets/create',
|
||||
'position' => 3,
|
||||
],
|
||||
[
|
||||
'name' => 'Oplichting Meldingen',
|
||||
'content' => 'Hallo ' . config('habbo.site.default_name') . ' vrienden! 🎉 We weten dat soms, helaas, gebruikers kunnen proberen anderen op te lichten voor hun munten, diamanten of meubels. 😢 Maar maak je geen zorgen, we staan voor je klaar! We tolereren dit soort gedrag niet, en we zijn hier om je te helpen het te melden. 🌟<br/><br/>Ben je opgelicht? 😨<br/><br/>Zo ja, we zijn hier om te helpen! Volg gewoon het onderstaande template en neem het op in een ticket onder de optie \'Oplichting Meldingen\':<br/><br/><div style=\'margin-left: 15px;\'><strong>1.</strong> Opgelicht door:<br/><strong>2.</strong> Datum van oplichting:<br/><strong>3.</strong> Opgelichte items:<br/><strong>4.</strong> Bewijs (indien beschikbaar):</div><br/><br/>Onthoud, het is belangrijk om eerlijk en jezelf te zijn! 🌈 Niemand houdt van een bedrieger, en stelen maakt je niet rijk - het maakt je een crimineel. 😢 Door oplichting te melden, kunnen we samen het ' . config('habbo.site.default_name') . ' Hotel een leuke, veilige en geweldige plek houden voor iedereen! 🎊',
|
||||
'image_url' => 'safety_tips_7.png',
|
||||
'button_text' => 'Dien een oplichting melding in',
|
||||
'position' => 4,
|
||||
],
|
||||
[
|
||||
'name' => 'Kamer Advertenties',
|
||||
'content' => 'Hallo daar, ' . config('habbo.site.default_name') . ' vrienden! 🌟 Wist je dat je je kamer nog cooler kunt maken door er afbeeldingen in te tonen? 😮 Dat klopt! Met kamerachtergrond meubels kun je afbeeldingen rechtstreeks in je kamer in het hotel insluiten! 🖼️<br/><br/>Standaard heb je echter geen toegang tot de meubels of permissie om dit te doen. Maar maak je geen zorgen, je kunt ervoor aanvragen! 🎉 Alles wat je hoeft te doen is een ticket indienen en ons te laten weten waarom je deze geweldige kamer advertentierechten zou willen hebben. 📝<br/><br/>Zodra je de permissie hebt, kun je je kamer aanpassen en het echt uniek maken! 🌈 Dus ga je gang en vertel ons waarom je die rechten nodig hebt, en laten we je kamer samen naar een hoger niveau tillen! 🚀',
|
||||
'button_text' => 'Dien een ticket in',
|
||||
'button_url' => '/help-center/tickets/create',
|
||||
'position' => 1,
|
||||
'small_box' => true,
|
||||
],
|
||||
[
|
||||
'name' => 'Iets anders?',
|
||||
'content' => 'We weten dat je soms vragen, zorgen kunt hebben of gewoon wat hulp nodig hebt die niet in een specifieke categorie past. Geen probleem, we hebben je gedekt! 🌟<br/><br/>Voor alles anders waar je hulp bij nodig hebt, selecteer je gewoon de \'Andere\' optie bij het indienen van een ticket. 📝<br/><br/>Onze vriendelijke en behulpzame Hotel Medewerkers meer dan graag contact met je willen opnemen en de ondersteuning bieden die je nodig hebt. 🤗 Dus aarzel niet om ons te bereiken voor elke reden, groot of klein, en laten we je ' . config('habbo.site.default_name') . ' ervaring zo goed mogelijk maken! 🚀',
|
||||
'button_text' => 'Dien een ticket in',
|
||||
'button_url' => '/help-center/tickets/create',
|
||||
'position' => 2,
|
||||
'small_box' => true,
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($categories as $category) {
|
||||
$attributes = [];
|
||||
|
||||
foreach ($category as $key => $value) {
|
||||
$attributes[$key] = $value;
|
||||
}
|
||||
|
||||
WebsiteHelpCenterCategory::updateOrCreate(['name' => $category['name']], $attributes);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteLanguage;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteLanguageSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$languages = [
|
||||
['country_code' => 'en', 'language' => 'English'],
|
||||
['country_code' => 'da', 'language' => 'Danish'],
|
||||
['country_code' => 'fi', 'language' => 'Finnish'],
|
||||
['country_code' => 'de', 'language' => 'German'],
|
||||
['country_code' => 'fr', 'language' => 'French'],
|
||||
['country_code' => 'tr', 'language' => 'Turkish'],
|
||||
['country_code' => 'se', 'language' => 'Swedish'],
|
||||
['country_code' => 'nl', 'language' => 'Netherland'],
|
||||
['country_code' => 'br', 'language' => 'Portuguese (Brazil)'],
|
||||
['country_code' => 'it', 'language' => 'Italy'],
|
||||
['country_code' => 'es', 'language' => 'Spain'],
|
||||
['country_code' => 'no', 'language' => 'Norwegian'],
|
||||
];
|
||||
|
||||
WebsiteLanguage::query()->upsert($languages, ['country_code']);
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Game\Permission;
|
||||
use App\Models\Miscellaneous\WebsiteMaintenanceTask;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class WebsiteMaintenanceTasksSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$permission = Permission::orderByDesc('id')->first();
|
||||
$user = $permission ? User::where('rank', $permission->id)->first() : null;
|
||||
|
||||
if ($user === null) {
|
||||
$user = User::firstOrCreate(['username' => 'Admin'], [
|
||||
'username' => 'Admin',
|
||||
'mail' => 'admin@example.com',
|
||||
'password' => Hash::make(Str::password()),
|
||||
'account_created' => time(),
|
||||
'last_login' => time(),
|
||||
'motto' => 'Atom',
|
||||
'look' => 'fa-201407-1324.hr-828-1035.ch-3001-1261-1408.sh-3068-92-1408.cp-9032-1308.lg-270-1281.hd-209-3',
|
||||
'credits' => 0,
|
||||
'ip_register' => '127.0.0.1',
|
||||
'ip_current' => '127.0.0.1',
|
||||
'auth_ticket' => '',
|
||||
'home_room' => 0,
|
||||
'rank' => $permission?->id ?? 1,
|
||||
]);
|
||||
}
|
||||
|
||||
if ($user) {
|
||||
WebsiteMaintenanceTask::firstOrCreate(['task' => 'Working on the hotel'], [
|
||||
'user_id' => $user->id,
|
||||
'completed' => false,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+74
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsitePermission;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class WebsitePermissionSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$permissions = [
|
||||
[
|
||||
'permission' => 'bypass_vpn',
|
||||
'min_rank' => 6,
|
||||
'description' => 'Min rank to bypass vpn blocker check',
|
||||
],
|
||||
[
|
||||
'permission' => 'view_server_logs',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to access the log viewer',
|
||||
],
|
||||
[
|
||||
'permission' => 'housekeeping_access',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to access the housekeeping panel',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_article_comments',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to delete article comments without being the author',
|
||||
],
|
||||
[
|
||||
'permission' => 'manage_website_tickets',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to view and reply to others tickets',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_website_tickets',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to delete others tickets',
|
||||
],
|
||||
[
|
||||
'permission' => 'delete_website_ticket_replies',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to delete replies on a ticket',
|
||||
],
|
||||
[
|
||||
'permission' => 'generate_logo',
|
||||
'min_rank' => 7,
|
||||
'description' => 'Minimum required rank to use the logo generator',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($permissions as $permission) {
|
||||
// firstOrCreate voorkomt dubbele records
|
||||
WebsitePermission::firstOrCreate(
|
||||
['permission' => $permission['permission']],
|
||||
$permission,
|
||||
);
|
||||
}
|
||||
|
||||
// EPIC WEB CONTROL: Reset de cache zodat de PermissionsService de nieuwe data ziet
|
||||
Cache::forget('website_permissions');
|
||||
|
||||
$this->command->info('Website permissions geseedi en cache ververst!');
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Community\RareValue\WebsiteRareValueCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteRareValuesCategorySeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$categories = [
|
||||
[
|
||||
'name' => 'Limited Edition',
|
||||
'badge' => 'hotel-icon',
|
||||
'priority' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'Ultra rares',
|
||||
'badge' => 'hotel-icon',
|
||||
'priority' => 2,
|
||||
],
|
||||
[
|
||||
'name' => 'Super rares',
|
||||
'badge' => 'hotel-icon',
|
||||
'priority' => 3,
|
||||
],
|
||||
[
|
||||
'name' => 'Regulars',
|
||||
'badge' => 'hotel-icon',
|
||||
'priority' => 4,
|
||||
],
|
||||
];
|
||||
|
||||
WebsiteRareValueCategory::upsert($categories, ['name'], ['name', 'badge', 'priority']);
|
||||
}
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Help\WebsiteRuleCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteRuleCategorySeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$categories = [
|
||||
[
|
||||
'name' => 'General Rules',
|
||||
'description' => 'The general rules of the hotel',
|
||||
'badge' => 'hotel-icon',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'name' => 'Account Rules',
|
||||
'description' => 'The general account rules on Habbo',
|
||||
'badge' => 'hotel-icon',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'name' => 'Hotel',
|
||||
'description' => 'Hotel rules & guidelines',
|
||||
'badge' => 'hotel-icon',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
];
|
||||
|
||||
WebsiteRuleCategory::upsert($categories, ['name']);
|
||||
}
|
||||
}
|
||||
Executable
+202
@@ -0,0 +1,202 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Help\WebsiteRule;
|
||||
use App\Models\Help\WebsiteRuleCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteRuleSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$categories = WebsiteRuleCategory::all()->pluck('id');
|
||||
|
||||
$rules = [
|
||||
// General rules
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.1',
|
||||
'rule' => 'Do not abuse the Call for Help (CFH) system; it should be used during emergency purposes only.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.2',
|
||||
'rule' => 'Do not advertise other Habbo Retros; hotel links or purposely mentioning the name of another hotel with the intentions of advertising is not permitted.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.3',
|
||||
'rule' => 'Do not attempt to or scam credits or furniture from other users through betting, gaming, or trading.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.4',
|
||||
'rule' => 'Do not bully, harass, or abuse other users; avoid violent or aggressive behavior.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.5',
|
||||
'rule' => 'Do not disclose any personal information of another user (e.g., address, IP Address, phone number, school, private images etc.) without their consent.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.6',
|
||||
'rule' => 'Do not excessively repeat identical or similar statements (spamming).',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.7',
|
||||
'rule' => 'Users are to not participate in any sexual, inappropriate, or generally objective acts towards other users without their prior consent.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.8',
|
||||
'rule' => 'Do not make rooms with inappropriate or abusive names.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.9',
|
||||
'rule' => 'Do not attempt to or successfully harm a user’s home internet connection.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[0],
|
||||
'paragraph' => '1.10',
|
||||
'rule' => 'Do not disrupt events with explicit language or negative behavior.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
|
||||
// Accounts rules
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.1',
|
||||
'rule' => 'Do not attempt to or give away, buy, sell, or trade your Habbo account and/or items for virtual items from another game, accounts from another game, cash, or vice versa without permission from an Administrator. This includes giving away, buying, selling or trading furniture/currency for Habbo furniture/currency or vice versa. ',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.2',
|
||||
'rule' => 'Do not create a username with an offensive name that is insulting, racist, harassing, or generally objectionable.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.3',
|
||||
'rule' => 'Do not evade an IP Address ban.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.4',
|
||||
'rule' => 'Do not share your account with other users.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.5',
|
||||
'rule' => 'Do not threaten to, attempt to, or hack other users accounts.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.6',
|
||||
'rule' => 'Do not create multiple accounts for the purpose of taking an advantage over gaining more in-game currency and/or rares of any kind.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.7',
|
||||
'rule' => 'Do not re-appeal your ban unless stated otherwise. This means if you re-appeal in 2 days after your first appeal was denied and you were told to re-appeal in 2-3 weeks, you will be banned from the forum as well as the hotel.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[1],
|
||||
'paragraph' => '2.8',
|
||||
'rule' => 'Accounts are limited to 2 per person. This means, only 1 Alt acc is acceptable. Anything more than this, will result in a full account wipe including credits, and rares.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
|
||||
// Hotel rules
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.1',
|
||||
'rule' => 'Do not attempt to or exploit errors of Habbo; report it to the Administration immediately.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.2',
|
||||
'rule' => 'Do not attempt to or refund your VIP Membership or donation to Habbo at any given time; all payments are final.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.3',
|
||||
'rule' => 'Do not intentionally give wrong or misleading information to staff members in reports about rule violations, complaints, bug reports, or support requests.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.4',
|
||||
'rule' => 'Do not make false statements against Habbo or any other part of its services.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.5',
|
||||
'rule' => 'Do not pretend to be a representative of Habbo. This includes mimicing, acting like them, and or claim to have staff powers.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.6',
|
||||
'rule' => 'Do not threaten to, attempt to, or use any scripts or third party software to enter, disrupt, or modify Habbo.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
[
|
||||
'category_id' => $categories[2],
|
||||
'paragraph' => '3.7',
|
||||
'rule' => 'Non-harmful auto-typing, auto-clicking and other programs can only be used if you are the room owner or with permission from the room owner.',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
],
|
||||
];
|
||||
|
||||
if (WebsiteRule::doesntExist()) {
|
||||
WebsiteRule::insert($rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+432
@@ -0,0 +1,432 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteSetting;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteSettingsSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$settings = [
|
||||
[
|
||||
'key' => 'theme',
|
||||
'value' => 'dusk',
|
||||
'comment' => 'Specifies the active CMS theme (dusk, atom)',
|
||||
],
|
||||
[
|
||||
'key' => 'hotel_name',
|
||||
'value' => 'Atom',
|
||||
'comment' => 'Specifies the name of the hotel',
|
||||
],
|
||||
[
|
||||
'key' => 'rcon_ip',
|
||||
'value' => '127.0.0.1',
|
||||
'comment' => 'Specifies the RCON IP used for the CMS to perform RCON commands',
|
||||
],
|
||||
[
|
||||
'key' => 'rcon_port',
|
||||
'value' => '3001',
|
||||
'comment' => 'Specifies the RCON port used for the CMS to perform RCON commands',
|
||||
],
|
||||
[
|
||||
'key' => 'start_motto',
|
||||
'value' => sprintf('I love %s hotel', setting('hotel_name') ?? config('habbo.site.default_name')),
|
||||
'comment' => 'Specifies the start motto the user gets assigned upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'start_credits',
|
||||
'value' => '5000',
|
||||
'comment' => 'Specifies the amount of credits a user receives upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'start_duckets',
|
||||
'value' => '5000',
|
||||
'comment' => 'Specifies the amount of duckets a user receives upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'start_diamonds',
|
||||
'value' => '100',
|
||||
'comment' => 'Specifies the amount of diamonds a user receives upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'start_points',
|
||||
'value' => '0',
|
||||
'comment' => 'Specifies the amount of points a user receives upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'avatar_imager',
|
||||
'value' => 'https://www.habbo.com/habbo-imaging/avatarimage?figure=',
|
||||
'comment' => 'The base url for the imager used to render avatars on the CMS',
|
||||
],
|
||||
[
|
||||
'key' => 'start_look',
|
||||
'value' => 'fa-201407-1324.hr-828-1035.ch-3001-1261-1408.sh-3068-92-1408.cp-9032-1308.lg-270-1281.hd-209-3',
|
||||
'comment' => 'Sets the starting outfit for any new user registering',
|
||||
],
|
||||
[
|
||||
'key' => 'register_female_figures',
|
||||
'value' => 'hr-100-45.hd-180-1.ch-215-62.lg-270-62.sh-290-62,hr-130-45.hd-180-2.ch-220-62.lg-270-62.sh-305-62,hr-140-45.hd-180-3.ch-225-62.lg-270-62.sh-310-62,hr-165-45.hd-180-1.ch-210-62.lg-270-62.sh-290-62,hr-190-45.hd-180-2.ch-215-62.lg-270-62.sh-305-62',
|
||||
'comment' => 'Comma-separated list of female avatar figures for registration',
|
||||
],
|
||||
[
|
||||
'key' => 'register_male_figures',
|
||||
'value' => 'hr-100-61.hd-180-1.ch-210-66.lg-270-110.sh-305-62,hr-105-61.hd-190-2.ch-215-66.lg-280-110.sh-310-62,hr-110-61.hd-200-3.ch-220-66.lg-290-110.sh-320-62,hr-115-61.hd-185-1.ch-210-66.lg-275-110.sh-315-62,hr-120-61.hd-180-2.ch-205-66.lg-285-110.sh-305-62',
|
||||
'comment' => 'Comma-separated list of male avatar figures for registration',
|
||||
],
|
||||
[
|
||||
'key' => 'referrals_needed',
|
||||
'value' => '5',
|
||||
'comment' => 'Specifies the amount of referrals needed before being able to claim the referral reward',
|
||||
],
|
||||
[
|
||||
'key' => 'referral_reward_amount',
|
||||
'value' => '30',
|
||||
'comment' => 'Specifies the reward amount when a user claims a reward',
|
||||
],
|
||||
[
|
||||
'key' => 'referral_reward_currency_type',
|
||||
'value' => 'diamonds',
|
||||
'comment' => 'Specify what type of currency that are given upon referral reward claim (credits, duckets, diamonds, points)',
|
||||
],
|
||||
[
|
||||
'key' => 'point_currency_number',
|
||||
'value' => '101',
|
||||
'comment' => 'Determines what number the points currency type is',
|
||||
],
|
||||
[
|
||||
'key' => 'discord_invitation_link',
|
||||
'value' => 'https://discord.gg/rX3aShUHdg',
|
||||
'comment' => 'The link used to invite people to your Discord server',
|
||||
],
|
||||
[
|
||||
'key' => 'discord_widget_id',
|
||||
'value' => '1008150166521524264',
|
||||
'comment' => 'The Discord widget ID you want to show on the CMS',
|
||||
],
|
||||
[
|
||||
'key' => 'min_staff_rank',
|
||||
'value' => '4',
|
||||
'comment' => 'The minimum rank before being considered a staff member',
|
||||
],
|
||||
[
|
||||
'key' => 'min_rank_to_see_hidden_staff',
|
||||
'value' => '6',
|
||||
'comment' => 'The minimum rank to enable seeing hidden staff ranks & members',
|
||||
],
|
||||
[
|
||||
'key' => 'badges_path',
|
||||
'value' => '/client/flash/c_images/album1584',
|
||||
'comment' => 'The path to the badges folder, for the frontend',
|
||||
],
|
||||
[
|
||||
'key' => 'badge_path_filesystem',
|
||||
'value' => '/var/www/gamedata/c_images/album1584',
|
||||
'comment' => 'The path to the badges folder, for the backend',
|
||||
],
|
||||
[
|
||||
'key' => 'group_badge_path',
|
||||
'value' => '/client/flash/c_images/Badgeparts/generated',
|
||||
'comment' => 'The path that contains all the generated group badges',
|
||||
],
|
||||
[
|
||||
'key' => 'ads_path_filesystem',
|
||||
'value' => '/var/www/gamedata/custom',
|
||||
'comment' => 'The path for loading ADS from disk - for the Backend',
|
||||
],
|
||||
[
|
||||
'key' => 'ads_picture_path',
|
||||
'value' => '/gamedata/custom',
|
||||
'comment' => 'The path for loading ADS from the CMS - for the Frontend',
|
||||
],
|
||||
[
|
||||
'key' => 'nitro_external_texts_file',
|
||||
'value' => '/var/www/gamedata/config/ExternalTexts.json',
|
||||
'comment' => 'The path for loading ExternalTexts',
|
||||
],
|
||||
[
|
||||
'key' => 'maintenance_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Determines whether maintenance is enabled or not',
|
||||
],
|
||||
[
|
||||
'key' => 'min_maintenance_login_rank',
|
||||
'value' => '5',
|
||||
'comment' => 'The minimum rank required to login to the hotel during maintenance',
|
||||
],
|
||||
[
|
||||
'key' => 'maintenance_message',
|
||||
'value' => "We're working very hard on making " . setting('hotel_name') . ' the best possible version of itself 💛<br><br> We want to make sure ' . setting('hotel_name') . ' lives up to the standards you deserve, hence we currently have no ETA for when we can open our doors.<br><br>We promise that once we feel confident that ' . setting('hotel_name') . " is ready for launch, we'll let everyone know about it.<br><br>- The " . setting('hotel_name') . ' team ⭐',
|
||||
'comment' => 'The maintenance message displayed to users while maintenance is activated',
|
||||
],
|
||||
[
|
||||
'key' => 'username_regex',
|
||||
'value' => '/^[a-zA-Z0-9_.-]+$/u',
|
||||
'comment' => 'The regex used to validate username input fields',
|
||||
],
|
||||
[
|
||||
'key' => 'min_housekeeping_rank',
|
||||
'value' => '6',
|
||||
'comment' => 'The minimum rank required to see the housekeeping button',
|
||||
],
|
||||
[
|
||||
'key' => 'housekeeping_url',
|
||||
'value' => '/housekeeping',
|
||||
'comment' => 'The url to the housekeeping page',
|
||||
],
|
||||
[
|
||||
'key' => 'max_accounts_per_ip',
|
||||
'value' => '2',
|
||||
'comment' => 'The maximum allowed accounts registered per IP address',
|
||||
],
|
||||
[
|
||||
'key' => 'google_recaptcha_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Toggles whether google recaptcha is enabled or not - Do not enable if turnstile is enabled',
|
||||
],
|
||||
[
|
||||
'key' => 'cloudflare_turnstile_enabled',
|
||||
'value' => '1',
|
||||
'comment' => 'Determines whether cloudflare turnstile is enabled or not - Do not enable if google recaptche is enabled',
|
||||
],
|
||||
[
|
||||
'key' => 'vpn_block_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Toggles whether the VPN blocker is enabled or not',
|
||||
],
|
||||
[
|
||||
'key' => 'country_block_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Enable country-based blocking',
|
||||
],
|
||||
[
|
||||
'key' => 'block_vpn',
|
||||
'value' => '1',
|
||||
'comment' => 'Block VPN and proxy IPs',
|
||||
],
|
||||
[
|
||||
'key' => 'block_tor',
|
||||
'value' => '1',
|
||||
'comment' => 'Block TOR exit nodes',
|
||||
],
|
||||
[
|
||||
'key' => 'block_malicious',
|
||||
'value' => '1',
|
||||
'comment' => 'Block known malicious IPs',
|
||||
],
|
||||
[
|
||||
'key' => 'cms_logo',
|
||||
'value' => '/assets/images/kasja_atomlogo.png',
|
||||
'comment' => 'Default logo for the cms',
|
||||
],
|
||||
[
|
||||
'key' => 'cms_header',
|
||||
'value' => '/assets/images/kasja_mepage_header.png',
|
||||
'comment' => 'Default header for the me page',
|
||||
],
|
||||
[
|
||||
'key' => 'cms_me_backdrop',
|
||||
'value' => '/assets/images/kasja_mepage_image.png',
|
||||
'comment' => 'Default backdrop header for the me page',
|
||||
],
|
||||
[
|
||||
'key' => 'room_thumbnail_path',
|
||||
'value' => '/client/flash/c_images/rooms',
|
||||
'comment' => 'Path to room thumbnails',
|
||||
],
|
||||
[
|
||||
'key' => 'hotel_home_room',
|
||||
'value' => '0',
|
||||
'comment' => 'The homeroom every new users will be assigned to, leave as 0 if you do not wish to assign any home room',
|
||||
],
|
||||
[
|
||||
'key' => 'cms_color_mode',
|
||||
'value' => 'light',
|
||||
'comment' => 'Determines the color mode of the CMS (light = normal, dark = dark mode)',
|
||||
],
|
||||
[
|
||||
'key' => 'force_staff_2fa',
|
||||
'value' => '0',
|
||||
'comment' => 'If set to 1 every staff will be forced to apply 2FA before being able to visit any other page',
|
||||
],
|
||||
[
|
||||
'key' => 'website_wordfilter_enabled',
|
||||
'value' => '1',
|
||||
'comment' => 'Determines whether the wordfilter on the CMS will be enabled or not',
|
||||
],
|
||||
[
|
||||
'key' => 'requires_beta_code',
|
||||
'value' => '0',
|
||||
'comment' => 'Determines whether users need a beta code to register or not (0 for no & 1 for yes)',
|
||||
],
|
||||
[
|
||||
'key' => 'disable_registration',
|
||||
'value' => '0',
|
||||
'comment' => 'Determines whether registration is enabled or not (0 for no & 1 for yes)',
|
||||
],
|
||||
[
|
||||
'key' => 'give_hc_on_register',
|
||||
'value' => '0',
|
||||
'comment' => 'Determines whether the registered user will receive HC upon registration',
|
||||
],
|
||||
[
|
||||
'key' => 'hc_on_register_duration',
|
||||
'value' => '315569260',
|
||||
'comment' => 'Specifies the amount of time a user receives their HC subscription for (The default amount is 10 years)',
|
||||
],
|
||||
[
|
||||
'key' => 'max_comment_per_article',
|
||||
'value' => '2',
|
||||
'comment' => 'Specifies the amount of times a user can comment per article',
|
||||
],
|
||||
[
|
||||
'key' => 'furniture_icons_path',
|
||||
'value' => '/client/flash/dcr/hof_furni/icons',
|
||||
'comment' => 'The path used to display furniture icons - eg. on rare values',
|
||||
],
|
||||
[
|
||||
'key' => 'nitro_path',
|
||||
'value' => '/client/nitro/nitro-react/dist',
|
||||
'comment' => 'The path in which your index.html for nitro is located',
|
||||
],
|
||||
[
|
||||
'key' => 'enable_discord_webhook',
|
||||
'value' => '0',
|
||||
'comment' => 'Specify whether Discord webhooks will be sent or not (0 for disabled, 1 for enabled)',
|
||||
],
|
||||
[
|
||||
'key' => 'discord_webhook_url',
|
||||
'value' => '',
|
||||
'comment' => 'The URL provided by discord to send a webhook request',
|
||||
],
|
||||
[
|
||||
'key' => 'max_guestbook_posts_per_profile',
|
||||
'value' => '3',
|
||||
'comment' => 'The amount of guestbook posts a user can post on each user profile',
|
||||
],
|
||||
[
|
||||
'key' => 'tinymce_api_key',
|
||||
'value' => 'API-KEY-HERE',
|
||||
'comment' => 'The API key necessary in order to use TinyMCE',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_email_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Enable email alerts for monitoring',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_email_address',
|
||||
'value' => '',
|
||||
'comment' => 'Email address for receiving alerts',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_discord_enabled',
|
||||
'value' => '0',
|
||||
'comment' => 'Enable Discord alerts for monitoring',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_discord_webhook_url',
|
||||
'value' => '',
|
||||
'comment' => 'Discord webhook URL for alerts',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_emulator_enabled',
|
||||
'value' => '1',
|
||||
'comment' => 'Enable emulator monitoring alerts',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_ddos_enabled',
|
||||
'value' => '1',
|
||||
'comment' => 'Enable DDoS detection and alerts',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_ddos_threshold',
|
||||
'value' => '100',
|
||||
'comment' => 'DDoS detection threshold (requests per IP)',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_ddos_auto_block',
|
||||
'value' => '0',
|
||||
'comment' => 'Automatically block IPs detected in DDoS attack',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_errors_enabled',
|
||||
'value' => '1',
|
||||
'comment' => 'Enable error monitoring and alerts',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_error_threshold',
|
||||
'value' => '10',
|
||||
'comment' => 'Error count threshold for triggering alert (per 5 minutes)',
|
||||
],
|
||||
[
|
||||
'key' => 'alert_min_severity',
|
||||
'value' => 'error',
|
||||
'comment' => 'Minimum severity level for error alerts (info, warning, error, critical)',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_github_url',
|
||||
'value' => '',
|
||||
'comment' => 'GitHub repository URL for emulator updates',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_jar_path',
|
||||
'value' => '/root/emulator',
|
||||
'comment' => 'Path to emulator jar files',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_source_path',
|
||||
'value' => '/var/www/emulator-source',
|
||||
'comment' => 'Path to cloned emulator source for building',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_source_repo',
|
||||
'value' => '',
|
||||
'comment' => 'GitHub repository URL for building from source',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_jar_direct_url',
|
||||
'value' => '',
|
||||
'comment' => 'Direct URL to jar file (e.g. GitHub raw URL)',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_service_name',
|
||||
'value' => 'arcturus',
|
||||
'comment' => 'Systemd service name for emulator',
|
||||
],
|
||||
[
|
||||
'key' => 'emulator_version',
|
||||
'value' => 'Onbekend',
|
||||
'comment' => 'Currently installed emulator version',
|
||||
],
|
||||
[
|
||||
'key' => 'youtube_api_key',
|
||||
'value' => '',
|
||||
'comment' => 'Google API Key for YouTube search functionality in Nitro client',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($settings as $setting) {
|
||||
WebsiteSetting::firstOrCreate(['key' => $setting['key']], [
|
||||
'key' => $setting['key'],
|
||||
'value' => $setting['value'],
|
||||
'comment' => $setting['comment'],
|
||||
]);
|
||||
}
|
||||
|
||||
$recaptchaEnabled = WebsiteSetting::where('key', 'google_recaptcha_enabled')->first();
|
||||
|
||||
// This is done to update the rare values key for existing applications
|
||||
WebsiteSetting::where('key', 'rare_values_icons_path')->update([
|
||||
'key' => 'furniture_icons_path',
|
||||
]);
|
||||
|
||||
// Disables cloudflare turnstile if the seeder is run while having google recaptcha enabled.
|
||||
if ($recaptchaEnabled->value === '1') {
|
||||
WebsiteSetting::where('key', 'cloudflare_turnstile_enabled')->update([
|
||||
'value' => '0',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Shop\WebsiteShopArticle;
|
||||
use App\Models\Shop\WebsiteShopCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteShopArticleSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$vipCategory = WebsiteShopCategory::where('name', 'VIP')->firstOrCreate(['slug' => 'vip'], [
|
||||
'name' => 'VIP',
|
||||
'icon_url' => 'https://i.imgur.com/5NBdR0z.gif',
|
||||
]);
|
||||
|
||||
$articles = [
|
||||
[
|
||||
'website_shop_category_id' => $vipCategory->id,
|
||||
'name' => 'Bronze Package',
|
||||
'info' => 'Embark on your Habbo adventure with the Bronze Package – your essential starter kit for the virtual world. Start building your dream rooms, customize your avatar, and get access to basic perks that will make your stay more enjoyable.',
|
||||
'icon_url' => 'https://i.imgur.com/1VGFYSL.gif',
|
||||
'color' => '#c5630f',
|
||||
'costs' => 500,
|
||||
'give_rank' => null,
|
||||
'credits' => 5000,
|
||||
'duckets' => 5000,
|
||||
'diamonds' => 100,
|
||||
'badges' => 'VipParties2',
|
||||
'furniture' => null,
|
||||
],
|
||||
[
|
||||
'website_shop_category_id' => $vipCategory->id,
|
||||
'name' => 'Silver Package',
|
||||
'info' => 'The Silver Package is designed for Habbos who are ready to take their experience up a notch. Enjoy a substantial boost of in-game currency and exclusive access to items that will set you apart from the crowd.',
|
||||
'icon_url' => 'https://i.imgur.com/5NBdR0z.gif',
|
||||
'color' => '#dddddd',
|
||||
'costs' => 1000,
|
||||
'give_rank' => null,
|
||||
'credits' => 10000,
|
||||
'duckets' => 10000,
|
||||
'diamonds' => 300,
|
||||
'badges' => 'VipParties2_Top100',
|
||||
'furniture' => null,
|
||||
],
|
||||
[
|
||||
'website_shop_category_id' => $vipCategory->id,
|
||||
'name' => 'Gold VIP',
|
||||
'info' => 'The Gold VIP package is the epitome of Habbo luxury, reserved for those who crave the ultimate in virtual prestige. Enjoy unparalleled access to exclusive items, premium features, and a status symbol that will make heads turn wherever you go in the Hotel.',
|
||||
'icon_url' => 'https://i.imgur.com/NiVvRrs.gif',
|
||||
'color' => '#E4A317FF',
|
||||
'costs' => 1500,
|
||||
'give_rank' => null,
|
||||
'credits' => 15000,
|
||||
'duckets' => 15000,
|
||||
'diamonds' => 500,
|
||||
'badges' => 'VipParties2_Top10',
|
||||
'furniture' => null,
|
||||
],
|
||||
// Example for furniture pack
|
||||
/*
|
||||
[
|
||||
'name' => 'Furniture Pack #1',
|
||||
'info' => 'The perfect pack for the casino builder',
|
||||
'icon' => 'gold',
|
||||
'color' => '#E4A317FF',
|
||||
'costs' => 750,
|
||||
'badges' => 'VipParties2_Top100',
|
||||
'furniture' => json_encode([
|
||||
[
|
||||
'item_id' => 202,
|
||||
'amount' => 5,
|
||||
],
|
||||
[
|
||||
'item_id' => 212,
|
||||
'amount' => 2,
|
||||
],
|
||||
[
|
||||
'item_id' => 230,
|
||||
'amount' => 2,
|
||||
],
|
||||
]),
|
||||
],
|
||||
*/
|
||||
// Example for badge pack
|
||||
/*
|
||||
[
|
||||
'name' => 'Badge Pack #1',
|
||||
'info' => 'The perfect pack for the badge collector',
|
||||
'icon' => 'gold',
|
||||
'color' => '#E4A317FF',
|
||||
'costs' => 250,
|
||||
'badges' => 'BADGE_CODE_1;BADGE_CODE_2;BADGE_CODE_3;BADGE_CODE_4;BADGE_CODE_5',
|
||||
],
|
||||
*/
|
||||
|
||||
// Example for currency pack
|
||||
/*
|
||||
[
|
||||
'name' => 'Currency Pack #1',
|
||||
'info' => 'The perfect pack to boost your account',
|
||||
'icon' => 'gold',
|
||||
'color' => '#E4A317FF',
|
||||
'costs' => 250,
|
||||
'credits' => 25000,
|
||||
'duckets' => 35000,
|
||||
'diamonds' => 2500,
|
||||
],
|
||||
*/
|
||||
];
|
||||
|
||||
foreach ($articles as $article) {
|
||||
WebsiteShopArticle::updateOrCreate(['name' => $article['name']], [
|
||||
'website_shop_category_id' => $vipCategory->id,
|
||||
'name' => $article['name'],
|
||||
'info' => $article['info'],
|
||||
'icon_url' => $article['icon_url'],
|
||||
'color' => $article['color'],
|
||||
'costs' => $article['costs'],
|
||||
'give_rank' => $article['give_rank'] ?? null,
|
||||
'credits' => $article['credits'] ?? null,
|
||||
'duckets' => $article['duckets'] ?? null,
|
||||
'diamonds' => $article['diamonds'] ?? null,
|
||||
'badges' => $article['badges'] ?? null,
|
||||
'furniture' => $article['furniture'] ?? null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Shop\WebsiteShopCategory;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteShopCategoriesSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$categories = [
|
||||
[
|
||||
'name' => 'VIP',
|
||||
'slug' => 'vip',
|
||||
'icon' => 'https://i.imgur.com/YiI0I1i.png',
|
||||
],
|
||||
[
|
||||
'name' => 'Currency',
|
||||
'slug' => 'currency',
|
||||
'icon' => 'https://i.imgur.com/YiI0I1i.png',
|
||||
],
|
||||
[
|
||||
'name' => 'Badges',
|
||||
'slug' => 'badges',
|
||||
'icon' => 'https://i.imgur.com/YiI0I1i.png',
|
||||
],
|
||||
[
|
||||
'name' => 'Rares',
|
||||
'slug' => 'rares',
|
||||
'icon' => 'https://i.imgur.com/YiI0I1i.png',
|
||||
],
|
||||
];
|
||||
|
||||
WebsiteShopCategory::upsert($categories, ['slug'], ['name', 'icon']);
|
||||
}
|
||||
}
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Community\Staff\WebsiteTeam;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteTeamSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$teams = [
|
||||
['rank_name' => 'DJ'],
|
||||
['rank_name' => 'Wired Expert'],
|
||||
['rank_name' => 'Event planner'],
|
||||
];
|
||||
|
||||
WebsiteTeam::query()->upsert($teams, ['rank_name']);
|
||||
}
|
||||
}
|
||||
Executable
+78
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Miscellaneous\WebsiteWordfilter;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class WebsiteWordfilterSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$words = [
|
||||
[
|
||||
'word' => 'fuck',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'idiot',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'hotel',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'nigger',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'nigga',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'retard',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'faggot',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'tranny',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'bitch',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'cunt',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'cock',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
[
|
||||
'word' => 'pussy',
|
||||
'created_at' => Carbon::now(),
|
||||
'updated_at' => Carbon::now(),
|
||||
],
|
||||
];
|
||||
|
||||
WebsiteWordfilter::query()->upsert($words, ['word']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user