| Conditions | 19 |
| Paths | 76 |
| Total Lines | 108 |
| Code Lines | 58 |
| Lines | 7 |
| Ratio | 6.48 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 45 | function authorize( $data = array() ) { |
||
| 46 | $redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : ''; |
||
| 47 | |||
| 48 | $jetpack_unique_connection = Jetpack_Options::get_option( 'unique_connection' ); |
||
| 49 | // Checking if site has been active/connected previously before recording unique connection |
||
| 50 | if ( ! $jetpack_unique_connection ) { |
||
| 51 | // jetpack_unique_connection option has never been set |
||
| 52 | $jetpack_unique_connection = array( |
||
| 53 | 'connected' => 0, |
||
| 54 | 'disconnected' => 0, |
||
| 55 | 'version' => '3.6.1', |
||
| 56 | ); |
||
| 57 | |||
| 58 | update_option( 'jetpack_unique_connection', $jetpack_unique_connection ); |
||
| 59 | |||
| 60 | //track unique connection |
||
| 61 | $jetpack = $this->get_jetpack();; |
||
| 62 | |||
| 63 | $jetpack->stat( 'connections', 'unique-connection' ); |
||
| 64 | $jetpack->do_stats( 'server_side' ); |
||
| 65 | } |
||
| 66 | |||
| 67 | // increment number of times connected |
||
| 68 | $jetpack_unique_connection['connected'] += 1; |
||
| 69 | Jetpack_Options::update_option( 'unique_connection', $jetpack_unique_connection ); |
||
| 70 | |||
| 71 | $role = Jetpack::translate_current_user_to_role(); |
||
| 72 | |||
| 73 | if ( ! $role ) { |
||
| 74 | return new Jetpack_Error( 'no_role', 'Invalid request.', 400 ); |
||
| 75 | } |
||
| 76 | |||
| 77 | $cap = Jetpack::translate_role_to_cap( $role ); |
||
| 78 | if ( ! $cap ) { |
||
| 79 | return new Jetpack_Error( 'no_cap', 'Invalid request.', 400 ); |
||
| 80 | } |
||
| 81 | |||
| 82 | if ( ! empty( $data['error'] ) ) { |
||
| 83 | return new Jetpack_Error( $data['error'], 'Error included in the request.', 400 ); |
||
| 84 | } |
||
| 85 | |||
| 86 | if ( ! isset( $data['state'] ) ) { |
||
| 87 | return new Jetpack_Error( 'no_state', 'Request must include state.', 400 ); |
||
| 88 | } |
||
| 89 | |||
| 90 | if ( ! ctype_digit( $data['state'] ) ) { |
||
| 91 | return new Jetpack_Error( $data['error'], 'State must be an integer.', 400 ); |
||
| 92 | } |
||
| 93 | |||
| 94 | $current_user_id = get_current_user_id(); |
||
| 95 | if ( $current_user_id != $data['state'] ) { |
||
| 96 | return new Jetpack_Error( 'wrong_state', 'State does not match current user.', 400 ); |
||
| 97 | } |
||
| 98 | |||
| 99 | if ( empty( $data['code'] ) ) { |
||
| 100 | return new Jetpack_Error( 'no_code', 'Request must include an authorization code.', 400 ); |
||
| 101 | } |
||
| 102 | |||
| 103 | $token = $this->get_token( $data ); |
||
| 104 | |||
| 105 | if ( is_wp_error( $token ) ) { |
||
| 106 | $code = $token->get_error_code(); |
||
| 107 | if ( empty( $code ) ) { |
||
| 108 | $code = 'invalid_token'; |
||
| 109 | } |
||
| 110 | return new Jetpack_Error( $code, $token->get_error_message(), 400 ); |
||
| 111 | } |
||
| 112 | |||
| 113 | if ( ! $token ) { |
||
| 114 | return new Jetpack_Error( 'no_token', 'Error generating token.', 400 ); |
||
| 115 | } |
||
| 116 | |||
| 117 | $is_master_user = ! Jetpack::is_active(); |
||
| 118 | |||
| 119 | Jetpack::update_user_token( $current_user_id, sprintf( '%s.%d', $token, $current_user_id ), $is_master_user ); |
||
| 120 | |||
| 121 | if ( ! $is_master_user ) { |
||
| 122 | Jetpack::state( 'message', 'linked' ); |
||
| 123 | // Don't activate anything since we are just connecting a user. |
||
| 124 | return 'linked'; |
||
| 125 | } |
||
| 126 | |||
| 127 | $redirect_on_activation_error = ( 'client' === $data['auth_type'] ) ? true : false; |
||
| 128 | View Code Duplication | if ( $active_modules = Jetpack_Options::get_option( 'active_modules' ) ) { |
|
| 129 | Jetpack::delete_active_modules(); |
||
| 130 | |||
| 131 | Jetpack::activate_default_modules( 999, 1, $active_modules, $redirect_on_activation_error, false ); |
||
| 132 | } else { |
||
| 133 | Jetpack::activate_default_modules( false, false, array(), $redirect_on_activation_error, false ); |
||
| 134 | } |
||
| 135 | |||
| 136 | // If redirect_uri is SSO, ensure SSO module is enabled |
||
| 137 | parse_str( parse_url( $data['redirect_uri'], PHP_URL_QUERY ), $redirect_options ); |
||
| 138 | /** This filter is documented in class.jetpack-cli.php */ |
||
| 139 | if ( isset( $redirect_options['action'] ) && 'jetpack-sso' === $redirect_options['action'] && apply_filters( 'jetpack_start_enable_sso', true ) ) { |
||
| 140 | Jetpack::activate_module( 'sso', false, false ); |
||
| 141 | } |
||
| 142 | |||
| 143 | // Since this is a fresh connection, be sure to clear out IDC options |
||
| 144 | Jetpack_IDC::clear_all_idc_options(); |
||
| 145 | |||
| 146 | // Start nonce cleaner |
||
| 147 | wp_clear_scheduled_hook( 'jetpack_clean_nonces' ); |
||
| 148 | wp_schedule_event( time(), 'hourly', 'jetpack_clean_nonces' ); |
||
| 149 | |||
| 150 | Jetpack::state( 'message', 'authorized' ); |
||
| 151 | return 'authorized'; |
||
| 152 | } |
||
| 153 | |||
| 285 |
An exit expression should only be used in rare cases. For example, if you write a short command line script.
In most cases however, using an
exitexpression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.