# fluent-boards/1.95/app/Services/Intergrations/FluentCRM/Init.php

FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration, version 1.95. 106 lines.

- Page: https://pluginprobe.com/plugins/fluent-boards/1.95/code/app/Services/Intergrations/FluentCRM/Init.php
- Raw: https://pluginprobe.com/plugins/fluent-boards/1.95/raw/app/Services/Intergrations/FluentCRM/Init.php
- Modified: 2026-05-21T15:03:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluent-boards/1.95/code/app/Services/Intergrations/FluentCRM/Init.php#L10-L20`.

```php
<?php

namespace FluentBoards\App\Services\Intergrations\FluentCRM;

use FluentBoards\App\App;
use FluentBoards\App\Vite;
use FluentBoards\App\Services\Intergrations\FluentCRM\Automations\ContactAddedBoardTrigger;
use FluentBoards\App\Services\Intergrations\FluentCRM\Automations\ContactAddedTaskTrigger;
use FluentBoards\App\Services\Intergrations\FluentCRM\Automations\StageChangedTrigger;
use FluentBoards\App\Services\Intergrations\FluentCRM\Automations\TaskCreateAction;
use FluentBoards\App\Services\TransStrings;

class Init
{
    public function __construct()
    {
        $this->registerToContactSection();

        (new DeepIntegration())->init();
        $this->registerAutomationFunnels();


        add_filter('fluent_crm_asset_listed_slugs', function ($lists) {
            $lists[] = 'fluent-boards';
            return $lists;
        });

    }

    public function registerToContactSection()
    {
        add_action('fluent_crm/global_app_boot_loaded', function () {
            $this->enqueueCrmContactApp3();
        });
    }

    /**
     * Enqueue the FluentCRM contact app bundle.
     *
     * @return void
     */
    protected function enqueueCrmContactApp3()
    {
        $app = App::getInstance();
        $assets = $app['url.assets'];
        $slug = $app->config->get('app.slug');
        $handle = $slug . '_in_crm_contact_app3';
        $dependencies = wp_script_is('fluentcrm_admin_app_boot', 'registered') || wp_script_is('fluentcrm_admin_app_boot', 'enqueued')
            ? ['fluentcrm_admin_app_boot']
            : [];

        Vite::injectViteClient();

        Vite::enqueueScript(
            $handle,
            'admin/crm-contact-app3/app.js',
            $dependencies,
            FLUENT_BOARDS_PLUGIN_VERSION,
            true
        );

        wp_localize_script(
            $handle,
            'fluentBoardsCrmContactApp',
            [
                'slug'             => $slug,
                'nonce'            => wp_create_nonce($slug),
                'rest'             => $this->getRestInfo($app),
                'ajaxurl'          => admin_url('admin-ajax.php'),
                'asset_url'        => $assets,
                'trans'            => TransStrings::getStrings(),
                'base_url'         => fluent_boards_page_url(),
                'admin_url'        => admin_url('admin.php'),
                'render_in'        => is_admin() ? 'admin' : 'front',
                'has_pro'          => defined('FLUENT_BOARDS_PRO_VERSION'),
                'advanced_modules' => fluent_boards_get_pref_settings(),
                'features'         => fluent_boards_get_features_config(),
            ]
        );
    }

    public function registerAutomationFunnels()
    {
//        new ContactAddedBoardTrigger();
        new ContactAddedTaskTrigger();
        new StageChangedTrigger();

        new TaskCreateAction();
    }


    protected function getRestInfo($app)
    {
        $ns = $app->config->get('app.rest_namespace');
        $ver = $app->config->get('app.rest_version');

        return [
            'base_url'  => esc_url_raw(rest_url()),
            'url'       => rest_url($ns . '/' . $ver),
            'nonce'     => wp_create_nonce('wp_rest'),
            'namespace' => $ns,
            'version'   => $ver,
        ];
    }
}

```
