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>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-ultimatum
*/
namespace TU\Automator;
use Thrive\Automator\Items\Email_Data;
use Thrive\Automator\Items\Form_Data;
use Thrive\Automator\Items\User_Data;
use function Thrive\Automator\tap_logger;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
class Start_Campaign extends \Thrive\Automator\Items\Action {
private $campaign_id;
private $has_lockdown;
/**
* @inheritDoc
*/
public static function get_id() {
return 'ultimatum/start_campaign';
}
/**
* @inheritDoc
*/
public static function get_name() {
return __( 'Start an Ultimatum Campaign', 'thrive-ult' );
}
/**
* @inheritDoc
*/
public static function get_description() {
return __( 'Trigger an Ultimatum campaign for a user on the site', 'thrive-ult' );
}
/**
* @inheritDoc
*/
public static function get_image() {
return 'tap-ultimatum-logo';
}
/**
* @inheritDoc
*/
public static function get_app_id() {
return Ultimatum_App::get_id();
}
/**
* @inheritDoc
*/
public static function get_required_action_fields() {
return array( 'start_campaign_id' );
}
/**
* @inheritDoc
*/
public static function get_required_data_objects() {
return array( Email_Data::get_id(), Form_Data::get_id(), User_Data::get_id() );
}
public function prepare_data( $data = array() ) {
if ( ! empty( $data['extra_data'] ) ) {
$data = $data['extra_data'];
}
$this->campaign_id = $data['start_campaign_id']['value'];
$this->has_lockdown = get_post_meta( $this->campaign_id, \TVE_Ult_Const::META_NAME_FOR_LOCKDOWN, true );
}
/**
* @inheritDoc
*/
public function do_action( $data ) {
global $automation_data;
/**
* Go through all the data objects and find the first one that has the email
*/
$email = '';
$sets = static::get_required_data_objects();
$index = 0;
while ( empty( $email ) && $index < count( $sets ) ) {
if ( ! empty( $automation_data->get( $sets[ $index ] ) ) ) {
$email = $automation_data->get( $sets[ $index ] )->get_provided_email();
}
$index ++;
}
tu_start_campaign( $this->campaign_id, $email );
}
/**
* Match all trigger that provice user/form data
*
* @param $trigger
*
* @return bool
*/
public static function is_compatible_with_trigger( $provided_data_objects ) {
$action_data_keys = static::get_required_data_objects() ?: array();
return count( array_intersect( $action_data_keys, $provided_data_objects ) ) > 0;
}
/**
* @inheritDoc
*/
public function can_run( $data ) {
$valid = true;
/**
* No need to check for sets if its a open campaign
*/
if ( $this->has_lockdown ) {
$available_data = array();
global $automation_data;
foreach ( static::get_required_data_objects() as $key ) {
if ( ! empty( $automation_data->get( $key ) ) && ! empty( $automation_data->get( $key )->get_provided_email() ) ) {
$available_data[] = $key;
}
}
if ( empty( $available_data ) ) {
$valid = false;
tap_logger()->register( [
'key' => static::get_id(),
'id' => 'data-not-provided-to-action',
'message' => 'Data object required by ' . static::class . ' action is not provided by trigger',
'class-label' => tap_logger()->get_nice_class_name( static::class ),
] );
}
}
return $valid;
}
}