D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
local
/
lsws
/
add-ons
/
webcachemgr
/
src
/
View
/
Model
/
Ajax
/
Filename :
CacheMgrRowViewModel.php
back
Copy
<?php /* * ****************************************** * LiteSpeed Web Server Cache Manager * @author: LiteSpeed Technologies, Inc. (https://www.litespeedtech.com) * @copyright: (c) 2018-2019 * ******************************************* */ namespace Lsc\Wp\View\Model\Ajax; use \Lsc\Wp\Context\Context; use \Lsc\Wp\LSCMException; use \Lsc\Wp\PluginVersion; use Lsc\Wp\Util; use \Lsc\Wp\WPInstall; class CacheMgrRowViewModel { const FLD_LIST_DATA = 'listData'; /** * @var WPInstall */ protected $wpInstall; /** * @var mixed[] */ protected $tplData = array(); /** * * @param WPInstall $wpInstall */ public function __construct( WPInstall $wpInstall ) { $this->wpInstall = $wpInstall; $this->init(); } protected function init() { $this->getActiveVerData(); $this->setListRowData(); } /** * * @param string $field * @return null|mixed */ public function getTplData( $field ) { if ( !isset($this->tplData[$field]) ) { return null; } return $this->tplData[$field]; } /** * * @param string $type * @return string */ public function getSortVal( $type ) { $listData = $this->getTplData(self::FLD_LIST_DATA); return $listData[$this->wpInstall->getPath()]["{$type}Data"]['sort']; } protected function setListRowData() { $listData = array(); $info = array( 'statusData' => $this->getStatusDisplayData(), 'flagData' => $this->getFlagDisplayData(), 'siteUrl' => Util::tryIdnToUtf8( $this->wpInstall->getData(WPInstall::FLD_SITEURL) ) ); $listData[$this->wpInstall->getPath()] = $info; $this->tplData[self::FLD_LIST_DATA] = $listData; } /** * * @return string[] */ protected function getStatusDisplayData() { $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' ), 'removed' => array( 'sort' => 'removed', 'state' => '<span class="status-removed" ' . 'data-uk-tooltip ' . 'title="Installation could not be found and has been ' . 'removed."></span>', 'btn_content' => '<span class="inactive-action-btn"></span>', 'onclick' => '', 'btn_attributes' => '', 'btn_state' => 'disabled', ) ); $wpStatus = $this->wpInstall->getStatus(); if ( $wpStatus & WPInstall::ST_ERR_REMOVE ) { $currStatusData = $statusInfo['removed']; } elseif ( $this->wpInstall->hasFatalError($wpStatus) ) { $fatalErrStateInfo = Util::getFatalErrorStateMessageAndLink($wpStatus); $currStatusData = $statusInfo['error']; $currStatusData['state'] = '<a ' . "href=\"{$fatalErrStateInfo['link']}\" " . 'target="_blank" rel="noopener" data-uk-tooltip ' . "title =\"{$fatalErrStateInfo['stateMsg']}\" " . 'class="status-error"></a>'; } elseif ( ($wpStatus & WPInstall::ST_PLUGIN_INACTIVE ) ) { if ( !$this->getActiveVerData() ) { $currStatusData = $statusInfo['disabled_no_active_ver']; } else { $currStatusData = $statusInfo['disabled']; } } elseif ( !($wpStatus & WPInstall::ST_LSC_ADVCACHE_DEFINED) ) { $currStatusData = $statusInfo['adv_cache']; } else { $currStatusData = $statusInfo['enabled']; } return $currStatusData; } /** * * @return string[] */ protected function getFlagDisplayData() { $flagInfo = array( 0 => 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' ), 1 => 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' ), 2 => array ( 'sort' => 'removed', 'icon' => '<span class="glyphicon glyphicon-flag ls-flag ls-flag-removed"></span>', 'btn_title' => '', 'onclick' => '', 'btn_attributes' => '' ) ); $wpStatus = $this->wpInstall->getStatus(); if ( $wpStatus & WPInstall::ST_ERR_REMOVE ) { $currFlagData = $flagInfo[2]; } elseif ( ($wpStatus & WPInstall::ST_FLAGGED ) ) { $currFlagData = $flagInfo[1]; } else { $currFlagData = $flagInfo[0]; } return $currFlagData; } /** * * @return boolean|string */ protected function getActiveVerData() { try { $currVer = PluginVersion::getCurrentVersion(); } catch ( LSCMException $e ) { //don't care about the exception in ajax load. $currVer = false; } return $currVer; } /** * * @param string $tplID * @return null|string */ public function getTpl( $tplID ) { $sharedTplDir = Context::getOption()->getSharedTplDir(); switch ($tplID) { case 'actions_td': return "{$sharedTplDir}/Ajax/CacheMgrActionsCol.tpl"; case 'status_td': return "{$sharedTplDir}/Ajax/CacheMgrStatusCol.tpl"; case 'flag_td': return "{$sharedTplDir}/Ajax/CacheMgrFlagCol.tpl"; //no default } } }