Files
roi-theme/wp-content/plugins/thrive-ultimatum/inc/classes/display_settings/class-thrive-ult-tab.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- 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>
2025-11-03 21:04:30 -06:00

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();
}