I understand what you mean, but when I say they aren’t critical, I really mean they won’t cause trouble. That said, we plan to take care of all of these eventually. We’re doing a complete rewrite of the plugin, and care is being taken to avoid these. Since we’re rewriting the plugin, and these warnings aren’t really important, we haven’t spent more time to clean them up in the current s2Member.
The page index warning is about this line:
[hilite pre_code]
if (!$page || "*" === $page || $pagenow === $page || $_GET["page"] === $page)
[/hilite]
If page were in the GET array and exactly equal to the value of the variable $page, it’d be true in that condition, but it is possible that ‘page’ is not in the GET array at all, which normally means that condition is false, but PHP would still warn that it wasn’t defined at all. To avoid that, it’d have to first check if $_GET[‘page’] is set and then check the value. Try editing that line so it’s like this and see if the warning goes away:
[hilite pre_code]
if (!$page || "*" === $page || $pagenow === $page || (isset($_GET["page"]) && $_GET["page"] === $page))
[/hilite]
About the $cache_needs_updating var not being defined, it’s a similar problem. There are a few conditionals before that line where the variable can be set to true, but if neither one happens, then the var remains undefined. It should be first set as false and then changed to true if needed.
I’ll forward this to Jason so he can comment on it if needed. :)