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' => '',
'btn_content' => '',
'btn_title' => 'Click to enable LSCache',
'onclick' =>
'onclick="javascript:lscwpEnableSingle(this);"',
'btn_attributes' => 'data-uk-tooltip',
'btn_state' => ''
],
'enabled' => [
'sort' => 'enabled',
'state' => '',
'btn_content' => '',
'btn_title' => 'Click to disable LSCache',
'onclick' =>
'onclick="javascript:lscwpDisableSingle(this);"',
'btn_attributes' => 'data-uk-tooltip',
'btn_state' => ''
],
'adv_cache' => [
'sort' => 'warning',
'state' => '',
'btn_content' => '',
'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' => '',
'btn_content' => '',
'onclick' => '',
'btn_attributes' => '',
'btn_state' => 'disabled'
],
'error' => [
'sort' => 'error',
/**
* 'state' added individually later.
*/
'btn_title' => '',
'btn_content' => '',
'onclick' => '',
'btn_attributes' => '',
'btn_state' => 'disabled'
],
'removed' => [
'sort' => 'removed',
'state' => '',
'btn_content' => '',
'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'] = '';
}
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' => '',
'btn_title' => 'Click to set flag',
'onclick' => 'onclick="lscwpFlagSingle(this);"',
'btn_attributes' => 'data-uk-tooltip'
],
1 => [
'sort' => 'flagged',
'icon' => '',
'btn_title' => 'Click to unset flag',
'onclick' => 'onclick="lscwpUnflagSingle(this);"',
'btn_attributes' => 'data-uk-tooltip'
],
2 => [
'sort' => 'removed',
'icon' => '',
'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
}
}
}