Payment Method undefined In SysAdmin View Profile

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 275

Reproduction

  • Login as SA
  • List Customers
  • Choose a customer , highlight the row and click “view profile” under the menu.

When the page renders the debug.log entry will show the message above.

Resolution

Stop Gap

A stop-gap measure is in place to default to text “stripe”, but we need to find out why the myslp->User object does not have a payment method set.

$payment_method = $myslp->User->payment_method ?? 'stripe';

Various PHP 8 Errors

Related To Blog ID Not Set

  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 387
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “blog_id” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 387
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 391
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “path” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 391
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 393
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “path” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 393
  • [08-Nov-2024 20:41:38 UTC] PHP Warning: Attempt to read property “path” on int in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 409

Invalid submenu call

  • [08-Nov-2024 20:28:43 UTC] PHP Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/wp-admin/admin-header.php on line 36

Reproduction

  • Login as SA
  • Customers | All Users
  • Search CiCi
  • Hover and click profile
  • errors are in the debug.log

Resolution

Related To Blog ID Not Set

These errors are all related to an issue in the MySLP Customer Maintenance plugin where the $user_blog var was not set to a proper WP_Site object when the user was an SA.

Added a line to fetch WP_Site based on the $myslp->User->blog_id in those cases.

Invalid Submenu Call

This strip_tags() error is coming from WP core admin functions. Turns out the admin-header rendering expected a call to add_submenu_page to actually name a menu in the first param, not pass ” as a string. Apparently you need to attach all submenus to a parent menu of some kind.


Attached the View Profile admin page to the ‘users.php’ (Customers) menu as a submenu.

Deprecated Return Types In Stripe Library

Deprecated:
Return type of Stripe\Util\CaseInsensitiveArray::offsetExists($offset) 
Return type of Stripe\Util\CaseInsensitiveArray::offsetGet($offset)
Return type of Stripe\Util\CaseInsensitiveArray::offsetSet($offset, $value)
Return type of Stripe\Util\CaseInsensitiveArray::offsetUnset($offset)
Return type of Stripe\Util\CaseInsensitiveArray::count() 
Return type of Stripe\Util\CaseInsensitiveArray::getIterator() 
Return type of Stripe\Util\Set::getIterator() 
Return type of Stripe\StripeObject::offsetExists($k) 
Return type of Stripe\StripeObject::offsetGet($k) 
Return type of Stripe\StripeObject::offsetSet($k, $v) 
Return type of Stripe\StripeObject::offsetUnset($k) 
Return type of Stripe\StripeObject::count() 
Return type of Stripe\StripeObject::jsonSerialize() 
Return type of Stripe\Collection::getIterator()

Detailed Example

Deprecated: 
Return type of Stripe\Util\CaseInsensitiveArray::offsetExists($offset) 
should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, 
or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in 
/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Util/CaseInsensitiveArray.php on line 44 

Call Stack: 0.0001 464728 
1. {main}() /var/www/html/wp-admin/admin.php:0 0.4073 9234784 
2. do_action($hook_name = 'toplevel_page_myslp_profile') /var/www/html/wp-admin/admin.php:259 0.4073 9235000 
3. WP_Hook->do_action($args = [0 => '']) /var/www/html/wp-includes/plugin.php:517 0.4073 9235000 
4. WP_Hook->apply_filters($value = '', $args = [0 => '']) /var/www/html/wp-includes/class-wp-hook.php:348 0.4073 9235432 
5. MySLP_Customer_Profile->page_profile('') /var/www/html/wp-includes/class-wp-hook.php:324 0.4079 9250552 
6. require_once('/var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile.php') /var/www/html/wp-content/plugins/myslp-customer-profile/include/MySLP_Customer_Profile.php:259 0.4079 9250552 
7. MySLP_Recurring_Payments->get_subscription_details($user_id = 592, $force = TRUE) /var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile.php:19 0.4113 9252720 
8. MySLP_Stripe_Payments->get_subscription_details($subscription_id = 'sub_Gycmzo5SSaE1Wd') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/MySLP_Recurring_Payments.php:154 0.4113 9252720 
9. MySLP_Stripe_Payments->load_lib() /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/MySLP_Stripe_Payments.php:418 0.4115 9253216 
10. require_once('/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/init.php') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/MySLP_Stripe_Payments.php:435 0.4119 9253760 
11. require('/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Util/CaseInsensitiveArray.php') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/init.php:7 
Deprecated: Return type of Stripe\Util\CaseInsensitiveArray::offsetGet($offset)

System Info

Dev Notes

Related

Resolution

The Stripe API library included in the myslp-payments plugin was outdated.

This was already updated and in the develop branch, however the staging branch in myslp-payments was not updated to point to this latest updated.

  1. Merged the develop branch into staging on the myslp-payments repo (ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/myslp-payments) and pushed up to AWS CodeCommit.
  2. Check out staging branch on the myslp_aws_ecs_kit on local dev box.
    • Ran ./tools/update_code.sh on the local dev box.

This pushed code and committed it to the staging branch on the myslp_aws_ecs kit. This triggered CodePipline to build the new ECR image , fetching the staging branch on the myslp_aws_ecs_kit and all submodules before performing the build.