| Conditions | 20 | 
| Paths | 7780 | 
| Total Lines | 229 | 
| Code Lines | 178 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 2 | ||
| Bugs | 0 | Features | 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 | ||
| 142 | public function pagantisReceiptPage($order_id) | ||
| 143 |     { | ||
| 144 |         try { | ||
| 145 | require_once(__ROOT__.'/vendor/autoload.php'); | ||
| 146 | global $woocommerce; | ||
| 147 | $order = new WC_Order($order_id); | ||
| 148 | $order->set_payment_method(ucfirst($this->id)); | ||
| 149 | $order->save(); | ||
| 150 | |||
| 151 |             if (!isset($order)) { | ||
| 152 |                 throw new Exception(_("Order not found")); | ||
| 153 | } | ||
| 154 | |||
| 155 |             $shippingAddress = $order->get_address('shipping'); | ||
| 156 |             $billingAddress = $order->get_address('billing'); | ||
| 157 |             if ($shippingAddress['address_1'] == '') { | ||
| 158 | $shippingAddress = $billingAddress; | ||
| 159 | } | ||
| 160 | |||
| 161 | $customer_id = $order->get_customer_id(); | ||
| 162 | $national_id = maybeGetIDNumber($order , $customer_id); | ||
| 163 | $tax_id = maybeGetTaxIDNumber($order , $customer_id); | ||
| 164 | $phoneNumber = maybeGetPhoneNumber($order , $customer_id); | ||
| 165 | |||
| 166 | |||
| 167 | $userAddress = new Address(); | ||
| 168 | $userAddress | ||
| 169 | ->setZipCode($shippingAddress['postcode']) | ||
| 170 | ->setFullName($shippingAddress['first_name']." ".$shippingAddress['last_name']) | ||
| 171 | ->setCountryCode($shippingAddress['country']!='' ? strtoupper($shippingAddress['country']) : strtoupper($this->language)) | ||
| 172 | ->setCity($shippingAddress['city']) | ||
| 173 | ->setAddress($shippingAddress['address_1']." ".$shippingAddress['address_2']) | ||
| 174 | ->setDni($national_id) | ||
| 175 | |||
| 176 | ; | ||
| 177 | $orderShippingAddress = new Address(); | ||
| 178 | $orderShippingAddress | ||
| 179 | ->setZipCode($shippingAddress['postcode']) | ||
| 180 | ->setFullName($shippingAddress['first_name']." ".$shippingAddress['last_name']) | ||
| 181 | ->setCountryCode($shippingAddress['country']!='' ? strtoupper($shippingAddress['country']) : strtoupper($this->language)) | ||
| 182 | ->setCity($shippingAddress['city']) | ||
| 183 | ->setAddress($shippingAddress['address_1']." ".$shippingAddress['address_2']) | ||
| 184 | ->setFixPhone($phoneNumber) | ||
| 185 | ->setMobilePhone($phoneNumber) | ||
| 186 | ->setNationalId($national_id) | ||
| 187 | ->setDni($national_id) | ||
| 188 | ->setTaxId($tax_id) | ||
| 189 | ; | ||
| 190 | $orderBillingAddress = new Address(); | ||
| 191 | $orderBillingAddress | ||
| 192 | ->setZipCode($billingAddress['postcode']) | ||
| 193 | ->setFullName($billingAddress['first_name']." ".$billingAddress['last_name']) | ||
| 194 | ->setCountryCode($billingAddress['country']!='' ? strtoupper($billingAddress['country']) : strtoupper($this->language)) | ||
| 195 | ->setCity($billingAddress['city']) | ||
| 196 | ->setAddress($billingAddress['address_1']." ".$billingAddress['address_2']) | ||
| 197 | ->setFixPhone($phoneNumber) | ||
| 198 | ->setMobilePhone($phoneNumber) | ||
| 199 | ->setNationalId($national_id) | ||
| 200 | ->setTaxId($tax_id) | ||
| 201 | ; | ||
| 202 | $orderUser = new User(); | ||
| 203 | $orderUser | ||
| 204 | ->setAddress($userAddress) | ||
| 205 | ->setFullName($billingAddress['first_name']." ".$billingAddress['last_name']) | ||
| 206 | ->setBillingAddress($orderBillingAddress) | ||
| 207 | ->setEmail($billingAddress['email']) | ||
| 208 | ->setFixPhone($phoneNumber) | ||
| 209 | ->setMobilePhone($phoneNumber) | ||
| 210 | ->setShippingAddress($orderShippingAddress) | ||
| 211 | ->setNationalId($national_id) | ||
| 212 | ->setTaxId($tax_id) | ||
| 213 | ; | ||
| 214 | |||
| 215 |             if (!empty(maybeGetDateOfBirth($customer_id))) { | ||
| 216 | $orderUser->setDateOfBirth($birthday); | ||
| 217 | } | ||
| 218 | |||
| 219 | $previousOrders = getOrders($order->get_user(), $billingAddress['email']); | ||
| 220 |             foreach ($previousOrders as $previousOrder) { | ||
| 221 | $orderHistory = new OrderHistory(); | ||
| 222 | $orderElement = wc_get_order($previousOrder); | ||
| 223 | $orderCreated = $orderElement->get_date_created(); | ||
| 224 | $orderHistory | ||
| 225 | ->setAmount(intval(100 * $orderElement->get_total())) | ||
| 226 |                     ->setDate(new \DateTime($orderCreated->date('Y-m-d H:i:s'))) | ||
| 227 | ; | ||
| 228 | $orderUser->addOrderHistory($orderHistory); | ||
| 229 | } | ||
| 230 | |||
| 231 | $metadataOrder = new Metadata(); | ||
| 232 | $metadata = array( | ||
| 233 | 'pg_module' => 'woocommerce', | ||
| 234 | 'pg_version' => getModuleVersion(), | ||
| 235 | 'ec_module' => 'woocommerce', | ||
| 236 | 'ec_version' => WC()->version | ||
| 237 | ); | ||
| 238 | |||
| 239 |             foreach ($metadata as $key => $metadatum) { | ||
| 240 | $metadataOrder->addMetadata($key, $metadatum); | ||
| 241 | } | ||
| 242 | |||
| 243 | $details = new Details(); | ||
| 244 | $shippingCost = $order->shipping_total; | ||
| 245 | $details->setShippingCost(intval(strval(100 * $shippingCost))); | ||
| 246 | $items = $order->get_items(); | ||
| 247 | $promotedAmount = 0; | ||
| 248 |             foreach ($items as $key => $item) { | ||
| 249 | $wcProduct = $item->get_product(); | ||
| 250 | $product = new Product(); | ||
| 251 | $productDescription = sprintf( | ||
| 252 | '%s %s %s', | ||
| 253 | $wcProduct->get_name(), | ||
| 254 | $wcProduct->get_description(), | ||
| 255 | $wcProduct->get_short_description() | ||
| 256 | ); | ||
| 257 | $productDescription = substr($productDescription, 0, 9999); | ||
| 258 | |||
| 259 | $product | ||
| 260 | ->setAmount(intval(100 * ($item->get_total() + $item->get_total_tax()))) | ||
| 261 | ->setQuantity($item->get_quantity()) | ||
| 262 | ->setDescription($productDescription) | ||
| 263 | ; | ||
| 264 | $details->addProduct($product); | ||
| 265 | |||
| 266 | $promotedProduct = isProductPromoted($item->get_product_id()); | ||
| 267 |                 if ($promotedProduct == 'true') { | ||
| 268 | $promotedAmount+=$product->getAmount(); | ||
| 269 | $promotedMessage = 'Promoted Item: ' . $wcProduct->get_name() . | ||
| 270 | ' - Price: ' . $item->get_total() . | ||
| 271 | ' - Qty: ' . $product->getQuantity() . | ||
| 272 | ' - Item ID: ' . $item['id_product']; | ||
| 273 | $promotedMessage = substr($promotedMessage, 0, 999); | ||
| 274 |                     $metadataOrder->addMetadata('promotedProduct', $promotedMessage); | ||
| 275 | } | ||
| 276 | } | ||
| 277 | |||
| 278 | $orderShoppingCart = new ShoppingCart(); | ||
| 279 | $orderShoppingCart | ||
| 280 | ->setDetails($details) | ||
| 281 | ->setOrderReference($order->get_id()) | ||
| 282 | ->setPromotedAmount($promotedAmount) | ||
| 283 | ->setTotalAmount(intval(strval(100 * $order->total))) | ||
| 284 | ; | ||
| 285 | $orderConfigurationUrls = new Urls(); | ||
| 286 | $cancelUrl = $this->getKoUrl($order); | ||
| 287 |             $callback_arg = array('wc-api'=>'wcpagantisgateway', | ||
| 288 | 'key'=>$order->get_order_key(), | ||
| 289 | 'order-received'=>$order->get_id(), | ||
| 290 | 'origin' => '', | ||
| 291 | 'token' => $this->urlToken4x | ||
| 292 | |||
| 293 | ); | ||
| 294 | |||
| 295 | $callback_arg_user = $callback_arg; | ||
| 296 | $callback_arg_user['origin'] = 'redirect'; | ||
| 297 | $callback_arg_user['product'] = Ucfirst(WcPagantis4xGateway::METHOD_ID); | ||
| 298 |             $callback_url_user = add_query_arg($callback_arg_user, home_url('/')); | ||
| 299 | |||
| 300 | $callback_arg_notif = $callback_arg; | ||
| 301 | $callback_arg_notif['origin'] = 'notification'; | ||
| 302 | $callback_arg_notif['product'] = Ucfirst(WcPagantis4xGateway::METHOD_ID); | ||
| 303 |             $callback_url_notif = add_query_arg($callback_arg_notif, home_url('/')); | ||
| 304 | |||
| 305 | $orderConfigurationUrls | ||
| 306 | ->setCancel($cancelUrl) | ||
| 307 | ->setKo($callback_url_user) | ||
| 308 | ->setAuthorizedNotificationCallback($callback_url_notif) | ||
| 309 | ->setRejectedNotificationCallback(null) | ||
| 310 | ->setOk($callback_url_user) | ||
| 311 | ; | ||
| 312 | $orderChannel = new Channel(); | ||
| 313 | $orderChannel | ||
| 314 | ->setAssistedSale(false) | ||
| 315 | ->setType(Channel::ONLINE) | ||
| 316 | ; | ||
| 317 | |||
| 318 | $allowedCountries = unserialize($this->extraConfig['PAGANTIS_ALLOWED_COUNTRIES']); | ||
| 319 | $purchaseCountry = | ||
| 320 | in_array(strtolower($this->language), $allowedCountries) ? $this->language : | ||
| 321 | in_array(strtolower($shippingAddress['country']), $allowedCountries) ? $shippingAddress['country'] : | ||
| 322 | in_array(strtolower($billingAddress['country']), $allowedCountries) ? $billingAddress['country'] : null; | ||
| 323 | |||
| 324 | $orderConfiguration = new Configuration(); | ||
| 325 | $orderConfiguration | ||
| 326 | ->setChannel($orderChannel) | ||
| 327 | ->setUrls($orderConfigurationUrls) | ||
| 328 | ->setPurchaseCountry($purchaseCountry) | ||
| 329 | ; | ||
| 330 | |||
| 331 | $orderApiClient = new Order(); | ||
| 332 | $orderApiClient | ||
| 333 | ->setConfiguration($orderConfiguration) | ||
| 334 | ->setMetadata($metadataOrder) | ||
| 335 | ->setShoppingCart($orderShoppingCart) | ||
| 336 | ->setUser($orderUser) | ||
| 337 | ; | ||
| 338 | |||
| 339 |             $cfg = get_option('woocommerce_pagantis_settings'); | ||
| 340 |             if ($cfg['pagantis_public_key_4x']=='' || $cfg['pagantis_private_key_4x']=='') { | ||
| 341 |                 throw new \Exception('Public and Secret Key not found'); | ||
| 342 | } | ||
| 343 | $orderClient = new Client($cfg['pagantis_public_key_4x'], $cfg['pagantis_private_key_4x']); | ||
| 344 | $pagantisOrder = $orderClient->createOrder($orderApiClient); | ||
| 345 |             if ($pagantisOrder instanceof \Pagantis\OrdersApiClient\Model\Order) { | ||
| 346 | $url = $pagantisOrder->getActionUrls()->getForm(); | ||
| 347 | addOrderToProcessingQueue($pagantisOrder->getId(), $order->get_id(), $this->urlToken4x,self::METHOD_ID); | ||
| 348 |             } else { | ||
| 349 | throw new OrderNotFoundException(); | ||
| 350 | } | ||
| 351 | |||
| 352 |             if ($url=="") { | ||
| 353 |                 throw new Exception(_("No ha sido posible obtener una respuesta de Pagantis")); | ||
| 354 |             } elseif ($this->extraConfig['PAGANTIS_FORM_DISPLAY_TYPE']=='0') { | ||
| 355 | wp_redirect($url); | ||
| 356 | exit; | ||
| 357 |             } else { | ||
| 358 | // @todo TM refactor with wp_localize_script - maybe put in other function | ||
| 359 | $template_fields = array( | ||
| 360 | 'url' => $url, | ||
| 361 | 'checkoutUrl' => $cancelUrl | ||
| 362 | ); | ||
| 363 |                 wc_get_template('iframe.php', $template_fields, '', $this->template_path); | ||
| 364 | } | ||
| 365 |         } catch (\Exception $exception) { | ||
| 366 |             wc_add_notice(__('Payment error ', 'pagantis') . $exception->getMessage(), 'error'); | ||
| 367 | insertLogEntry($exception); | ||
| 368 |             $checkout_url = get_permalink(wc_get_page_id('checkout')); | ||
| 369 | wp_redirect($checkout_url); | ||
| 370 | exit; | ||
| 371 | } | ||
| 689 | 
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths