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 } } }