Upgrading to v1
Features and fixes:
- Pages (Privacy policy, Terms...etc)
- Customization (Logo & Favicon)
- Forgot/Reset Password
- Two-Factor Authentication
- TikTok UI optimize
- Service forms optimized
- Clear cache on deleting the user
- Twitter analytics alert only to admin (closeable)
- Authorized Account by db column
- Fix workspace user role access
- Fix "Add post from the calendar"
- Fix the command "clear-settings-cache"
Sometimes the upgrade can go wrong, so we recommend that you back up your database before starting the upgrade.
Docker
Upgrading to Mixpost v1 with Docker is straightforward.
# Pull the latest version
docker-compose pull
# Stop and remove the old container
docker-compose down
# Start a new container
docker-compose up -d
If something goes wrong, you can use the inovector/mixpost-pro-team:v0 tag to revert back. Also, you need to restore your database backup.
In your Standalone or Laravel app
Updating your composer.json using the "require" command
composer require inovector/mixpost-pro-team "^1.0"
Updating the database
Some changes were made to the database, use the migration below to update your database to the latest schema:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Inovector\Mixpost\Models\Account;
return new class extends Migration
{
public function up(): void
{
Schema::table('mixpost_accounts', function (Blueprint $table) {
$table->boolean('authorized')->default(false)->after('data');
});
Account::withoutWorkspace()->update(['authorized' => true]);
Schema::table('mixpost_settings', function (Blueprint $table) {
$table->unique(['user_id', 'name']);
});
Schema::create('mixpost_user_two_factor_auth', function (Blueprint $table) {
$table->id();
$table->bigInteger('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->text('secret_key');
$table->text('recovery_codes');
$table->timestamp('confirmed_at')->nullable();
$table->timestamps();
});
Schema::create('mixpost_pages', function (Blueprint $table) {
$table->id();
$table->uuid('uuid')->unique();
$table->string('name')->nullable();
$table->string('slug')->unique();
$table->string('meta_title')->nullable();
$table->text('meta_description')->nullable();
$table->string('layout');
$table->boolean('status')->default(0);
$table->timestamps();
});
Schema::create('mixpost_blocks', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('module');
$table->json('content')->nullable();
$table->boolean('status')->default(0);
$table->timestamps();
});
Schema::create('mixpost_page_block', function (Blueprint $table) {
$table->id();
$table->foreignId('page_id')->constrained('mixpost_pages')->onDelete('cascade');
$table->foreignId('block_id')->constrained('mixpost_blocks')->onDelete('cascade');
$table->json('options')->nullable();
$table->integer('sort_order')->nullable();
});
Schema::create('mixpost_configs', function (Blueprint $table) {
$table->id();
$table->string('group');
$table->string('name');
$table->json('payload')->nullable();
$table->unique(['group', 'name']);
});
}
};
Don't know how to migrate?
Updating the config file
If you have published your configuration file, you should update it by adding new configurations:
<?php
...
/*
* Public pages have an endpoint directly after the url domain.
* If your application already has direct routes, you must set a prefix to avoid conflicts between routes.
*/
'public_pages_prefix' => env('MIXPOST_PUBLIC_PAGES_PREFIX', 'pages'),
/*
* Features status
*/
'features' => [
'forgot_password' => env('MIXPOST_FORGOT_PASSWORD', true),
'two_factor_auth' => env('MIXPOST_TWO_FACTOR_AUTH', true),
],
Or you could publish the config file again using php artisan vendor:publish --tag=mixpost-config --force
and review the changes yourself.
Clear the cache
Clear the cache by running the following command:
php artisan route:cache
php artisan mixpost:clear-settings-cache
php artisan mixpost:clear-services-cache
Finally, terminate the Horizon process by running:
php artisan horizon:terminate