/var/www/html_fr/wp-content/plugins/yaymail/src/Controllers/SettingController.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
<?php

namespace YayMail\Controllers;

use 
YayMail\Abstracts\BaseController;
use 
YayMail\Models\SettingModel;
use 
YayMail\Utils\SingletonTrait;

/**
 * Settings Controller
 * * @method static SettingController get_instance()
 */
class SettingController extends BaseController {
    use 
SingletonTrait;

    private 
$model null;

    protected function 
__construct() {
        
$this->model SettingModel::get_instance();
        
$this->init_hooks();
    }

    protected function 
init_hooks() {
        
register_rest_route(
            
YAYMAIL_REST_NAMESPACE,
            
'/settings',
            [
                [
                    
'methods'             => \WP_REST_Server::READABLE,
                    
'callback'            => [ $this'exec_get_settings' ],
                    
'permission_callback' => [ $this'permission_callback' ],
                ],
                [
                    
'methods'             => \WP_REST_Server::EDITABLE,
                    
'callback'            => [ $this'exec_update_settings' ],
                    
'permission_callback' => [ $this'permission_callback' ],
                ],
            ]
        );
    }

    public function 
exec_get_settings\WP_REST_Request $request ) {
        return 
$this->exec( [ $this'get_settings' ], $request );
    }

    public function 
get_settings() {
        
$settings $this->model::find_all();
        return 
$settings;
    }

    public function 
exec_update_settings\WP_REST_Request $request ) {
        return 
$this->exec( [ $this'update_settings' ], $request );
    }

    public function 
update_settings\WP_REST_Request $request ) {
        
$settings               is_array$request->get_param'settings' ) ) ? array_map'sanitize_text_field'wp_unslash$request->get_param'settings' ) ) ) : [];
        
$settings['custom_css'] = wp_strip_all_tags( isset( $request->get_param'settings' )['custom_css'] ) ? $request->get_param'settings' )['custom_css'] : '' );
        
$this->model::update$settings );
        return [
            
'success' => true,
            
'data'    => $settings,
        ];
    }
}