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

146 lines
4.3 KiB
PHP
Executable File

<?php
class BWFAN_API_Delete_Automation_Contacts extends BWFAN_API_Base {
public static $ins;
public static function get_instance() {
if ( null === self::$ins ) {
self::$ins = new self();
}
return self::$ins;
}
public function __construct() {
parent::__construct();
$this->method = WP_REST_Server::DELETABLE;
$this->route = '/automation/(?P<automation_id>[\\d]+)/delete-contact';
$this->request_args = array(
'automation_id' => array(
'description' => __( 'Automation ID', 'wp-marketing-automations' ),
'type' => 'string',
)
);
}
public function process_api_call() {
$trail_id = $this->get_sanitized_arg( 'trail_id', 'text_field' );
$ac_id = $this->get_sanitized_arg( 'ac_id', 'text_field' );
$type = $this->get_sanitized_arg( 'type', 'text_field' );
if ( empty( $trail_id ) && empty( $ac_id ) ) {
return $this->error_response( __( 'Invalid / Empty Contact data provided', 'wp-marketing-automations' ), null, 400 );
}
/** Automation Contact table */
if ( empty( $trail_id ) && 'completed' !== $type ) {
$row = BWFAN_Model_Automation_Contact::get( $ac_id );
} else {
$row = BWFAN_Model_Automation_Contact::get_row_by_trail_id( $trail_id );
}
if ( ! empty( $row ) ) {
$resp = $this->delete_data( $row );
if ( is_array( $resp ) && isset( $resp['status'] ) && 'error' === $resp['status'] ) {
return $this->error_response( $resp['msg'], null, 400 );
}
$this->response_code = 200;
return $this->success_response( $trail_id, '' );
}
/** Search for automation contact complete row */
if ( empty( $trail_id ) && 'completed' === $type ) {
$row = BWFAN_Model_Automation_Complete_Contact::get( $ac_id );
} else {
$row = BWFAN_Model_Automation_Complete_Contact::get_row_by_trail_id( $trail_id );
}
if ( ! empty( $row ) ) {
$resp = $this->delete_data( $row, 2 );
if ( is_array( $resp ) && isset( $resp['status'] ) && 'error' === $resp['status'] ) {
return $this->error_response( $resp['msg'], null, 400 );
}
}
$this->response_code = 200;
return $this->success_response( $trail_id, __( 'Automation contact deleted', 'wp-marketing-automations' ) );
}
/**
* @param $row
* @param $mode 'default 1 - Automation contact 2 - Automation complete contact'
*
* @return string[]|void
*/
public function delete_data( $row, $mode = 1 ) {
if ( empty( $row ) ) {
return;
}
$id = $row['ID'];
$aid = $row['aid'];
$cid = $row['cid'];
$trail_id = $row['trail'];
/** Automation complete contact table */
$start_date = isset( $row['s_date'] ) ? $row['s_date'] : '';
$end_date = isset( $row['c_date'] ) ? $row['c_date'] : '';
if ( 1 === absint( $mode ) ) {
/** Automation contact table */
$start_date = $row['c_date'];
$end_date = absint( $row['last_time'] );
$end_date = ( $end_date > 0 ) ? $end_date : time();
$end_date = date( 'Y-m-d H:i:s', $end_date + 120 );
}
try {
/** Delete db row */
if ( 1 === absint( $mode ) ) {
BWFAN_Model_Automation_Contact::delete( $id );
} else {
BWFAN_Model_Automation_Complete_Contact::delete( $id );
}
BWFAN_Common::maybe_remove_aid_from_contact_fields( $cid, $aid );
/** Delete automation contact trail */
BWFAN_Model_Automation_Contact_Trail::delete_row_by_trail_by( $trail_id );
} catch ( Error $e ) {
$msg = "Error occurred in deleting the automation contact db row {$e->getMessage()}";
BWFAN_Common::log_test_data( $msg, 'automation_contact_delete_fail', true );
return [ 'status' => 'error', 'msg' => $msg ];
}
if ( empty( $start_date ) || empty( $end_date ) ) {
return;
}
if ( false === bwfan_is_autonami_pro_active() ) {
return;
}
/** Fetch engagements */
$engagements = BWFAN_Model_Engagement_Tracking::get_contact_engagements( $aid, $cid, $start_date, $end_date );
if ( empty( $engagements ) ) {
return;
}
try {
/** Delete engagement meta */
BWFAN_Model_Engagement_Trackingmeta::delete_engagements_meta( $engagements );
/** Delete engagements */
BWFAN_Model_Engagement_Tracking::delete_contact_engagements( $engagements );
/** Delete conversions */
BWFAN_Model_Conversions::delete_conversions_by_track_id( $engagements );
} catch ( Error $e ) {
}
}
}
BWFAN_API_Loader::register( 'BWFAN_API_Delete_Automation_Contacts' );