MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v8.4

No permission to download

Avinash

Administrator
Staff member
LV
0
 
Avinash submitted a new resource:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS - MagicAI is designed to help you generate high-quality content instantly

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS - CodeCanyon Item for Sale


All-in-one SaaS platform to generate AI content and start making money in minutes
MagicAI is designed to help you generate high-quality content instantly, without breaking a sweat. It...

Read more about this resource...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v4.4

4.4 – JAN 29, 2024​

FIX: AI chat image page opening issues.
FIX: AI chat image feature not closable issue.
FIX: OpenAI settings page not opening issue.
FIX: Other typo issues.

4.3 – JAN 26, 2024​

NEW: Fine Tune Models
NEW: AI RSS
TWEAK: AI Youtube - Insert and save thumbnail.
TWEAK: Improve auto-translate.
FIX: Chat Image and AI Rewriter issue with multiple API keys.

4.2 – JAN 23, 2024​

NEW: Auto-translate feature with Google for...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v5.3

5.3 – FEB 28, 2024​

NEW: Fully customizable floating chatbots (Frontend + Dashboard)
NEW: AI Image to Video - Bring your images to life.
NEW: Brand Voice - AI Content tailored to your company and products.
NEW: Inner Pages - Database records are now included in the package.
TWEAK: Enhanced control prevents simultaneous subscription to multiple free plans.
TWEAK: We’ve refined the dark theme style for a more polished user experience.
TWEAK: Users can now conveniently...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v5.4

v5.4 – MAR 13, 2024
NEW: Ability to Create and Customize Chatbots for End Users
NEW: Chatbot Training for End Users (Free Extension)
NEW: Wordpress Integration (Paid Extension)
NEW: Cloudflare R2 Storage (Paid Extension)
NEW: Paddle Gateway Added
NEW: Razorpay Gateway Added
TWEAK: Huge Performance Update
TWEAK: Refactored Structure
TWEAK: Improved Webchat (Free Extension)
TWEAK: Chatbot Training with Docs and Link
TWEAK: AI Chat
TWEAK: Skeleton Loader for AI Image
TWEAK: Email...

Read the rest of this update entry...
 
Note
Nulled to install and download extension

P/S
Change license for extension 0 to 1
Change data price 29 and 39 to 0
for 2 extension

Cloudflare R2​

and

Wordpress integration​


/app/Services/Extension/Traits/InstallExtension.php

PHP:
<?php

namespace App\Services\Extension\Traits;

use App\Helpers\Classes\Helper;
use App\Models\Extension;
use Exception;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;

trait InstallExtension
{
    public function install(string $extensionSlug): bool|array
    {
        $dbExtension = Extension::query()->where('slug', $extensionSlug)->first();

        if ($dbExtension->licensed != 1) {
            return [
                'status' => false,
                'message' => trans('Invalid license key, please buy the extension first.')
            ];
        }

        $this->extensionSlug = $extensionSlug;

        //$licenseKey = Helper::settingTwo('liquid_license_domain_key');

        $email = 'admin@admin.com';

        if (! $email) {
            return [
                'status' => false,
                'message' => trans('Invalid license key')
            ];
        }

        $response = Http::get('https://portal.liquid-themes.com/api/extensions/download', [
            //'email' => $email,
            'slug' => $extensionSlug,
            //'license' => $licenseKey,
            'mode' => 'test',
            'version' => $dbExtension?->getAttribute('version') ?: 'v2'
        ]);

        if ($response->failed()) {
            return [
                'status' => false,
                'message' => trans('Failed to download extension')
            ];
        }

        $zipContent = $response->body();

        Storage::disk('local')->put('file.zip', $zipContent);

        $checkZip = $this->zipArchive->open(
            Storage::disk('local')->path('file.zip')
        );

        if ($checkZip) {

            $this->zipExtractPath = storage_path('app/zip-extract');

            $this->zipArchive->extractTo($this->zipExtractPath);

            $this->zipArchive->close();

            Storage::disk('local')->delete('file.zip');

            try {
                # index json
                $this->getIndexJson();

                if (empty($this->indexJsonArray)) {
                    return [
                        'status' => false,
                        'message' => trans('index.json not found')
                    ];
                }

                $this->deleteOldVersionFiles();

                # make dir
                $this->makeDir($extensionSlug);

                # run install query
                $this->runInstallQuery();

                # copy resource
                $this->copyResource();

                # copy view
                $this->copyRoute();

                # copy controllers
                $this->copyControllers();

                # copy files
                $this->copyFiles();

                # delete zip extract dir
                (new Filesystem)->deleteDirectory($this->zipExtractPath);

                Extension::query()->where('slug', $extensionSlug)
                    ->update([
                        'installed' => 1
                    ]);

                return [
                    'success' => true,
                    'status' => true,
                    'message' => trans('Extension installed successfully')
                ];

            }catch (Exception $e) {
                return [
                    'status' => false,
                    'message' => $e->getMessage()
                ];
            }
        }
    }

    /**
     * Install query for extension
     *
     * @return void
     */
    public function runInstallQuery(): void
    {
        $data = data_get($this->indexJsonArray, 'migrations.install');

        if (empty($data)) {
            return;
        }

        foreach ($data as $value) {
            $table = data_get($value, 'condition.table');

            $column = data_get($value, 'condition.column', null);

            $sqlPath = $this->zipExtractPath . DIRECTORY_SEPARATOR . 'migrations'. DIRECTORY_SEPARATOR . data_get($value, 'path');

            if (
                Schema::hasTable($table)
                && File::exists($sqlPath)
                && is_null($column)
            ) {
                $installQuery = $this->installQuery(
                    $sqlPath
                );

                DB::unprepared($installQuery);
            } else if (
                Schema::hasTable($table)
                && File::exists($sqlPath)
                && $column
            ) {
                $installQuery = $this->installQuery(
                    $sqlPath
                );

                $column = data_get($value, 'condition.column');

                if (! Schema::hasColumn($table, $column)) {
                    DB::unprepared($installQuery);
                }
            }
        }
    }

    private function installQuery(string $sqlPath): bool|string
    {
        return file_get_contents($sqlPath);
    }

    public function copyResource(): void
    {
        $zipExtractPath = $this->zipExtractPath;

        $extensionSlug = $this->extensionSlug;

        File::copy(
            $zipExtractPath . DIRECTORY_SEPARATOR . 'index.json',
            resource_path("extensions/$extensionSlug/index.json")
        );

        $data = data_get($this->indexJsonArray, 'migrations.uninstall');

        if (empty($data) && ! is_array($data)) {
            return;
        }

        foreach ($data as $value) {
            $path = data_get($value, 'path');

            $sqlPath = $zipExtractPath . DIRECTORY_SEPARATOR . 'migrations'. DIRECTORY_SEPARATOR . $path;

            File::copy($sqlPath, resource_path("extensions/$extensionSlug/migrations/$path"));
        }
    }

    public function copyRoute(): void {
        $zipExtractPath = $this->zipExtractPath;

        $route = data_get($this->indexJsonArray, 'route');

        if (empty($route)) {
            return;
        }

        $routePath = $zipExtractPath. DIRECTORY_SEPARATOR . $route;

        if (File::exists($routePath)) {
            File::copy(
                $routePath,
                base_path("routes/extroutes/". basename($routePath))
            );
        }
    }

    public function copyControllers(): void
    {
        $zipExtractPath = $this->zipExtractPath;

        $controllers = data_get($this->indexJsonArray, 'controllers');

        if (! is_array($controllers)) {
            return;
        }

        foreach ($controllers as $controller) {

            $controllerPath = $zipExtractPath . DIRECTORY_SEPARATOR . $controller;

            if (! File::isDirectory(dirname(base_path($controller)))) {
                File::makeDirectory(dirname(base_path($controller)), 0777, true);
            }

            if (File::exists($controllerPath)) {
                File::copy(
                    $controllerPath,
                    base_path($controller)
                );
            }
        }
    }


    public function copyFiles(): void {

        $zipExtractPath = $zipExtractPath ?? $this->zipExtractPath;

        $files = data_get($this->indexJsonArray, 'stubs');

        if (empty($files) && ! is_array($files)) {
            return;
        }

        foreach ($files as  $key => $file) {

            $fileName = is_numeric($key) ? basename($file) : $key;

            $sourcePath = $zipExtractPath  . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . $fileName;

            $destinationPath = base_path($file);

            Log::info("Copying $sourcePath to $destinationPath...");

            if (! File::isDirectory(dirname($destinationPath))) {
                File::makeDirectory(dirname($destinationPath), 0777, true);
            }

            File::copy($sourcePath, $destinationPath);
        }
    }

    /**
     * Check license function
     *
     * @param string|null $licenseKey
     * @return bool|string|null
     */
    public function checkLicense(?string $licenseKey = null): null|bool|string
    {
        $licenseKey = $licenseKey ?? Helper::settingTwo('liquid_license_domain_key');

        $response = Http::get('https://portal.liquid-themes.com/api/license/' . DIRECTORY_SEPARATOR . $licenseKey);

        if ($response->failed()) {
            return false;
        }

        return $response->json('owner.email');
    }
}
 
Note
Nulled to install and download extension

P/S
Change license for extension 0 to 1
Change data price 29 and 39 to 0
for 2 extension

Cloudflare R2​

and

Wordpress integration​


/app/Services/Extension/Traits/InstallExtension.php

PHP:
<?php

namespace App\Services\Extension\Traits;

use App\Helpers\Classes\Helper;
use App\Models\Extension;
use Exception;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;

trait InstallExtension
{
    public function install(string $extensionSlug): bool|array
    {
        $dbExtension = Extension::query()->where('slug', $extensionSlug)->first();

        if ($dbExtension->licensed != 1) {
            return [
                'status' => false,
                'message' => trans('Invalid license key, please buy the extension first.')
            ];
        }

        $this->extensionSlug = $extensionSlug;

        //$licenseKey = Helper::settingTwo('liquid_license_domain_key');

        $email = 'admin@admin.com';

        if (! $email) {
            return [
                'status' => false,
                'message' => trans('Invalid license key')
            ];
        }

        $response = Http::get('https://portal.liquid-themes.com/api/extensions/download', [
            //'email' => $email,
            'slug' => $extensionSlug,
            //'license' => $licenseKey,
            'mode' => 'test',
            'version' => $dbExtension?->getAttribute('version') ?: 'v2'
        ]);

        if ($response->failed()) {
            return [
                'status' => false,
                'message' => trans('Failed to download extension')
            ];
        }

        $zipContent = $response->body();

        Storage::disk('local')->put('file.zip', $zipContent);

        $checkZip = $this->zipArchive->open(
            Storage::disk('local')->path('file.zip')
        );

        if ($checkZip) {

            $this->zipExtractPath = storage_path('app/zip-extract');

            $this->zipArchive->extractTo($this->zipExtractPath);

            $this->zipArchive->close();

            Storage::disk('local')->delete('file.zip');

            try {
                # index json
                $this->getIndexJson();

                if (empty($this->indexJsonArray)) {
                    return [
                        'status' => false,
                        'message' => trans('index.json not found')
                    ];
                }

                $this->deleteOldVersionFiles();

                # make dir
                $this->makeDir($extensionSlug);

                # run install query
                $this->runInstallQuery();

                # copy resource
                $this->copyResource();

                # copy view
                $this->copyRoute();

                # copy controllers
                $this->copyControllers();

                # copy files
                $this->copyFiles();

                # delete zip extract dir
                (new Filesystem)->deleteDirectory($this->zipExtractPath);

                Extension::query()->where('slug', $extensionSlug)
                    ->update([
                        'installed' => 1
                    ]);

                return [
                    'success' => true,
                    'status' => true,
                    'message' => trans('Extension installed successfully')
                ];

            }catch (Exception $e) {
                return [
                    'status' => false,
                    'message' => $e->getMessage()
                ];
            }
        }
    }

    /**
     * Install query for extension
     *
     * @return void
     */
    public function runInstallQuery(): void
    {
        $data = data_get($this->indexJsonArray, 'migrations.install');

        if (empty($data)) {
            return;
        }

        foreach ($data as $value) {
            $table = data_get($value, 'condition.table');

            $column = data_get($value, 'condition.column', null);

            $sqlPath = $this->zipExtractPath . DIRECTORY_SEPARATOR . 'migrations'. DIRECTORY_SEPARATOR . data_get($value, 'path');

            if (
                Schema::hasTable($table)
                && File::exists($sqlPath)
                && is_null($column)
            ) {
                $installQuery = $this->installQuery(
                    $sqlPath
                );

                DB::unprepared($installQuery);
            } else if (
                Schema::hasTable($table)
                && File::exists($sqlPath)
                && $column
            ) {
                $installQuery = $this->installQuery(
                    $sqlPath
                );

                $column = data_get($value, 'condition.column');

                if (! Schema::hasColumn($table, $column)) {
                    DB::unprepared($installQuery);
                }
            }
        }
    }

    private function installQuery(string $sqlPath): bool|string
    {
        return file_get_contents($sqlPath);
    }

    public function copyResource(): void
    {
        $zipExtractPath = $this->zipExtractPath;

        $extensionSlug = $this->extensionSlug;

        File::copy(
            $zipExtractPath . DIRECTORY_SEPARATOR . 'index.json',
            resource_path("extensions/$extensionSlug/index.json")
        );

        $data = data_get($this->indexJsonArray, 'migrations.uninstall');

        if (empty($data) && ! is_array($data)) {
            return;
        }

        foreach ($data as $value) {
            $path = data_get($value, 'path');

            $sqlPath = $zipExtractPath . DIRECTORY_SEPARATOR . 'migrations'. DIRECTORY_SEPARATOR . $path;

            File::copy($sqlPath, resource_path("extensions/$extensionSlug/migrations/$path"));
        }
    }

    public function copyRoute(): void {
        $zipExtractPath = $this->zipExtractPath;

        $route = data_get($this->indexJsonArray, 'route');

        if (empty($route)) {
            return;
        }

        $routePath = $zipExtractPath. DIRECTORY_SEPARATOR . $route;

        if (File::exists($routePath)) {
            File::copy(
                $routePath,
                base_path("routes/extroutes/". basename($routePath))
            );
        }
    }

    public function copyControllers(): void
    {
        $zipExtractPath = $this->zipExtractPath;

        $controllers = data_get($this->indexJsonArray, 'controllers');

        if (! is_array($controllers)) {
            return;
        }

        foreach ($controllers as $controller) {

            $controllerPath = $zipExtractPath . DIRECTORY_SEPARATOR . $controller;

            if (! File::isDirectory(dirname(base_path($controller)))) {
                File::makeDirectory(dirname(base_path($controller)), 0777, true);
            }

            if (File::exists($controllerPath)) {
                File::copy(
                    $controllerPath,
                    base_path($controller)
                );
            }
        }
    }


    public function copyFiles(): void {

        $zipExtractPath = $zipExtractPath ?? $this->zipExtractPath;

        $files = data_get($this->indexJsonArray, 'stubs');

        if (empty($files) && ! is_array($files)) {
            return;
        }

        foreach ($files as  $key => $file) {

            $fileName = is_numeric($key) ? basename($file) : $key;

            $sourcePath = $zipExtractPath  . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . $fileName;

            $destinationPath = base_path($file);

            Log::info("Copying $sourcePath to $destinationPath...");

            if (! File::isDirectory(dirname($destinationPath))) {
                File::makeDirectory(dirname($destinationPath), 0777, true);
            }

            File::copy($sourcePath, $destinationPath);
        }
    }

    /**
     * Check license function
     *
     * @param string|null $licenseKey
     * @return bool|string|null
     */
    public function checkLicense(?string $licenseKey = null): null|bool|string
    {
        $licenseKey = $licenseKey ?? Helper::settingTwo('liquid_license_domain_key');

        $response = Http::get('https://portal.liquid-themes.com/api/license/' . DIRECTORY_SEPARATOR . $licenseKey);

        if ($response->failed()) {
            return false;
        }

        return $response->json('owner.email');
    }
}

Screenshot 2024 03 19 at 100949AM
What will do ?
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v5.4.1

5.4.1 – MAR 20, 2024​

FIX: Documents not deleting
FIX: Handle 'server error' when try logging in with non registered account
FIX: Coupon apply problem fixed
FIX: Email templates title and subject
FIX: Stripe pay button
FIX: Issue saving chat template without category
FIX: Chatbot showing in frontend even if active only in dashboard
FIX: Install extension

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v5.8

5.8.0 – MAY 3, 2024​

NEW: Gemini API
NEW: Azure TTS integration
NEW: Pages able to be listed on footer
NEW: Google 2FA
IMPROVEMENT: Enhanced Cloudeflare R2 integration
FIX: Resolved TTS generation issue for certain languages with OpenAI

5.7.1 – MAY 1, 2024​

NEW: Integrated new stable Diffusion 3 and 3 Turbo models.
NEW: Added sitemap generator accessible at https://yourdomain/sitemap.xml.
IMPROVEMENT: Improve AI Video
IMPROVEMENT: Enhanced...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v5.9

Version 5.9 - 10 May 2024
  • NEWSEO Tools (paid extension).
  • NEWPexels and Pixabay for AI Article Wizard images engine.
  • IMPROVEMENTSAdded bulk posts options to AI Writer.
  • IMPROVEMENTSEnhanced AI Writer Markdown.
  • IMPROVEMENTSAI Article Wizard now supports changing image engine (Stable Diffusion, DALL-E, Pexels, and Pixabay).
  • IMPROVEMENTSGeneral style enhancements.
  • FIXResolved issue with Stable Diffusion 3 errors not displaying.

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v6.1.0

6.1.0 – Jun 4, 2024​

NEW: Editable Menu (premium extension)
NEW: API Cost Management
NEW: Users Dashboard and Activities
NEW: Ability to edit plans without canceling
IMPROVEMENT: Enhanced Cryptomus VAT handling
IMPROVEMENT: Various UI improvements
IMPROVEMENT: Better understanding of origin language in "Improve Writing" option
IMPROVEMENT: Ability to delete prompts from Prompt Library
IMPROVEMENT: Option to open documents with AI Editor
FIX: Fixed styling issues on...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v6.1.3

6.1.3 – JUN 10, 2024​

New: Added detailed address fields for users profiles
New: Indians can now use Stripe on checkout due to regulations
Improvements: Enhanced 'Keep Writing' section in AI Editor
Improvements: Directly open plan checkout if only one gateway is active
Fix: Corrected margin and name issues in downloaded documents
Fix: Added Gemini, AI Video, and Voice Clone to menu
Fix: HTML output for AI RSS and AI YouTube
Fix: Play button issue in AI Voiceover
Fix...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v6.2.0

6.2.0 – Jun 22, 2024​

NEW: User Dashboard Tools (Magic Assistant, Shortcuts, Team Invitation)
NEW: Advanced User & Tool Analytics
NEW: Admin Dashboard
NEW: Detailed Summary - Plans & Pricing Page
NEW: Editor Tools - AI Image Generation
NEW: Improved Design for Text to Speech Page
NEW: Dark Theme (Paid)
NEW: Implemented user deletion requests
NEW: Improved WordPress Functionalities - Users can now schedule posts for future publication and utilize many editor features...

Read the rest of this update entry...
 
Avinash updated MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS with a new update entry:

MagicAI - OpenAI Content, Text, Image, Chat, Code Generator as SaaS v6.4.0

6.4.0 – Jul 5, 2024​

NEW: Maintenance Extension
NEW: User Onboarding
NEW: Newsletter Segmentation
NEW: Selectable AI Model for AI Chat
IMPROVEMENT: More AI tools & languages in AI Editor Menu
FIX: GDPR section was not showing
FIX: Chat Settings Extension menu appearance

Read the rest of this update entry...
 
Back
Top