HEX
Server: Apache
System: Linux www 6.18.4-i1-ampere #899 SMP Thu Jan 8 10:39:05 CET 2026 aarch64
User: sws1073755998 (1073755998)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: /home/www/public/wp-content/plugins/ionos-essentials/ionos-essentials.php
<?php

/**
 * Plugin Name:       Essentials
 * Description:       The Essentials plugin provides hosting specific functionality.
 * Requires at least: 6.6
 * Requires Plugins:
 * Requires PHP:      7.4
 * Version:           1.4.4
 * Update URI:        https://github.com/IONOS-WordPress/ionos-wordpress/releases/download/%40ionos-wordpress%2Flatest/ionos-essentials-info.json
 * Plugin URI:        https://github.com/IONOS-WordPress/ionos-wordpress/tree/main/packages/wp-plugin/ionos-essentials
 * License:           GPL-2.0-or-later
 * Author:            IONOS Group
 * Author URI:        https://www.ionos-group.com/brands.html
 * Domain Path:       /ionos-essentials/languages
 * Text Domain:       ionos-essentials
 */

namespace ionos\essentials;

use ionos\essentials\wpscan\WPScan;

const PLUGIN_FILE = __FILE__;
const PLUGIN_DIR  = __DIR__;

defined('ABSPATH') || exit();

\add_action(
  'init',
  function () {
    if (__DIR__ === WPMU_PLUGIN_DIR) {
      \load_muplugin_textdomain('ionos-essentials', 'ionos-essentials/languages/');
    } else {
      \load_plugin_textdomain('ionos-essentials', false, 'ionos-essentials/ionos-essentials/languages/');
    }
  }
);

\add_action('admin_enqueue_scripts', function ($hook): void {
  // enqueue maintenance mode scripts
  $maintenance_mode_assets = require_once __DIR__ . '/ionos-essentials/build/maintenance_mode/index.asset.php';
  \wp_enqueue_script(
    'ionos-essentials-maintenance-mode',
    plugins_url('/ionos-essentials/build/maintenance_mode/index.js', __FILE__),
    $maintenance_mode_assets['dependencies'],
    $maintenance_mode_assets['version'],
    true
  );

  // enqueue security scripts
  $security_assets = require_once __DIR__ . '/ionos-essentials/build/security/index.asset.php';
  \wp_enqueue_script(
    'ionos-essentials-security',
    \plugins_url('/ionos-essentials/build/security/index.js', __FILE__),
    $security_assets['dependencies'],
    $security_assets['version'],
    true,
  );

  // enqueue wpscan scripts
  $token   = \get_option('ionos_security_wpscan_token', '');
  $scripts = empty($token) ? [] : ['plugin-install', 'theme-install', 'theme-overview'];
  foreach ($scripts as $name) {

    $asset_path = __DIR__ . "/ionos-essentials/build/wpscan/{$name}-index.asset.php";
    $script_url = \plugins_url("/ionos-essentials/build/wpscan/{$name}-index.js", __FILE__);

    if (! file_exists($asset_path)) {
      continue;
    }

    $asset = require_once $asset_path;

    \wp_register_script("ionos-essentials-{$name}", $script_url, $asset['dependencies'], $asset['version'], true);

    \wp_set_script_translations(
      "ionos-essentials-{$name}",
      'ionos-essentials',
      PLUGIN_DIR . '/ionos-essentials/languages'
    );
  }

  // enqueue dashboard scripts
  if (ADMIN_PAGE_HOOK !== $hook) {
    return;
  }
  $dashboard_assets = require_once __DIR__ . '/ionos-essentials/build/dashboard/index.asset.php';
  \wp_enqueue_script(
    'ionos-essentials-dashboard',
    \plugins_url('/ionos-essentials/build/dashboard/index.js', __FILE__),
    $dashboard_assets['dependencies'],
    $dashboard_assets['version'],
    true,
  );

  \wp_set_script_translations(
    'ionos-essentials-dashboard',
    'ionos-essentials',
    PLUGIN_DIR . '/ionos-essentials/languages'
  );
});

if (($_GET['ionos-highlight'] ?? '') === 'chatbot') {
  \add_action('wp_enqueue_scripts', function () {
    if (! is_user_logged_in()) {
      return;
    }

    $assets_file = __DIR__ . '/ionos-essentials/build/ai_agent/index.asset.php';
    if (! file_exists($assets_file)) {
      return;
    }

    $assets = require_once $assets_file;

    \wp_enqueue_script(
      'ionos-essentials-ai-agent',
      \plugins_url('ionos-essentials/build/ai_agent/index.js', __FILE__),
      $assets['dependencies'],
      $assets['version'],
      true
    );
  });
}

require_once __DIR__ . '/ionos-essentials/inc/class-tenant.php';
require_once __DIR__ . '/ionos-essentials/inc/tenants/index.php';
require_once __DIR__ . '/ionos-essentials/inc/update/index.php';

// soc plugin components
require_once __DIR__ . '/ionos-essentials/inc/migration/index.php';

// features
require_once __DIR__ . '/ionos-essentials/inc/switch-page/index.php';
require_once __DIR__ . '/ionos-essentials/inc/dashboard/index.php';
require_once __DIR__ . '/ionos-essentials/inc/descriptify/index.php';
require_once __DIR__ . '/ionos-essentials/inc/jetpack-flow/index.php';
require_once __DIR__ . '/ionos-essentials/inc/login/index.php';
require_once __DIR__ . '/ionos-essentials/inc/security/index.php';
require_once __DIR__ . '/ionos-essentials/inc/maintenance_mode/index.php';
require_once __DIR__ . '/ionos-essentials/inc/wpscan/index.php';
require_once __DIR__ . '/ionos-essentials/inc/loop/index.php';
require_once __DIR__ . '/ionos-essentials/inc/adminbar/index.php';

require_once __DIR__ . '/ionos-essentials/inc/extendify/index.php';
require_once __DIR__ . '/ionos-essentials/inc/mcp/index.php';

// soc plugin components
require_once __DIR__ . '/ionos-essentials/inc/migration/index.php';

function is_stretch(): bool
{
  return strncmp(getcwd(), '/home/www/public', strlen('/home/www/public')) === 0 || array_key_exists('SFS', $_SERVER);
}

/**
 * Check if a plugin is active, including custom plugins loaded via ionos stretch extra
 *
 * This function should always be used in favor of WordPress function is_plugin_active
 * to take custom loaded plugins from stretch-extra into account
 */
function _is_plugin_active(string $plugin): bool
{
  if (function_exists('\ionos\stretch_extra\secondary_plugin_dir\is_custom_plugin_active')) {
    $_plugin   = 'plugins/' . $plugin;
    $is_active = \ionos\stretch_extra\secondary_plugin_dir\is_custom_plugin_active($_plugin);
    if ($is_active) {
      return $is_active;
    }
  }

  if (! function_exists('is_plugin_active')) {
    require_once ABSPATH . 'wp-admin/includes/plugin.php';
  }
  return is_plugin_active($plugin);
}

// TODO: evaluate for other tenants than IONOS

// \add_filter(
//   'gettext_ionos-essentials',
//   function ($text) {
//     if ( ! str_contains($text, 'IONOS')) {
//       return $text;
//     }
//     $brand_name = \get_option('ionos_brand_name', 'IONOS');
//     // TODO: replace more? menu_brand, non capital, ...
//     return str_replace('IONOS', $brand_name, $text);
//   }
// );