HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/shootinschool/wp-content/plugins/duplicator/src/Utils/ExtraPlugins/CrossPromotion.php
<?php

namespace Duplicator\Utils\ExtraPlugins;

use DUP_LITE_Plugin_Upgrade;
use Duplicator\Controllers\AboutUsController;
use Duplicator\Core\Controllers\ControllersManager;
use Duplicator\Core\Notifications\Notice;
use Duplicator\Core\Views\TplMng;

class CrossPromotion
{
    const PLUGINS_LIMIT = 3;

    /** @var string */
    const NOTICE_SLUG = 'duplicator_cross_promotion';

    /**
     * Init notice
     *
     * @return void
     */
    public static function init()
    {
        if (!current_user_can('install_plugins')) {
            return;
        }

        $installInfo = DUP_LITE_Plugin_Upgrade::getInstallInfo();
        if ($installInfo['updateTime'] + (2 * WEEK_IN_SECONDS) > time()) {
            return;
        }

        if (!ControllersManager::isCurrentPage(ControllersManager::MAIN_MENU_SLUG)) {
            return;
        }

        $plugins = self::getExtraPlugins();
        if (count($plugins) === 0) {
            return;
        }

        AboutUsController::enqueueScripts();

        Notice::add(
            TplMng::getInstance()->render(
                'parts/cross_promotion/list',
                [
                    'plugins' => $plugins,
                    'limit' => self::PLUGINS_LIMIT,
                ],
                false
            ),
            self::NOTICE_SLUG,
            '',
            [
                'autop' => false,
                'dismiss' => Notice::DISMISS_USER,
            ]
        );
    }

    /**
     * Get the extra plugins to be promoted
     *
     * @return ExtraItem[]
     */
    public static function getExtraPlugins()
    {
        $slugs           = self::getSlugs();
        $plugins         = [];
        $extraPluginsMng = ExtraPluginsMng::getInstance();

        foreach ($slugs as $slug) {
            if (count($plugins) >= self::PLUGINS_LIMIT) {
                break;
            }

            if (($plugin = $extraPluginsMng->getBySlug($slug)) === false) {
                continue;
            }

            if ($plugin->isInstalled() || !$plugin->checkRequirments()) {
                continue;
            }

            $plugins[] = $plugin;
        }

        foreach ($extraPluginsMng->getAll() as $plugin) {
            if (count($plugins) >= self::PLUGINS_LIMIT) {
                break;
            }

            if (in_array($plugin->getSlug(), $slugs)) {
                continue;
            }

            if ($plugin->isInstalled() || !$plugin->checkRequirments()) {
                continue;
            }

            $plugins[] = $plugin;
        }

        return $plugins;
    }

    /**
     * Get the slugs of the extra plugins to be promoted with priority
     *
     * @return string[]
     */
    protected static function getSlugs()
    {
        return [
            'search-replace-wpcode/wsrw.php',
            'wp-mail-smtp/wp_mail_smtp.php',
            'insert-headers-and-footers/ihaf.php',
            'all-in-one-seo-pack/all_in_one_seo_pack.php',
            'wpforms-lite/wpforms.php',
            'uncanny-automator/uncanny-automator.php',
        ];
    }
}