- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
285 lines
5.0 KiB
PHP
Executable File
285 lines
5.0 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* Class Tab
|
|
* Basic implementation of a tab
|
|
*/
|
|
abstract class Thrive_Ult_Tab implements Thrive_Ult_Tab_Interface {
|
|
/**
|
|
* @var array of items from the wordpress database
|
|
*/
|
|
protected $items = array();
|
|
|
|
/**
|
|
* @var array of Options build based on the items
|
|
*/
|
|
public $options = array();
|
|
|
|
/**
|
|
* @var array "Select All, Select None, etc"
|
|
*/
|
|
public $actions = array();
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
public $filters = array();
|
|
|
|
/**
|
|
* @var int campaign post ID identifier
|
|
*/
|
|
protected $campaign_id;
|
|
|
|
/**
|
|
* @var Thrive_Ult_Campaign_Options saved by user
|
|
*/
|
|
protected $savedOptions;
|
|
|
|
/**
|
|
* @var string tab identifier
|
|
*/
|
|
public $identifier;
|
|
|
|
/**
|
|
* @var string tab label
|
|
*/
|
|
public $label;
|
|
|
|
/**
|
|
* @var string hanger identifier
|
|
*/
|
|
protected $hanger;
|
|
|
|
public function __construct() {
|
|
$this->actions = $this->getActions();
|
|
}
|
|
|
|
/**
|
|
* @return array of Option models
|
|
*/
|
|
final public function getOptions() {
|
|
if ( empty( $this->options ) ) {
|
|
$this->matchItems();
|
|
}
|
|
|
|
return $this->options;
|
|
}
|
|
|
|
/**
|
|
* Get the items from database once
|
|
* If the $items is not initialized initItems is called which is an abstract method
|
|
* and has to be implemented for each tab
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getItems() {
|
|
if ( empty( $this->items ) ) {
|
|
$this->initItems();
|
|
}
|
|
|
|
return $this->items;
|
|
}
|
|
|
|
/**
|
|
* Read the options from the database once
|
|
* Init GroupOptions with json strings
|
|
*
|
|
* @return Thrive_Ult_Campaign_Options
|
|
*/
|
|
protected function getSavedOptions() {
|
|
if ( $this->savedOptions ) {
|
|
return $this->savedOptions;
|
|
}
|
|
|
|
$campaign_idOptions = new Thrive_Ult_Campaign_Options( $this->getGroup() );
|
|
$campaign_idOptions->initOptions();
|
|
$this->savedOptions = $campaign_idOptions;
|
|
|
|
return $campaign_idOptions;
|
|
}
|
|
|
|
public function setSavedOptions( Thrive_Ult_Campaign_Options $savedOptions ) {
|
|
$this->savedOptions = $savedOptions;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Overwrite this method to set a specific list of actions
|
|
*
|
|
* @return array of Action
|
|
*/
|
|
public function getActions() {
|
|
return array(
|
|
new Thrive_Ult_Action( 'selectAll tvd-btn-flat-primary', '', 'Select All' ),
|
|
new Thrive_Ult_Action( 'selectNone tvd-btn-flat-secondary', '', 'Select None' ),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Overwrite this method for specific list of filters
|
|
*
|
|
* @return array empty
|
|
*/
|
|
public function getFilters() {
|
|
return $this->filters;
|
|
}
|
|
|
|
/**
|
|
* Set the items outside the box
|
|
*
|
|
* @param array $items
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setItems( array $items ) {
|
|
$this->items = $items;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Can be called outside the box
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function initFilters() {
|
|
$this->filters = $this->getFilters();
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param string $campaign_id
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setGroup( $campaign_id ) {
|
|
$this->campaign_id = $campaign_id;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getGroup() {
|
|
return $this->campaign_id;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $identifier
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setIdentifier( $identifier ) {
|
|
$this->identifier = $identifier;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getIdentifier() {
|
|
return $this->identifier;
|
|
}
|
|
|
|
/**
|
|
* @param string $label
|
|
*
|
|
* @return $this;
|
|
*/
|
|
public function setLabel( $label ) {
|
|
$this->label = $label;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getLabel() {
|
|
return $this->label;
|
|
}
|
|
|
|
/**
|
|
* @param string $hanger
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setHanger( $hanger ) {
|
|
$this->hanger = $hanger;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getHanger() {
|
|
return $this->hanger;
|
|
}
|
|
|
|
/**
|
|
* Callable from outside the box
|
|
* Init the items and options in one call
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function initOptions() {
|
|
$this->initItems();
|
|
$this->matchItems();
|
|
|
|
return $this;
|
|
}
|
|
|
|
protected function getSavedOptionForTab( $tabIndex, $id ) {
|
|
$savedOptions = $this->getSavedOptions();
|
|
|
|
$optionArr = $savedOptions->getTabSavedOptions( $tabIndex, $this->hanger );
|
|
$tlOption = new Thrive_Ult_Option();
|
|
|
|
if ( empty( $optionArr ) ) {
|
|
return $tlOption;
|
|
}
|
|
|
|
$hanger = $this->hanger;
|
|
$options = json_decode( stripcslashes( $savedOptions->$hanger ) );
|
|
if ( ! $options ) {
|
|
return new Thrive_Ult_Option();
|
|
}
|
|
|
|
$tlOption->setId( $id );
|
|
$tlOption->setLabel( isset( $this->items[ $id ] ) ? $this->items[ $id ] : '' );
|
|
$tlOption->setIsChecked( in_array( $id, $optionArr ) );
|
|
|
|
return $tlOption;
|
|
}
|
|
|
|
/**
|
|
* Specific tab has to implement this function which transforms
|
|
* items(pages, posts, post types) into Option models
|
|
*
|
|
* @return void
|
|
*/
|
|
abstract protected function matchItems();
|
|
|
|
/**
|
|
* Has to get the Option from json string based on the $item
|
|
*
|
|
* @param $item
|
|
*
|
|
* @return Option
|
|
*/
|
|
abstract protected function getSavedOption( $item );
|
|
|
|
/**
|
|
* Read items from the database and initiate them
|
|
*
|
|
* @return $this
|
|
*/
|
|
abstract protected function initItems();
|
|
|
|
}
|