Template::notices(), 'logged_in' => is_user_logged_in(), 'account_url' => Access::account_url(), 'guests' => (bool) Settings::get( 'guest_returns' ), 'withdraw_url' => Eligibility::enabled( 'withdrawal' ) ? Access::withdrawal_base() : '', ) ); }, '

' . esc_html__( 'The returns portal is temporarily unavailable. Please contact us.', 'returnkit' ) . '

', 'portal' ); } /** * The return form for an order. * * @param \WC_Order $order Order. * @param string $key Order key (guest link) or ''. * @return string */ public static function return_form( \WC_Order $order, $key ) { $check = Eligibility::check( $order, 'return' ); if ( $check['ok'] && ! Eligibility::guest_allowed( $order ) ) { $check = array_merge( $check, array( 'ok' => false, 'code' => 'guest' ) ); } return Template::render( 'portal/return-form.php', array( 'notices' => Template::notices(), 'order' => $order, 'key' => $key, 'check' => $check, 'message' => $check['ok'] ? '' : Eligibility::message( $check['code'], 'return' ), 'lines' => $check['ok'] ? Eligibility::items( $order, 'return' ) : array(), 'reasons' => Reasons::all(), 'required' => (bool) Settings::get( 'require_reason' ), 'existing' => Requests::query( array( 'order_id' => $order->get_id() ), 20 ), 'credit' => (bool) Settings::get( 'credit_enabled' ), 'bonus' => (int) Settings::get( 'credit_bonus' ), 'withdraw' => Eligibility::check( $order, 'withdrawal' )['ok'] ? Access::withdrawal_url( $order, '' !== $key ) : '', 'old' => Forms::$old, ) ); } /** * A request's status page. * * @param Request $request Request. * @return string */ public static function request_view( Request $request ) { // Visitors who came through a token link act with the token; account // holders inside My Account act with a nonce. $token = isset( $_GET['rtkt_token'] ) ? $request->access_token() : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended return Template::render( 'portal/request.php', array( 'notices' => Template::notices(), 'request' => $request, 'order' => $request->order(), 'timeline' => self::timeline( $request ), 'token' => $token, 'instructions' => 'approved' === $request->status() && $request->needs_shipping_back() ? Settings::text( 'return_instructions' ) : '', 'address' => 'approved' === $request->status() && $request->needs_shipping_back() ? (string) Settings::get( 'return_address' ) : '', ) ); } /** * Customer-visible timeline entries. * * @param Request $request Request. * @return array[] */ public static function timeline( Request $request ) { $visible = array( 'created', 'approved', 'received', 'completed', 'rejected', 'cancelled', 'message', 'credited', 'exchange_order' ); $out = array(); foreach ( Log::for_request( $request->id() ) as $entry ) { if ( in_array( $entry['event'], $visible, true ) ) { $out[] = $entry; } } /** * Filters the timeline entries customers see. * * @param array[] $entries Log entries. * @param Request $request Request. */ return (array) apply_filters( 'rtkt_customer_timeline', $out, $request ); } }