Prv8 Shell
Server : Apache
System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64
User : matalashes ( 1004)
PHP Version : 8.1.29
Disable Function : NONE
Directory :  /usr/src/lsws/lsws-6.3.4/add-ons/webcachemgr/src/View/Model/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/src/lsws/lsws-6.3.4/add-ons/webcachemgr/src/View/Model/ManageViewModel.php
<?php

/** ******************************************
 * LiteSpeed Web Server Cache Manager
 *
 * @author LiteSpeed Technologies, Inc. (https://www.litespeedtech.com)
 * @copyright (c) 2018-2020
 * ******************************************* */

namespace Lsc\Wp\View\Model;

use \Lsc\Wp\Context\Context;
use \Lsc\Wp\WPInstallStorage;
use \Lsc\Wp\WPInstall;
use \Lsc\Wp\PluginVersion;
use \Lsc\Wp\Logger;
use \Lsc\Wp\LSCMException;

class ManageViewModel
{

    const FLD_ICON_DIR = 'iconDir';
    const FLD_SCAN_BTN_NAME = 'scanBtnName';
    const FLD_BTN_STATE = 'btnState';
    const FLD_ACTIVE_VER = 'activeVer';
    const FLD_SHOW_LIST = 'showList';
    const FLD_LIST_DATA = 'listData';
    const FLD_COUNT_DATA = 'countData';
    const FLD_INFO_MSGS = 'infoMsgs';
    const FLD_SUCC_MSGS = 'succMsgs';
    const FLD_ERR_MSGS = 'errMsgs';
    const FLD_WARN_MSGS = 'warnMsgs';
    const COUNT_DATA_INSTALLS = 'installs';
    const COUNT_DATA_ENABLED = 'enabled';
    const COUNT_DATA_DISABLED = 'disabled';
    const COUNT_DATA_WARN = 'warn';
    const COUNT_DATA_ERROR = 'err';
    const COUNT_DATA_FLAGGED = 'flagged';
    const COUNT_DATA_UNFLAGGED = 'unflagged';

    /**
     * @var WPInstallStorage
     */
    protected $wpInstallStorage;

    /**
     * @var mixed[]
     */
    protected $tplData = array();

    /**
     * @var string
     */
    protected $iconDir = '';

    /**
     * @since 1.13.3
     * @var string[][]
     */
    protected $statusInfo = array(
        'disabled' => array(
            'sort' => 'disabled',
            'state' => '<span '
                . 'class="glyphicon glyphicon-flash status-disabled" '
                . 'data-uk-tooltip title="LSCWP is disabled."></span>',
            'btn_content' => '<span class="enable_btn"></span>',
            'btn_title' => 'Click to enable LSCache',
            'onclick' => 'onclick="javascript:lscwpEnableSingle(this);"',
            'btn_attributes' => 'data-uk-tooltip',
            'btn_state' => ''
        ),
        'enabled' => array(
            'sort' => 'enabled',
            'state' => '<span '
                . 'class="glyphicon glyphicon-flash status-enabled" '
                . 'data-uk-tooltip title="LSCWP is enabled."></span>',
            'btn_content' => '<span class="disable_btn"></span>',
            'btn_title' => 'Click to disable LSCache',
            'onclick' => 'onclick="javascript:lscwpDisableSingle(this);"',
            'btn_attributes' => 'data-uk-tooltip',
            'btn_state' => ''
        ),
        'adv_cache' => array(
            'sort' => 'warning',
            'state' => '<span class="status-warning" data-uk-tooltip '
                . 'title="LSCache is enabled but not caching. Please visit the '
                . 'WordPress Dashboard for more information."></span>',
            'btn_content' => '<span class="disable_btn"></span>',
            'btn_title' => 'Click to disable LSCache',
            'onclick' => 'onclick="javascript:lscwpDisableSingle(this);"',
            'btn_attributes' => 'data-uk-tooltip',
            'btn_state' => ''
        ),
        'disabled_no_active_ver' => array(
            'sort' => 'disabled',
            'state' => '<span '
                . 'class="glyphicon glyphicon-flash status-disabled" '
                . 'data-uk-tooltip title="LSCWP is disabled."></span>',
            'btn_content' => '<span class="inactive-action-btn" '
                . 'data-uk-tooltip '
                . 'title="No active LSCWP version set! Cannot enable LSCache.">'
                . '</span>',
            'onclick' => '',
            'btn_attributes' => '',
            'btn_state' => 'disabled',
        ),
        'error' => array(
            'sort' => 'error',
            /**
             * 'state' added individually later.
             */
            'btn_title' => '',
            'btn_content' => '<span class="inactive-action-btn"></span>',
            'onclick' => '',
            'btn_attributes' => '',
            'btn_state' => 'disabled'
        )
    );

    /**
     * @since 1.13.3
     * @var string[][]
     */
    protected $flagInfo = array(
        'unflagged' => array(
            'sort' => 'unflagged',
            'icon' => '<span '
                . 'class="glyphicon glyphicon-flag ls-flag ls-flag-unset">'
                . '</span>',
            'btn_title' => 'Click to set flag',
            'onclick' => 'onclick="javascript:lscwpFlagSingle(this);"',
            'btn_attributes' => 'data-uk-tooltip'
        ),
        'flagged' => array(
            'sort' => 'flagged',
            'icon' => '<span '
                . 'class="glyphicon glyphicon-flag ls-flag ls-flag-set">'
                . '</span>',
            'btn_title' => 'Click to unset flag',
            'onclick' => 'onclick="javascript:lscwpUnflagSingle(this);"',
            'btn_attributes' => 'data-uk-tooltip'
        ),
    );

    /**
     *
     * @param WPInstallStorage  $wpInstallStorage
     */
    public function __construct( WPInstallStorage $wpInstallStorage )
    {
        $this->wpInstallStorage = $wpInstallStorage;

        $this->init();
    }

    protected function init()
    {
        $this->setIconDir();
        $this->setBtnDataAndListVisibility();
        $this->setActiveVerData();
        $this->setListAndCountData();
        $this->setMsgData();
    }

    /**
     *
     * @param string  $field
     * @return null|mixed
     */
    public function getTplData( $field )
    {
        if ( !isset($this->tplData[$field]) ) {
            return null;
        }

        return $this->tplData[$field];
    }

    protected function setIconDir()
    {
        $iconDir = '';

        try
        {
            $iconDir = Context::getOption()->getIconDir();
        }
        catch ( LSCMException $e )
        {
            Logger::debug($e->getMessage() . ' Could not get icon directory.');
        }

        $this->tplData[self::FLD_ICON_DIR] = $iconDir;
    }

    protected function setBtnDataAndListVisibility()
    {
        $scanBtnName = 'Re-scan';
        $btnState = 'disabled';

        if ( ($errStatus = $this->wpInstallStorage->getError()) !== 0 ) {
            $this->tplData[self::FLD_SHOW_LIST] = false;

            if ( $errStatus == WPInstallStorage::ERR_NOT_EXIST ) {
                $scanBtnName = 'Scan';
                $msg = 'Start by clicking Scan. This will discover all active '
                    . 'WordPress installations and add them to a list below.';
            }
            elseif ( $errStatus == WPInstallStorage::ERR_VERSION_LOW ) {
                $scanBtnName = 'Scan';
                $msg = 'To further improve Cache Management features in this '
                    . 'version, current installations must be re-discovered. '
                    . 'Please perform a Scan now.';
            }
            else {
                $msg = 'Scan data could not be read. Please perform a Re-scan.';
            }

            Logger::uiInfo($msg);
        }
        else {
            $this->tplData[self::FLD_SHOW_LIST] = true;
            $discoveredCount = $this->wpInstallStorage->getCount();

            if ( $discoveredCount > 0 ) {
                $btnState = '';
            }
        }

        $this->tplData[self::FLD_SCAN_BTN_NAME] = $scanBtnName;
        $this->tplData[self::FLD_BTN_STATE] = $btnState;
    }

    protected function setListAndCountData()
    {
        $listData = array();

        $countData = array(
            self::COUNT_DATA_INSTALLS => 0,
            self::COUNT_DATA_ENABLED => 0,
            self::COUNT_DATA_DISABLED => 0,
            self::COUNT_DATA_WARN => 0,
            self::COUNT_DATA_ERROR => 0,
            self::COUNT_DATA_FLAGGED => 0,
            self::COUNT_DATA_UNFLAGGED => 0
        );

        $wpInstalls = $this->wpInstallStorage->getAllWPInstalls();

        if ( $wpInstalls !== null ) {
            $countData[self::COUNT_DATA_INSTALLS] = count($wpInstalls);

            foreach ( $wpInstalls as $wpInstall ) {
                $info = array(
                    'statusData' =>
                        $this->getStatusDisplayData($wpInstall, $countData),
                    'flagData' =>
                        $this->getFlagDisplayData($wpInstall, $countData),
                    'siteUrl' => $wpInstall->getData(WPInstall::FLD_SITEURL)
                );

                $listData[$wpInstall->getPath()] = $info;
            }
        }

        $this->tplData[self::FLD_LIST_DATA] = $listData;
        $this->tplData[self::FLD_COUNT_DATA] = $countData;
    }

    /**
     *
     * @param WPInstall  $wpInstall
     * @param int[]      $countData
     * @return string[]
     */
    protected function getStatusDisplayData( WPInstall $wpInstall,
            &$countData )
    {
        $wpStatus = $wpInstall->getStatus();

        if ( $wpInstall->hasFatalError($wpStatus) ) {
            $countData[self::COUNT_DATA_ERROR]++;

            $link = 'https://docs.litespeedtech.com/cp/cpanel'
                . '/wp-cache-management/#whm-plugin-cache-manager-error-status';

            $stateMsg = '';

            if ( $wpStatus & WPInstall::ST_ERR_EXECMD ) {
                $stateMsg = 'WordPress fatal error encountered during action '
                    . 'execution. This is most likely caused by custom code in '
                    . 'this WordPress installation.';
                $link .= '#fatal_error_encountered_during_action_execution';
            }
            if ( $wpStatus & WPInstall::ST_ERR_EXECMD_DB ) {
                $stateMsg = 'Error establishing WordPress database connection.';
                $link .= '#';
            }
            elseif ( $wpStatus & WPInstall::ST_ERR_TIMEOUT ) {
                $stateMsg = 'Timeout occurred during action execution.';
                $link .= '#timeout_occurred_during_action_execution';
            }
            elseif ( $wpStatus & WPInstall::ST_ERR_SITEURL ) {
                $stateMsg = 'Could not retrieve WordPress siteURL.';
                $link .= '#could_not_retrieve_wordpress_siteurl';
            }
            elseif ( $wpStatus & WPInstall::ST_ERR_DOCROOT ) {
                $stateMsg = 'Could not match WordPress siteURL to a known '
                    . 'control panel docroot.';
                $link .= '#could_not_match_wordpress_siteurl_to_a_known_'
                    . 'cpanel_docroot';
            }
            elseif ( $wpStatus & WPInstall::ST_ERR_WPCONFIG ) {
                $stateMsg = 'Could not find a valid wp-config.php file.';
                $link .= '#could_not_find_a_valid_wp-configphp_file';
            }

            $stateMsg .= ' Click for more information.';

            $currStatusData = $this->statusInfo['error'];
            $currStatusData['state'] = "<a href=\"{$link}\" target=\"_blank\" "
                . "rel=\"noopener\" data-uk-tooltip title =\"{$stateMsg}\" "
                . 'class="status-error"></a>';
        }
        elseif ( ($wpStatus & WPInstall::ST_PLUGIN_INACTIVE ) ) {
            $countData[self::COUNT_DATA_DISABLED]++;

            $currVer = $this->getTplData(self::FLD_ACTIVE_VER);

            if ( $currVer == false ) {
                $currStatusData = $this->statusInfo['disabled_no_active_ver'];
            }
            else {
                $currStatusData = $this->statusInfo['disabled'];
            }
        }
        elseif ( !($wpStatus & WPInstall::ST_LSC_ADVCACHE_DEFINED) ) {
            $countData[self::COUNT_DATA_WARN]++;
            $currStatusData = $this->statusInfo['adv_cache'];
        }
        else {
            $countData[self::COUNT_DATA_ENABLED]++;
            $currStatusData = $this->statusInfo['enabled'];
        }

        return $currStatusData;
    }

    /**
     *
     * @param WPInstall  $wpInstall
     * @param int[]      $countData
     * @return string[]
     */
    protected function getFlagDisplayData( WPInstall $wpInstall, &$countData )
    {
        $wpStatus = $wpInstall->getStatus();

        if ( ($wpStatus & WPInstall::ST_FLAGGED ) ) {
            $countData[self::COUNT_DATA_FLAGGED]++;
            $currFlagData = $this->flagInfo['flagged'];
        }
        else {
            $countData[self::COUNT_DATA_UNFLAGGED]++;
            $currFlagData = $this->flagInfo['unflagged'];
        }

        return $currFlagData;
    }

    protected function setActiveVerData()
    {
        try
        {
            $currVer = PluginVersion::getCurrentVersion();
        }
        catch ( LSCMException $e )
        {
            Logger::debug(
                $e->getMessage() . ' Could not get active LSCWP version.'
            );

            Logger::uiWarning(
                'Active LiteSpeed Cache Plugin version is not set. Enable '
                    . 'operations cannot be performed. Please go to '
                    . '<a href="?do=lscwpVersionManager" '
                    . 'title="Go to Version Manager">Version Manager</a> to '
                    . 'select a version.'
                );

            $currVer = false;
        }

        $this->tplData[self::FLD_ACTIVE_VER] = $currVer;
    }

    protected function setMsgData()
    {
        $msgs = $this->wpInstallStorage->getAllCmdMsgs();

        $infoMsgs = Logger::getUiMsgs(Logger::UI_INFO);
        $succMsgs = array_merge(
            $msgs['succ'],
            Logger::getUiMsgs(Logger::UI_SUCC)
        );
        $errMsgs = array_merge(
            $msgs['fail'],
            $msgs['err'],
            Logger::getUiMsgs(Logger::UI_ERR)
        );
        $warnMsgs = Logger::getUiMsgs(Logger::UI_WARN);

        $this->tplData[self::FLD_INFO_MSGS] = $infoMsgs;
        $this->tplData[self::FLD_SUCC_MSGS] = $succMsgs;
        $this->tplData[self::FLD_ERR_MSGS] = $errMsgs;
        $this->tplData[self::FLD_WARN_MSGS] = $warnMsgs;
    }

    public function getTpl()
    {
        return Context::getOption()->getSharedTplDir() . '/Manage.tpl';
    }

}

haha - 2025