/var/www/html_us/wp-content/plugins/woocommerce/src/Admin/API/MobileAppMagicLink.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
<?php
/**
 * REST API Data countries controller.
 *
 * Handles requests to the /mobile-app endpoint.
 */

namespace Automattic\WooCommerce\Admin\API;

defined'ABSPATH' ) || exit;

use 
Automattic\Jetpack\Connection\Manager as Jetpack_Connection_Manager;

/**
 * REST API Data countries controller class.
 *
 * @internal
 * @extends WC_REST_Data_Controller
 */
class MobileAppMagicLink extends \WC_REST_Data_Controller {

    
/**
     * Endpoint namespace.
     *
     * @var string
     */
    
protected $namespace 'wc-admin';

    
/**
     * Route base.
     *
     * @var string
     */
    
protected $rest_base 'mobile-app';

    
/**
     * Register routes.
     *
     * @since 7.0.0
     */
    
public function register_routes() {
        
register_rest_route(
            
$this->namespace,
            
'/' $this->rest_base '/send-magic-link',
            array(
                array(
                    
'methods'             => \WP_REST_Server::READABLE,
                    
'callback'            => array( $this'send_magic_link' ),
                    
'permission_callback' => array( $this'get_items_permissions_check' ),
                ),
                
'schema' => array( $this'get_public_item_schema' ),
            )
        );

        
parent::register_routes();
    }

    
/**
     * Sends request to generate magic link email.
     *
     * @return \WP_REST_Response|\WP_Error
     */
    
public function send_magic_link() {
        
// Attempt to get email from Jetpack.
        
if ( class_existsJetpack_Connection_Manager::class ) ) {
            
$jetpack_connection_manager = new Jetpack_Connection_Manager();
            if ( 
$jetpack_connection_manager->is_active() ) {
                if ( 
class_exists'Jetpack_IXR_Client' ) ) {
                    
$xml = new \Jetpack_IXR_Client(
                        array(
                            
'user_id' => get_current_user_id(),
                        )
                    );

                    
$xml->query'jetpack.sendMobileMagicLink', array( 'app' => 'woocommerce' ) );
                    if ( 
$xml->isError() ) {
                        return new 
\WP_Error(
                            
'error_sending_mobile_magic_link',
                            
sprintf(
                                
'%s: %s',
                                
$xml->getErrorCode(),
                                
$xml->getErrorMessage()
                            )
                        );
                    }

                    return 
rest_ensure_response(
                        array(
                            
'code' => 'success',
                        )
                    );
                }
            }
        }

        return new 
\WP_Error'jetpack_not_connected'__'Jetpack is not connected.''woocommerce' ) );
    }
}