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,217 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( ! class_exists( 'WFCO_Admin' ) ) {
#[AllowDynamicProperties]
class WFCO_Admin {
private static $ins = null;
public $admin_path;
public $admin_url;
public $section_page = '';
public $should_show_shortcodes = null;
public function __construct() {
define( 'WFCO_PLUGIN_FILE', __FILE__ );
define( 'WFCO_PLUGIN_DIR', __DIR__ );
define( 'WFCO_PLUGIN_URL', untrailingslashit( plugin_dir_url( WFCO_PLUGIN_FILE ) ) );
$this->admin_path = WFCO_PLUGIN_DIR;
$this->admin_url = WFCO_PLUGIN_URL;
add_action( 'admin_enqueue_scripts', array( $this, 'include_global_assets' ), 98 );
$should_include = apply_filters( 'wfco_include_connector', false );
if ( false === $should_include ) {
return;
}
$this->initialize_connector();
}
private function initialize_connector() {
include_once( $this->admin_path . '/class-wfco-connector.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
include_once( $this->admin_path . '/class-wfco-call.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
include_once( $this->admin_path . '/class-wfco-load-connectors.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
include_once( $this->admin_path . '/class-wfco-common.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
include_once( $this->admin_path . '/class-wfco-db.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
include_once( $this->admin_path . '/class-wfco-connector-api.php' ); //phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.UsingVariable
WFCO_Common::init();
}
public static function get_instance() {
if ( null === self::$ins ) {
self::$ins = new self;
}
return self::$ins;
}
public static function get_plugins() {
return apply_filters( 'all_plugins', get_plugins() );
}
public static function get_oauth_connector() {
$oauth_connectors = [];
$all_connector = WFCO_Admin::get_available_connectors();
if ( empty( $all_connector ) ) {
return $oauth_connectors;
}
foreach ( $all_connector as $addons ) {
if ( empty( $addons ) ) {
continue;
}
foreach ( $addons as $addons_slug => $addon ) {
if ( $addon->is_activated() ) {
$instance = $addons_slug::get_instance();
if ( $instance->is_oauth() ) {
$oauth_connectors[] = $addons_slug;
}
}
}
}
return $oauth_connectors;
}
public static function get_available_connectors( $type = '' ) {
$woofunnels_cache_object = WooFunnels_Cache::get_instance();
$woofunnels_transient_obj = WooFunnels_Transient::get_instance();
$data = $woofunnels_cache_object->get_cache( 'get_available_connectors' );
if ( empty( $data ) ) {
$data = $woofunnels_transient_obj->get_transient( 'get_available_connectors' );
}
if ( ! empty( $data ) && is_array( $data ) ) {
$data = apply_filters( 'wfco_connectors_loaded', $data );
return self::load_connector_screens( $data, $type );
}
$connector_api = new WFCO_Connector_api();
$response_data = $connector_api->set_action( 'get_available_connectors' )->get()->get_package();
if ( is_array( $response_data ) ) {
$woofunnels_transient_obj->set_transient( 'get_available_connectors', $response_data, 3 * HOUR_IN_SECONDS );
}
$response_data = apply_filters( 'wfco_connectors_loaded', $response_data );
if ( '' !== $type ) {
return isset( $response_data[ $type ] ) ? $response_data[ $type ] : [];
}
return self::load_connector_screens( $response_data, $type );
}
private static function load_connector_screens( $response_data, $type = '' ) {
foreach ( $response_data as $slug => $data ) {
$connectors = $data['connectors'];
foreach ( $connectors as $c_slug => $connector ) {
$connector['type'] = $slug;
if ( isset( $data['source'] ) && ! empty( $data['source'] ) ) {
$connector['source'] = $data['source'];
}
if ( isset( $data['file'] ) && ! empty( $data['file'] ) ) {
$connector['file'] = $data['file'];
}
if ( isset( $data['support'] ) && ! empty( $data['support'] ) ) {
$connector['support'] = $data['support'];
}
if ( isset( $data['connector_class'] ) && ! empty( $data['connector_class'] ) ) {
$connector['connector_class'] = $data['connector_class'];
}
WFCO_Connector_Screen_Factory::create( $c_slug, $connector );
}
}
return WFCO_Connector_Screen_Factory::getAll( $type );
}
public static function get_error_message() {
$errors = [];
$errors[100] = __( 'Connector not found', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
$errors[101] = __( 'FunnelKit Automations license is required in order to install a connector', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
$errors[102] = __( 'FunnelKit Automations license is invalid, kindly contact woofunnels team.', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
$errors[103] = __( 'FunnelKit Automations license is expired, kindly renew and activate it first.', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
return $errors;
}
public static function js_text() {
$data = array(
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'text_copied' => __( 'Text Copied', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_title' => __( 'Sync Connector', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_text' => __( 'All the data of this Connector will be Synced.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_wait' => __( 'Please Wait...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_progress' => __( 'Sync in progress...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_success_title' => __( 'Connector Synced', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'sync_success_text' => __( 'We have detected change in the connector during syncing. Please re-save the Automations.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'oops_title' => __( 'Oops', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'oops_text' => __( 'There was some error. Please try again later.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_title' => __( 'There was some error. Please try again later.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_text' => __( 'There was some error. Please try again later.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'update_int_prompt_title' => __( 'Connector Updated', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'update_int_prompt_text' => __( 'We have detected change in the connector during updating. Please re-save the Automations.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_prompt_title' => __( 'Disconnecting Connector?', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_prompt_text' => __( 'All the action, tasks, logs of this connector will be deleted.', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_wait_title' => __( 'Please Wait...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_wait_text' => __( 'Disconnecting the connector ...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'delete_int_success' => __( 'Connector Disconnected', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'update_btn' => __( 'Update', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'save_progress' => __( 'Saving in progress...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'update_btn_process' => __( 'Updating...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'connect_btn_process' => __( 'Connecting...', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'install_success_title' => __( 'Connector Installed Successfully', 'woofunnels' ),
// phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'connect_success_title' => __( 'Connected Successfully', 'woofunnels' ),
);
return $data;
}
public function get_admin_url() {
return plugin_dir_url( WFCO_PLUGIN_FILE ) . 'admin';
}
public function include_global_assets() {
wp_enqueue_script( 'wfco-admin-ajax', $this->admin_url . '/assets/js/wfco-admin-ajax.js', array(), WooFunnel_Loader::$version );
wp_localize_script( 'wfco-admin-ajax', 'bwf_secure', [
'nonce' => wp_create_nonce( 'bwf_secure_key' ),
] );
}
public function tooltip( $text ) {
?>
<span class="wfco-help"><i class="icon"></i><div class="helpText"><?php echo $text; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></div></span>
<?php
}
}
}