/var/www/html_fr/wp-content/plugins/fluent-smtp/app/Http/Controllers/SlackController.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php

namespace FluentMail\App\Http\Controllers;

use 
FluentMail\App\Models\Settings;
use 
FluentMail\App\Services\NotificationHelper;
use 
FluentMail\Includes\Request\Request;
use 
FluentMail\Includes\Support\Arr;

class 
SlackController extends Controller
{
    public function 
registerSite(Request $request)
    {
        
$this->verify();

        
$formData $request->get('settings', []);

        
$userEmail sanitize_email(Arr::get($formData'user_email'));

        if (!
is_email($userEmail)) {
            return 
$this->sendError([
                
'message' => __('Please provide a valid email address''fluent-smtp')
            ], 
422);
        }

        
$nonce wp_create_nonce('fluent_smtp_slack_register_site');

        
$payload = [
            
'admin_email' => $userEmail,
            
'smtp_url'    => admin_url('options-general.php?_slacK_nonce='.$nonce.'&page=fluent-mail#/'),
            
'site_url'    => site_url(),
            
'site_title'  => get_bloginfo('name'),
            
'site_lang'   => get_bloginfo('language'),
        ];


        
$activationData NotificationHelper::registerSlackSite($payload);

        if (
is_wp_error($activationData)) {
            return 
$this->sendError([
                
'message' => $activationData->get_error_message(),
                
'errors'  => $activationData->get_error_data(),
            ], 
422);
        }

        
$prevSettings = (new Settings())->notificationSettings();


        
$prevSettings['slack'] = [
            
'status'       => 'pending',
            
'token'        => Arr::get($activationData'site_token'),
            
'redirect_url' => ''
        
];

        
update_option('_fluent_smtp_notify_settings'$prevSettings);

        return 
$this->sendSuccess([
            
'message'      => __('Awesome! You are redirecting to slack''fluent-smtp'),
            
'redirect_url' => Arr::get($activationData'redirect_url')
        ]);
    }

    public function 
sendTestMessage(Request $request)
    {
        
// Let's update the notification status
        
$settings = (new Settings())->notificationSettings();

        if (
Arr::get($settings'slack.status') != 'yes') {
            return 
$this->sendError([
                
'message' => __('Slack notification is not enabled''fluent-smtp')
            ], 
422);
        }

        
$message 'This is a test message for ' site_url() . '. If you get this message, then your site is connected successfully.';

        
$result NotificationHelper::sendSlackMessage($messageArr::get($settings'slack.webhook_url'));

        if (
is_wp_error($result)) {
            return 
$this->sendError([
                
'message' => $result->get_error_message(),
                
'errors'  => $result->get_error_data(),
            ], 
422);
        }

        return 
$this->sendSuccess([
            
'message' => __('Test message sent successfully''fluent-smtp')
        ]);
    }

    public function 
disconnect()
    {
        
$settings = (new Settings())->notificationSettings();

        
$settings['slack'] = [
            
'status'      => 'no',
            
'webhook_url' => '',
            
'token'       => ''
        
];

        
update_option('_fluent_smtp_notify_settings'$settings);

        return 
$this->sendSuccess([
            
'message' => __('Slack connection has been disconnected successfully''fluent-smtp')
        ]);
    }

}