Skip to main content

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.

  1. Navigate to your folder where you have the docker-compose.yml.
  2. Remove MIXPOST_VERSION env, then run:
# 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?

  1. Navigate to your Standalone/Laravel app.
  2. Run php artisan make:migration create_mixpost_v1_tables
  3. Open the migration file from database/migrations and copy the migration code from above into your migration file
  4. Run php artisan migrate
  5. Done!

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