Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
53.85% covered (warning)
53.85%
7 / 13
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Jetpack_JSON_API_Modules_List_V1_2_Endpoint
63.64% covered (warning)
63.64%
7 / 11
0.00% covered (danger)
0.00%
0 / 1
9.36
0.00% covered (danger)
0.00%
0 / 1
 result
63.64% covered (warning)
63.64%
7 / 11
0.00% covered (danger)
0.00%
0 / 1
9.36
1<?php
2/**
3 * List modules v1.2 endpoint.
4 *
5 *  @package automattic/jetpack
6 */
7
8use Automattic\Jetpack\Status;
9
10if ( ! defined( 'ABSPATH' ) ) {
11    exit( 0 );
12}
13
14/**
15 * List modules v1.2 endpoint.
16 *
17 * @phan-constructor-used-for-side-effects
18 */
19class Jetpack_JSON_API_Modules_List_V1_2_Endpoint extends Jetpack_JSON_API_Endpoint {
20
21    /**
22     * This endpoint allows authentication both via a blog and a user token.
23     * If a user token is used, that user should have `jetpack_manage_modules` capability.
24     *
25     * @var array|string
26     */
27    protected $needed_capabilities = 'jetpack_manage_modules';
28
29    /**
30     * Fetch modules list.
31     *
32     * @return array An array of module objects.
33     */
34    protected function result() {
35        require_once JETPACK__PLUGIN_DIR . 'class.jetpack-admin.php';
36
37        $is_offline_mode = ( new Status() )->is_offline_mode();
38
39        $modules = Jetpack_Admin::init()->get_modules();
40
41        foreach ( $modules as $slug => $properties ) {
42            if ( $is_offline_mode ) {
43                $requires_connection      = isset( $modules[ $slug ]['requires_connection'] ) && $modules[ $slug ]['requires_connection'];
44                $requires_user_connection = isset( $modules[ $slug ]['requires_user_connection'] ) && $modules[ $slug ]['requires_user_connection'];
45                if (
46                    $requires_connection || $requires_user_connection
47                ) {
48                    $modules[ $slug ]['activated'] = false;
49                }
50            }
51        }
52
53        $modules = Jetpack::get_translated_modules( $modules );
54
55        return array( 'modules' => $modules );
56    }
57}