initial
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Errors;
|
||||
|
||||
use Gravity_Forms\Gravity_SMTP\Connectors\Connector_Service_Provider;
|
||||
use Gravity_Forms\Gravity_SMTP\Logging\Logging_Service_Provider;
|
||||
use Gravity_Forms\Gravity_Tools\Service_Container;
|
||||
use Gravity_Forms\Gravity_Tools\Service_Provider;
|
||||
|
||||
class Error_Handler_Service_Provider extends Service_Provider {
|
||||
|
||||
const ERROR_HANDLER = 'error_handler';
|
||||
|
||||
public function register( Service_Container $container ) {
|
||||
$container->add( self::ERROR_HANDLER, function() use ( $container ) {
|
||||
$event_log_details = $container->get( Logging_Service_Provider::LOGGER );
|
||||
$events_model = $container->get( Connector_Service_Provider::EVENT_MODEL );
|
||||
$debug_logger = $container->get( Logging_Service_Provider::DEBUG_LOGGER );
|
||||
return new Error_Handler( $event_log_details, $events_model, $debug_logger );
|
||||
});
|
||||
}
|
||||
|
||||
public function init( Service_Container $container ) {
|
||||
add_filter( 'pre_determine_locale', function( $data ) use ( $container ) {
|
||||
$container->get( self::ERROR_HANDLER )->handle();
|
||||
|
||||
return $data;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_SMTP\Errors;
|
||||
|
||||
use Gravity_Forms\Gravity_SMTP\Logging\Debug\Debug_Logger;
|
||||
use Gravity_Forms\Gravity_SMTP\Logging\Log\Logger;
|
||||
use Gravity_Forms\Gravity_SMTP\Models\Event_Model;
|
||||
use Gravity_Forms\Gravity_SMTP\Models\Log_Details_Model;
|
||||
|
||||
class Error_Handler {
|
||||
|
||||
/**
|
||||
* @var Log_Details_Model
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* @var Event_Model
|
||||
*/
|
||||
private $events;
|
||||
|
||||
/**
|
||||
* @var Debug_Logger
|
||||
*/
|
||||
private $debug_logger;
|
||||
|
||||
public function __construct( Logger $logger, Event_Model $events, Debug_Logger $debug_logger ) {
|
||||
$this->logger = $logger;
|
||||
$this->events = $events;
|
||||
$this->debug_logger = $debug_logger;
|
||||
}
|
||||
|
||||
public function handle() {
|
||||
$error = error_get_last();
|
||||
|
||||
if ( ! $error ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! in_array( $error['type'], array( E_ERROR, E_COMPILE_ERROR, E_USER_ERROR, E_RECOVERABLE_ERROR, E_CORE_ERROR ) ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$email_id = $this->events->get_latest_id();
|
||||
|
||||
if ( is_null( $email_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$error_prefix = __( 'A fatal error occured when sending', 'gravitysmtp' );
|
||||
|
||||
$this->logger->log( $email_id, 'failed', sprintf( '%s: %s', $error_prefix, $error['message'] ) );
|
||||
|
||||
$this->events->update( array( 'status' => 'failed' ), $email_id );
|
||||
|
||||
$this->debug_logger->log_fatal( $error['message'] );
|
||||
|
||||
if ( wp_doing_ajax() ) {
|
||||
wp_send_json_error( sprintf( '%s: %s', $error_prefix, $error['message'] ), 500 );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user