Files
roi-theme/wp-content/plugins/wp-marketing-automations/includes/class-bwfan-connectors.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

205 lines
7.3 KiB
PHP
Executable File

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Class BWFAN_Connectors
* Autonami Connectors Controller
*
* @package Autonami
* @author XlPlugins
*/
class BWFAN_Connectors {
private static $ins = null;
/** @var WFCO_Connector_Screen[] $_connectors */
private $_connectors = array();
/**
* Check which connectors will provide extra data
*/
public static function get_instance() {
if ( null === self::$ins ) {
self::$ins = new self();
}
return self::$ins;
}
public function get_connectors() {
if ( empty( $this->_connectors ) ) {
$connector_screens = self::get_available_connectors();
$this->_connectors = $connector_screens['autonami'];
}
return $this->_connectors;
}
public function get_connectors_for_listing() {
/** Fill connectors if not already fetched */
$this->get_connectors();
$connectors = array();
foreach ( $this->_connectors as $connector_screen ) {
$slug = $connector_screen->get_slug();
$connector = WFCO_Load_Connectors::get_connector( $slug );
$fields_schema = isset( $connector->v2 ) && true === $connector->v2 ? $connector->get_fields_schema() : array();
$fields_values = isset( $connector->v2 ) && true === $connector->v2 ? $connector->get_settings_fields_values() : array();
$is_pro = isset( $connector->is_pro ) ? $connector->is_pro : true;
$is_connected = ! is_null( $connector ) && ( $connector_screen->is_activated() || ! $is_pro ) && isset( WFCO_Common::$connectors_saved_data[ $slug ] ) && true === $connector->has_settings();
/** For Bitly */
if ( ! is_null( $connector ) ) {
$is_connected = false === $is_connected && method_exists( $connector, 'is_connected' ) ? $connector->is_connected() : $is_connected;
}
/** Connector DB ID */
$connector_id = isset( $connector->v2 ) && true === $connector->v2 && $is_connected ? $this->get_connector_id( $slug ) : 0;
/** Connector Meta */
$meta = [];
if ( ! is_null( $connector ) ) {
$meta = method_exists( $connector, 'get_meta_data' ) ? $connector->get_meta_data() : $meta;
}
$priority = is_null( $connector ) && property_exists( $connector_screen, 'priority' ) ? $connector_screen->priority : 0;
if ( empty( $priority ) ) {
$priority = ! is_null( $connector ) && method_exists( $connector, 'get_priority' ) ? $connector->get_priority() : 100;
}
$logo = property_exists( $connector_screen, 'logo' ) ? $connector_screen->logo : '';
if ( empty( $logo ) ) {
$logo = $connector_screen->get_logo();
} else {
/** Check if valid url */
$logo = filter_var( $logo, FILTER_VALIDATE_URL ) ? $logo : BWFAN_PLUGIN_URL . '/includes/connectors-logo/' . $logo . '.png';
}
$required = is_null( $connector ) && property_exists( $connector_screen, 'required_plugins' ) ? $connector_screen->required_plugins : [];
if ( empty( $required ) ) {
$required = ! is_null( $connector ) && method_exists( $connector, 'get_required_plugins' ) ? $connector->get_required_plugins() : [];
}
$new = is_null( $connector ) && property_exists( $connector_screen, 'new' ) ? $connector_screen->new : 0;
if ( empty( $new ) ) {
$new = ( ! is_null( $connector ) && isset( $connector->is_new ) ) ? $connector->is_new : 0;
}
$final_connector = array(
'name' => $connector_screen->get_name(),
'logo' => $logo,
'description' => $connector_screen->get_desc(),
'is_syncable' => $connector_screen->is_activated() && $connector instanceof BWF_CO && $connector->is_syncable(),
'is_connected' => $is_connected,
'fields_schema' => $fields_schema,
'fields_values' => $fields_values,
'connector_id' => $connector_id,
'meta' => $meta,
'ispro' => $is_pro,
'direct_connect' => ! is_null( $connector ) && isset( $connector->direct_connect ) ? $connector->direct_connect : false,
'new' => $new,
'priority' => $priority,
'required_plugins' => $required,
);
/** For Wizard Connectors */
$initial_schema = false;
if ( ! is_null( $connector ) ) {
$initial_schema = method_exists( $connector, 'get_initial_schema' ) ? $connector->get_initial_schema() : $initial_schema;
}
if ( false !== $initial_schema ) {
$final_connector['initial_schema'] = $initial_schema;
}
$connectors[ $connector_screen->get_slug() ] = $final_connector;
}
return $connectors;
}
public function get_connector_id( $slug ) {
$saved_data = WFCO_Common::$connectors_saved_data;
$old_data = ( isset( $saved_data[ $slug ] ) && is_array( $saved_data[ $slug ] ) && count( $saved_data[ $slug ] ) > 0 ) ? $saved_data[ $slug ] : array();
if ( isset( $old_data['id'] ) ) {
return absint( $old_data['id'] );
}
return 0;
}
public function is_connected( $slug ) {
if ( ! class_exists( 'WFCO_Load_Connectors' ) ) {
return false;
}
$connector = WFCO_Load_Connectors::get_connector( $slug );
if ( is_null( $connector ) ) {
/** Try loading connectors files */
if ( method_exists( 'WFCO_Load_Connectors', 'load_connectors_direct' ) ) {
WFCO_Load_Connectors::load_connectors_direct();
$connector = WFCO_Load_Connectors::get_connector( $slug );
}
if ( is_null( $connector ) ) {
return false;
}
}
if ( empty( WFCO_Common::$connectors_saved_data ) ) {
WFCO_Common::get_connectors_data();
}
$is_connected = isset( WFCO_Common::$connectors_saved_data[ $slug ] ) && ! is_null( $connector ) && true === $connector->has_settings();
/** For Bitly */
return ( false === $is_connected && ! is_null( $connector ) && method_exists( $connector, 'is_connected' ) ) ? $connector->is_connected() : $is_connected;
}
public function is_wizard_connector( $connector ) {
$meta = method_exists( $connector, 'get_meta_data' ) ? $connector->get_meta_data() : array();
return isset( $meta['connect_type'] ) && 'wizard' === $meta['connect_type'];
}
public static function get_available_connectors( $type = '' ) {
ob_start();
include BWFAN_PLUGIN_DIR . '/includes/connectors.json'; //phpcs:ignore WordPressVIPMinimum.Files.IncludingNonPHPFile.IncludingNonPHPFile
$connectors_json = ob_get_clean();
$response_data = json_decode( $connectors_json, true );
$response_data = apply_filters( 'wfco_connectors_loaded', $response_data );
if ( '' !== $type ) {
return $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 );
}
}
BWFAN_Core::register( 'connectors', 'BWFAN_Connectors' );