晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/usr/local/lsws/add-ons/webcachemgr/src/View/Model/Ajax/ |
| Current File : //usr/local/lsws/add-ons/webcachemgr/src/View/Model/Ajax/CacheMgrRowViewModel.php |
<?php
/** ******************************************
* LiteSpeed Web Server Cache Manager
*
* @author Michael Alegre
* @copyright 2018-2025 LiteSpeed Technologies, Inc.
* ******************************************* */
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 array
*/
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()
{
$this->tplData[self::FLD_LIST_DATA] = [
$this->wpInstall->getPath() => [
'statusData' => $this->getStatusDisplayData(),
'flagData' => $this->getFlagDisplayData(),
'siteUrl' => Util::tryIdnToUtf8(
(string)$this->wpInstall->getData(WPInstall::FLD_SITEURL)
)
]
];
}
/**
*
* @return string[]
*/
protected function getStatusDisplayData()
{
$statusInfo = [
'disabled' => [
'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' => [
'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' => [
'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' => [
'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' => [
'sort' => 'error',
/**
* 'state' added individually later.
*/
'btn_title' => '',
'btn_content' => '<span class="inactive-action-btn"></span>',
'onclick' => '',
'btn_attributes' => '',
'btn_state' => 'disabled'
],
'removed' => [
'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 = [
0 => [
'sort' => 'unflagged',
'icon' => '<span '
. 'class="glyphicon glyphicon-flag ls-flag ls-flag-unset"'
. '></span>',
'btn_title' => 'Click to set flag',
'onclick' => 'onclick="lscwpFlagSingle(this);"',
'btn_attributes' => 'data-uk-tooltip'
],
1 => [
'sort' => 'flagged',
'icon' => '<span '
. 'class="glyphicon glyphicon-flag ls-flag ls-flag-set"'
. '></span>',
'btn_title' => 'Click to unset flag',
'onclick' => 'onclick="lscwpUnflagSingle(this);"',
'btn_attributes' => 'data-uk-tooltip'
],
2 => [
'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 bool|string
*/
protected function getActiveVerData()
{
try {
return PluginVersion::getCurrentVersion();
}
catch ( LSCMException $e ) {
//don't care about the exception in ajax load.
return false;
}
}
/**
*
* @param string $tplID
*
* @return null|string
*
* @throws LSCMException Thrown indirectly by Context::getOption() call.
*/
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
}
}
}
|