Page MenuHomePhorge

D3902.1775152850.diff
No OneTemporary

Authored By
Unknown
Size
32 KB
Referenced Files
None
Subscribers
None

D3902.1775152850.diff

diff --git a/.env b/.env
--- a/.env
+++ b/.env
@@ -1 +1 @@
-src/.env
\ No newline at end of file
+config/env
\ No newline at end of file
diff --git a/bin/configure.sh b/bin/configure.sh
new file mode 100755
--- /dev/null
+++ b/bin/configure.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+if [ ! -d config ]; then
+ echo "Failed to find a configuration folder. Use e.g. 'ln -s config.local config'"
+ exit 1
+fi
+
+rm -f src/resources/themes/active
+if [ -d config/theme ]; then
+ cp -r config/theme src/resources/themes/active
+else
+ ln -s ../default src/resources/themes/active
+fi
+
+rm -rf src/database/seeds
+cp -rL config/seeds src/database/seeds
+
+if [ -d config/seed-migrations ]; then
+ rm -rf src/database/seed-migrations
+ cp -rL config/seed-migrations src/database/seed-migrations
+fi
+
+rm -f .env
+ln -s config/env .env
+rm -f src/.env
+cp config/env src/.env
diff --git a/bin/quickstart.sh b/bin/quickstart.sh
--- a/bin/quickstart.sh
+++ b/bin/quickstart.sh
@@ -16,14 +16,7 @@
base_dir=$(dirname $(dirname $0))
-# Always reset .env with .env.example
-cp src/.env.example src/.env
-if [ -f "src/env.local" ]; then
- # Ensure there's a line ending
- echo "" >> src/.env
- cat src/env.local >> src/.env
-fi
export DOCKER_BUILDKIT=0
@@ -37,17 +30,13 @@
docker volume rm kolab_imap || :
docker volume rm kolab_ldap || :
-if [ "$1" != "--nodev" ]; then
- src/artisan octane:stop >/dev/null 2>&1 || :
- src/artisan horizon:terminate >/dev/null 2>&1 || :
-else
- # If we switch from an existing development setup to a compose deployment,
- # we don't have a nice way to terminate octane/horizon.
- # We can't use the artisan command because it will just block if redis is,
- # no longer available, so we just kill all artisan processes running.
- pkill -9 -f artisan || :
-fi
+# We can't use the following artisan commands because it will just block if redis is unavailable:
+# src/artisan octane:stop >/dev/null 2>&1 || :
+# src/artisan horizon:terminate >/dev/null 2>&1 || :
+# we therefore just kill all artisan processes running.
+pkill -9 -f artisan || :
+bin/configure.sh
bin/regen-certs
docker-compose build coturn kolab mariadb meet pdns proxy redis haproxy
docker-compose ${COMPOSE_ARGS} up -d coturn kolab mariadb meet pdns redis
@@ -147,7 +136,7 @@
pushd ${base_dir}/src/
rm -rf database/database.sqlite
./artisan db:ping --wait
-php -dmemory_limit=512M ./artisan migrate:refresh --seed
+php -dmemory_limit=512M ./artisan migrate:refresh --path=/database/migrations --path=/database/seed-migrations --seed
./artisan data:import || :
nohup ./artisan octane:start --host=$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//") > octane.out &
nohup ./artisan horizon > horizon.out &
diff --git a/config.local/README.md b/config.local/README.md
new file mode 100644
--- /dev/null
+++ b/config.local/README.md
@@ -0,0 +1,7 @@
+
+
+src/resources/themes/$theme
+
+# Custom Theme
+
+Add to theme subdirectory
diff --git a/src/.env.example b/config.local/env
rename from src/.env.example
rename to config.local/env
--- a/src/.env.example
+++ b/config.local/env
@@ -7,7 +7,7 @@
APP_PUBLIC_URL=https://kolab.local
APP_DOMAIN=kolab.local
APP_WEBSITE_DOMAIN=kolab.local
-APP_THEME=default
+APP_THEME=active
APP_TENANT_ID=5
APP_LOCALE=en
APP_LOCALES=
@@ -187,3 +187,27 @@
PROXY_SSL_CERTIFICATE=/etc/certs/imap.hosted.com.cert
PROXY_SSL_CERTIFICATE_KEY=/etc/certs/imap.hosted.com.key
+
+APP_KEY=base64:FG6ECzyAMSmyX+eYwO/FW3bwnarbKkBhqtO65vlMb1E=
+COTURN_STATIC_SECRET=uzYguvIl9tpZFMuQOE78DpOi6Jc7VFSD0UAnvgMsg5n4e74MgIf6vQvbc6LWzZjz
+
+APP_LDAP=1
+
+MOLLIE_KEY="from mollie"
+STRIPE_KEY="from stripe"
+STRIPE_PUBLIC_KEY="from stripe"
+STRIPE_WEBHOOK_SECRET="from stripe"
+
+OX_API_KEY="from openexchange"
+FIREBASE_API_KEY="from firebase"
+
+#Generated by php artisan passport:client --password, but can be left hardcoded (the seeder will pick it up)
+PASSPORT_PROXY_OAUTH_CLIENT_ID=942edef5-3dbd-4a14-8e3e-d5d59b727bee
+PASSPORT_PROXY_OAUTH_CLIENT_SECRET=L6L0n56ecvjjK0cJMjeeV1pPAeffUBO0YSSH63wf
+
+#Generated by php artisan passport:client --password, but can be left hardcoded (the seeder will pick it up)
+PASSPORT_COMPANIONAPP_OAUTH_CLIENT_ID=9566e018-f05d-425c-9915-420cdb9258bb
+PASSPORT_COMPANIONAPP_OAUTH_CLIENT_SECRET=XjgV6SU9shO0QFKaU6pQPRC5rJpyRezDJTSoGLgz
+
+APP_TENANT_ID=42
+APP_PASSPHRASE=simple123
diff --git a/src/database/migrations/2021_01_26_150000_change_sku_descriptions.php b/config.local/seed-migrations/2021_01_26_150000_change_sku_descriptions.php
rename from src/database/migrations/2021_01_26_150000_change_sku_descriptions.php
rename to config.local/seed-migrations/2021_01_26_150000_change_sku_descriptions.php
diff --git a/src/database/migrations/2021_02_19_100000_transaction_amount_fix.php b/config.local/seed-migrations/2021_02_19_100000_transaction_amount_fix.php
rename from src/database/migrations/2021_02_19_100000_transaction_amount_fix.php
rename to config.local/seed-migrations/2021_02_19_100000_transaction_amount_fix.php
diff --git a/src/database/migrations/2021_12_15_100000_rename_beta_skus.php b/config.local/seed-migrations/2021_12_15_100000_rename_beta_skus.php
rename from src/database/migrations/2021_12_15_100000_rename_beta_skus.php
rename to config.local/seed-migrations/2021_12_15_100000_rename_beta_skus.php
diff --git a/config.local/seed-migrations/2022_05_13_090000_permissions_and_room_subscriptions.php b/config.local/seed-migrations/2022_05_13_090000_permissions_and_room_subscriptions.php
new file mode 100644
--- /dev/null
+++ b/config.local/seed-migrations/2022_05_13_090000_permissions_and_room_subscriptions.php
@@ -0,0 +1,57 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+ /**
+ * Run the migrations.
+ */
+ public function up(): void
+ {
+ // Create the new SKUs
+ \App\Sku::create([
+ 'title' => 'group-room',
+ 'name' => 'Group conference room',
+ 'description' => 'Shareable audio & video conference room',
+ 'cost' => 0,
+ 'units_free' => 0,
+ 'period' => 'monthly',
+ 'handler_class' => 'App\Handlers\GroupRoom',
+ 'active' => true,
+ ]);
+
+ \App\Sku::create([
+ 'title' => 'room',
+ 'name' => 'Standard conference room',
+ 'description' => 'Audio & video conference room',
+ 'cost' => 0,
+ 'units_free' => 0,
+ 'period' => 'monthly',
+ 'handler_class' => 'App\Handlers\Room',
+ 'active' => true,
+ ]);
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ \App\Sku::where('title', 'room')->delete();
+ \App\Sku::where('title', 'group-room')->delete();
+
+ \App\Sku::create([
+ 'title' => 'meet',
+ 'name' => 'Voice & Video Conferencing (public beta)',
+ 'description' => 'Video conferencing tool',
+ 'cost' => 0,
+ 'units_free' => 0,
+ 'period' => 'monthly',
+ 'handler_class' => 'App\Handlers\Meet',
+ 'active' => true,
+ ]);
+ }
+};
diff --git a/src/database/migrations/2022_07_08_100000_fix_group_sku_name.php b/config.local/seed-migrations/2022_07_08_100000_fix_group_sku_name.php
rename from src/database/migrations/2022_07_08_100000_fix_group_sku_name.php
rename to config.local/seed-migrations/2022_07_08_100000_fix_group_sku_name.php
diff --git a/config.local/seed-migrations/2022_09_08_100001_plans_free_months.php b/config.local/seed-migrations/2022_09_08_100001_plans_free_months.php
new file mode 100644
--- /dev/null
+++ b/config.local/seed-migrations/2022_09_08_100001_plans_free_months.php
@@ -0,0 +1,26 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Support\Facades\DB;
+
+return new class extends Migration
+{
+ /**
+ * Run the migrations.
+ *
+ * @return void
+ */
+ public function up()
+ {
+ DB::table('plans')->update(['free_months' => 1]);
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ }
+};
diff --git a/config.local/seeds/DatabaseSeeder.php b/config.local/seeds/DatabaseSeeder.php
new file mode 100644
--- /dev/null
+++ b/config.local/seeds/DatabaseSeeder.php
@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Seeder;
+use Database\Seeds\Local;
+
+// phpcs:ignore
+class DatabaseSeeder extends Seeder
+{
+ /**
+ * Seed the application's database.
+ *
+ * @return void
+ */
+ public function run()
+ {
+ $this->call([
+ Local\IP4NetSeeder::class,
+ Local\TenantSeeder::class,
+ Local\DiscountSeeder::class,
+ Local\DomainSeeder::class,
+ Local\SkuSeeder::class,
+ Local\PackageSeeder::class,
+ Local\PlanSeeder::class,
+ Local\PowerDNSSeeder::class,
+ Local\UserSeeder::class,
+ Local\OauthClientSeeder::class,
+ Local\ResourceSeeder::class,
+ Local\SharedFolderSeeder::class,
+ Local\MeetRoomSeeder::class,
+ ]);
+ }
+}
diff --git a/src/database/seeds/local/DiscountSeeder.php b/config.local/seeds/DiscountSeeder.php
rename from src/database/seeds/local/DiscountSeeder.php
rename to config.local/seeds/DiscountSeeder.php
diff --git a/src/database/seeds/local/DomainSeeder.php b/config.local/seeds/DomainSeeder.php
rename from src/database/seeds/local/DomainSeeder.php
rename to config.local/seeds/DomainSeeder.php
diff --git a/src/database/seeds/local/IP4NetSeeder.php b/config.local/seeds/IP4NetSeeder.php
rename from src/database/seeds/local/IP4NetSeeder.php
rename to config.local/seeds/IP4NetSeeder.php
diff --git a/src/database/seeds/local/MeetRoomSeeder.php b/config.local/seeds/MeetRoomSeeder.php
rename from src/database/seeds/local/MeetRoomSeeder.php
rename to config.local/seeds/MeetRoomSeeder.php
diff --git a/src/database/seeds/local/OauthClientSeeder.php b/config.local/seeds/OauthClientSeeder.php
rename from src/database/seeds/local/OauthClientSeeder.php
rename to config.local/seeds/OauthClientSeeder.php
diff --git a/src/database/seeds/local/PackageSeeder.php b/config.local/seeds/PackageSeeder.php
rename from src/database/seeds/local/PackageSeeder.php
rename to config.local/seeds/PackageSeeder.php
diff --git a/src/database/seeds/local/PlanSeeder.php b/config.local/seeds/PlanSeeder.php
rename from src/database/seeds/local/PlanSeeder.php
rename to config.local/seeds/PlanSeeder.php
diff --git a/src/database/seeds/local/PowerDNSSeeder.php b/config.local/seeds/PowerDNSSeeder.php
rename from src/database/seeds/local/PowerDNSSeeder.php
rename to config.local/seeds/PowerDNSSeeder.php
diff --git a/src/database/seeds/local/ResourceSeeder.php b/config.local/seeds/ResourceSeeder.php
rename from src/database/seeds/local/ResourceSeeder.php
rename to config.local/seeds/ResourceSeeder.php
diff --git a/src/database/seeds/local/SharedFolderSeeder.php b/config.local/seeds/SharedFolderSeeder.php
rename from src/database/seeds/local/SharedFolderSeeder.php
rename to config.local/seeds/SharedFolderSeeder.php
diff --git a/src/database/seeds/local/SkuSeeder.php b/config.local/seeds/SkuSeeder.php
rename from src/database/seeds/local/SkuSeeder.php
rename to config.local/seeds/SkuSeeder.php
diff --git a/src/database/seeds/local/TenantSeeder.php b/config.local/seeds/TenantSeeder.php
rename from src/database/seeds/local/TenantSeeder.php
rename to config.local/seeds/TenantSeeder.php
diff --git a/src/database/seeds/local/UserSeeder.php b/config.local/seeds/UserSeeder.php
rename from src/database/seeds/local/UserSeeder.php
rename to config.local/seeds/UserSeeder.php
diff --git a/docker/webapp/init.sh b/docker/webapp/init.sh
--- a/docker/webapp/init.sh
+++ b/docker/webapp/init.sh
@@ -32,7 +32,7 @@
rm -rf database/database.sqlite
./artisan db:ping --wait
-php -dmemory_limit=512M ./artisan migrate:refresh --seed
+php -dmemory_limit=512M ./artisan migrate:refresh --path=/database/migrations --path=/database/seed-migrations --seed
./artisan data:import || :
nohup ./artisan horizon >/dev/null 2>&1 &
./artisan octane:start --host=$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//")
diff --git a/src/.gitignore b/src/.gitignore
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -24,4 +24,7 @@
composer.lock
resources/countries.php
resources/build/js/
+database/seeds/
+database/seed-migrations/
+src/public/themes/active
cache
diff --git a/src/database/migrations/2021_04_08_150000_signup_code_headers.php b/src/database/migrations/2021_04_08_150000_signup_code_headers.php
--- a/src/database/migrations/2021_04_08_150000_signup_code_headers.php
+++ b/src/database/migrations/2021_04_08_150000_signup_code_headers.php
@@ -2,7 +2,6 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
// phpcs:ignore
diff --git a/src/database/migrations/2021_07_12_100000_create_tenant_settings_table.php b/src/database/migrations/2021_07_12_100000_create_tenant_settings_table.php
--- a/src/database/migrations/2021_07_12_100000_create_tenant_settings_table.php
+++ b/src/database/migrations/2021_07_12_100000_create_tenant_settings_table.php
@@ -2,7 +2,6 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
// phpcs:ignore
diff --git a/src/database/migrations/2022_05_13_100000_permissions_and_room_subscriptions.php b/src/database/migrations/2022_05_13_100000_permissions_and_room_subscriptions.php
--- a/src/database/migrations/2022_05_13_100000_permissions_and_room_subscriptions.php
+++ b/src/database/migrations/2022_05_13_100000_permissions_and_room_subscriptions.php
@@ -38,54 +38,32 @@
);
// Create the new SKUs
- if (!\App\Sku::where('title', 'room')->first()) {
- $sku = \App\Sku::create([
- 'title' => 'group-room',
- 'name' => 'Group conference room',
- 'description' => 'Shareable audio & video conference room',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\GroupRoom',
- 'active' => true,
- ]);
+ $sku = \App\Sku::where('title', 'room')->first();
- $sku = \App\Sku::create([
- 'title' => 'room',
- 'name' => 'Standard conference room',
- 'description' => 'Audio & video conference room',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Room',
- 'active' => true,
- ]);
+ // Create the entitlement for every existing room
+ foreach (\App\Meet\Room::get() as $room) {
+ $user = \App\User::find($room->user_id); // @phpstan-ignore-line
+ if (!$user) {
+ $room->forceDelete();
+ continue;
+ }
- // Create the entitlement for every existing room
- foreach (\App\Meet\Room::get() as $room) {
- $user = \App\User::find($room->user_id); // @phpstan-ignore-line
- if (!$user) {
- $room->forceDelete();
- continue;
- }
-
- // Set tenant_id
- if ($user->tenant_id) {
- $room->tenant_id = $user->tenant_id;
- $room->save();
- }
-
- $wallet = $user->wallets()->first();
-
- \App\Entitlement::create([
- 'wallet_id' => $wallet->id,
- 'sku_id' => $sku->id,
- 'cost' => 0,
- 'fee' => 0,
- 'entitleable_id' => $room->id,
- 'entitleable_type' => \App\Meet\Room::class
- ]);
+ // Set tenant_id
+ if ($user->tenant_id) {
+ $room->tenant_id = $user->tenant_id;
+ $room->save();
}
+
+ $wallet = $user->wallets()->first();
+
+ \App\Entitlement::create([
+ 'wallet_id' => $wallet->id,
+ 'sku_id' => $sku->id,
+ 'cost' => 0,
+ 'fee' => 0,
+ 'entitleable_id' => $room->id,
+ 'entitleable_type' => \App\Meet\Room::class
+ ]);
}
// Remove 'meet' SKU/entitlements
@@ -137,19 +115,6 @@
);
\App\Entitlement::where('entitleable_type', \App\Meet\Room::class)->forceDelete();
- \App\Sku::where('title', 'room')->delete();
- \App\Sku::where('title', 'group-room')->delete();
-
- \App\Sku::create([
- 'title' => 'meet',
- 'name' => 'Voice & Video Conferencing (public beta)',
- 'description' => 'Video conferencing tool',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Meet',
- 'active' => true,
- ]);
Schema::dropIfExists('permissions');
}
diff --git a/src/database/migrations/2022_09_08_100000_plans_free_months.php b/src/database/migrations/2022_09_08_100000_plans_free_months.php
--- a/src/database/migrations/2022_09_08_100000_plans_free_months.php
+++ b/src/database/migrations/2022_09_08_100000_plans_free_months.php
@@ -2,7 +2,6 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
@@ -20,8 +19,6 @@
$table->tinyInteger('free_months')->unsigned()->default(0);
}
);
-
- DB::table('plans')->update(['free_months' => 1]);
}
/**
diff --git a/src/database/seeds/DatabaseSeeder.php b/src/database/seeds/DatabaseSeeder.php
deleted file mode 100644
--- a/src/database/seeds/DatabaseSeeder.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-use Illuminate\Database\Seeder;
-
-// phpcs:ignore
-class DatabaseSeeder extends Seeder
-{
- /**
- * Seed the application's database.
- *
- * @return void
- */
- public function run()
- {
- // Define seeders order
- $seeders = [
- 'IP4NetSeeder',
- 'TenantSeeder',
- 'DiscountSeeder',
- 'DomainSeeder',
- 'SkuSeeder',
- 'PackageSeeder',
- 'PlanSeeder',
- 'PowerDNSSeeder',
- 'UserSeeder',
- 'OauthClientSeeder',
- 'ResourceSeeder',
- 'SharedFolderSeeder',
- 'MeetRoomSeeder'
- ];
-
- $env = ucfirst(App::environment());
-
- // Check if the seeders exists
- foreach ($seeders as $idx => $name) {
- $class = "Database\\Seeds\\$env\\$name";
- $seeders[$idx] = class_exists($class) ? $class : null;
- }
-
- $seeders = array_filter($seeders);
-
- $this->call($seeders);
- }
-}
diff --git a/src/database/seeds/production/DiscountSeeder.php b/src/database/seeds/production/DiscountSeeder.php
deleted file mode 100644
--- a/src/database/seeds/production/DiscountSeeder.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Database\Seeds\Production;
-
-use App\Discount;
-use Illuminate\Database\Seeder;
-
-class DiscountSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- *
- * @return void
- */
- public function run()
- {
- Discount::create(
- [
- 'description' => 'Free Account',
- 'discount' => 100,
- 'active' => true,
- ]
- );
-
- Discount::create(
- [
- 'description' => 'Student or Educational Institution',
- 'discount' => 30,
- 'active' => true,
- ]
- );
- }
-}
diff --git a/src/database/seeds/production/DomainSeeder.php b/src/database/seeds/production/DomainSeeder.php
deleted file mode 100644
--- a/src/database/seeds/production/DomainSeeder.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Database\Seeds\Production;
-
-use App\Domain;
-use Illuminate\Database\Seeder;
-
-class DomainSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- *
- * @return void
- */
- public function run()
- {
- $domains = [
- "attorneymail.ch",
- "barmail.ch",
- "collaborative.li",
- "diplomail.ch",
- "freedommail.ch",
- "groupoffice.ch",
- "journalistmail.ch",
- "legalprivilege.ch",
- "libertymail.co",
- "libertymail.net",
- "kolabnow.com",
- "kolabnow.ch",
- "mailatlaw.ch",
- "medmail.ch",
- "mykolab.ch",
- "mykolab.com",
- "myswissmail.ch",
- "opengroupware.ch",
- "pressmail.ch",
- "swissgroupware.ch",
- "switzerlandmail.ch",
- "trusted-legal-mail.ch",
- ];
-
- foreach ($domains as $domain) {
- Domain::create(
- [
- 'namespace' => $domain,
- 'status' => Domain::STATUS_CONFIRMED + Domain::STATUS_ACTIVE,
- 'type' => Domain::TYPE_PUBLIC
- ]
- );
- }
- }
-}
diff --git a/src/database/seeds/production/PackageSeeder.php b/src/database/seeds/production/PackageSeeder.php
deleted file mode 100644
--- a/src/database/seeds/production/PackageSeeder.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace Database\Seeds\Production;
-
-use App\Package;
-use App\Sku;
-use Illuminate\Database\Seeder;
-
-class PackageSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- *
- * @return void
- */
- public function run()
- {
- $skuActiveSync = Sku::firstOrCreate(['title' => 'activesync']);
- $skuGroupware = Sku::firstOrCreate(['title' => 'groupware']);
- $skuMailbox = Sku::firstOrCreate(['title' => 'mailbox']);
- $skuStorage = Sku::firstOrCreate(['title' => 'storage']);
-
- $package = Package::create(
- [
- 'title' => 'kolab',
- 'name' => 'Groupware Account',
- 'description' => 'A fully functional groupware account.',
- 'discount_rate' => 0
- ]
- );
-
- $skus = [
- $skuMailbox,
- $skuGroupware,
- $skuStorage,
- $skuActiveSync
- ];
-
- $package->skus()->saveMany($skus);
-
- // This package contains 2 units of the storage SKU, which just so happens to also
- // be the number of SKU free units.
- $package->skus()->updateExistingPivot(
- $skuStorage,
- ['qty' => 2],
- false
- );
-
- $package = Package::create(
- [
- 'title' => 'lite',
- 'name' => 'Lite Account',
- 'description' => 'Just mail and no more.',
- 'discount_rate' => 0
- ]
- );
-
- $skus = [
- $skuMailbox,
- $skuStorage
- ];
-
- $package->skus()->saveMany($skus);
-
- $package->skus()->updateExistingPivot(
- Sku::firstOrCreate(['title' => 'storage']),
- ['qty' => 2],
- false
- );
-
- $package = Package::create(
- [
- 'title' => 'domain-hosting',
- 'name' => 'Domain Hosting',
- 'description' => 'Use your own, existing domain.',
- 'discount_rate' => 0
- ]
- );
-
- $skus = [
- Sku::firstOrCreate(['title' => 'domain-hosting'])
- ];
-
- $package->skus()->saveMany($skus);
- }
-}
diff --git a/src/database/seeds/production/PlanSeeder.php b/src/database/seeds/production/PlanSeeder.php
deleted file mode 100644
--- a/src/database/seeds/production/PlanSeeder.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Database\Seeds\Production;
-
-use App\Package;
-use App\Plan;
-use Illuminate\Database\Seeder;
-
-class PlanSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- *
- * @return void
- */
- public function run()
- {
- $description = <<<'EOD'
-<p>Everything you need to get started or try Kolab Now, including:</p>
-<ul>
- <li>Perfect for anyone wanting to move to Kolab Now</li>
- <li>Suite of online apps: Secure email, calendar, address book, files and more</li>
- <li>Access for anywhere: Sync all your devices to your Kolab Now account</li>
- <li>Secure hosting: Managed right here on our own servers in Switzerland </li>
- <li>Start protecting your data today, no ads, no crawling, no compromise</li>
- <li>An ideal replacement for services like Gmail, Office 365, etc…</li>
-</ul>
-EOD;
-
- $plan = Plan::create(
- [
- 'title' => 'individual',
- 'name' => 'Individual Account',
- 'description' => $description,
- 'free_months' => 1,
- 'discount_qty' => 0,
- 'discount_rate' => 0
- ]
- );
-
- $packages = [
- Package::firstOrCreate(['title' => 'kolab'])
- ];
-
- $plan->packages()->saveMany($packages);
-
- $description = <<<'EOD'
-<p>All the features of the Individual Account, with the following extras:</p>
-<ul>
- <li>Perfect for anyone wanting to move a group or small business to Kolab Now</li>
- <li>Recommended to support users from 1 to 100</li>
- <li>Use your own personal domains with Kolab Now</li>
- <li>Manage and add users through our online admin area</li>
- <li>Flexible pricing based on user count</li>
-</ul>
-EOD;
-
- $plan = Plan::create(
- [
- 'title' => 'group',
- 'name' => 'Group Account',
- 'description' => $description,
- 'free_months' => 1,
- 'discount_qty' => 0,
- 'discount_rate' => 0
- ]
- );
-
- $packages = [
- Package::firstOrCreate(['title' => 'domain-hosting']),
- Package::firstOrCreate(['title' => 'kolab']),
- ];
-
- $plan->packages()->saveMany($packages);
- }
-}
diff --git a/src/database/seeds/production/SkuSeeder.php b/src/database/seeds/production/SkuSeeder.php
deleted file mode 100644
--- a/src/database/seeds/production/SkuSeeder.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-namespace Database\Seeds\Production;
-
-use App\Sku;
-use Illuminate\Database\Seeder;
-
-class SkuSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- *
- * @return void
- */
- public function run()
- {
- $skus = [
- [
- 'title' => 'mailbox',
- 'name' => 'User Mailbox',
- 'description' => 'Just a mailbox',
- 'cost' => 444,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Mailbox',
- 'active' => true,
- ],
- [
- 'title' => 'domain',
- 'name' => 'Hosted Domain',
- 'description' => 'Somewhere to place a mailbox',
- 'cost' => 100,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Domain',
- 'active' => false,
- ],
- [
- 'title' => 'domain-registration',
- 'name' => 'Domain Registration',
- 'description' => 'Register a domain with us',
- 'cost' => 101,
- 'period' => 'yearly',
- 'handler_class' => 'App\Handlers\DomainRegistration',
- 'active' => false,
- ],
- [
- 'title' => 'domain-hosting',
- 'name' => 'External Domain',
- 'description' => 'Host a domain that is externally registered',
- 'cost' => 100,
- 'units_free' => 1,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\DomainHosting',
- 'active' => true,
- ],
- [
- 'title' => 'domain-relay',
- 'name' => 'Domain Relay',
- 'description' => 'A domain you host at home, for which we relay email',
- 'cost' => 103,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\DomainRelay',
- 'active' => false,
- ],
- [
- 'title' => 'storage',
- 'name' => 'Storage Quota',
- 'description' => 'Some wiggle room',
- 'cost' => 50,
- 'units_free' => 2,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Storage',
- 'active' => true,
- ],
- [
- 'title' => 'groupware',
- 'name' => 'Groupware Features',
- 'description' => 'Groupware functions like Calendar, Tasks, Notes, etc.',
- 'cost' => 555,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Groupware',
- 'active' => true,
- ],
- [
- 'title' => 'resource',
- 'name' => 'Resource',
- 'description' => 'Reservation taker',
- 'cost' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Resource',
- 'active' => true,
- ],
- [
- 'title' => 'shared-folder',
- 'name' => 'Shared Folder',
- 'description' => 'A shared folder',
- 'cost' => 89,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\SharedFolder',
- 'active' => false,
- ],
- [
- 'title' => '2fa',
- 'name' => '2-Factor Authentication',
- 'description' => 'Two factor authentication for webmail and administration panel',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Auth2F',
- 'active' => true,
- ],
- [
- 'title' => 'activesync',
- 'name' => 'Activesync',
- 'description' => 'Mobile synchronization',
- 'cost' => 100,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Activesync',
- 'active' => true,
- ],
- [
- 'title' => 'beta',
- 'name' => 'Private Beta (invitation only)',
- 'description' => 'Access to the private beta program subscriptions',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Beta',
- 'active' => false,
- ],
- [
- 'title' => 'group',
- 'name' => 'Distribution list',
- 'description' => 'Mail distribution list',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Group',
- 'active' => true,
- ],
- [
- 'title' => 'group-room',
- 'name' => 'Group conference room',
- 'description' => 'Shareable audio & video conference room',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\GroupRoom',
- 'active' => true,
- ],
- [
- 'title' => 'room',
- 'name' => 'Standard conference room',
- 'description' => 'Audio & video conference room',
- 'cost' => 0,
- 'units_free' => 0,
- 'period' => 'monthly',
- 'handler_class' => 'App\Handlers\Room',
- 'active' => true,
- ],
- ];
-
- foreach ($skus as $sku) {
- // Check existence because migration might have added this already
- if (!Sku::where('title', $sku['title'])->first()) {
- Sku::create($sku);
- }
- }
- }
-}

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 2, 6:00 PM (3 d, 19 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18820170
Default Alt Text
D3902.1775152850.diff (32 KB)

Event Timeline