All of the things you mention are already known the moment SMF gets the info about a user because they are stored in the members table.
Enable or disable the PM icon on each member in "display" (i.e. topic view) is a pita because:
1) it depends on the settings of the "other" user,
2) it depends on "another table",
3) it may be different for each and every user.
So, to be sure, you have to:
1) check the settings of each user that posted in a topic,
1a) if that user has "allow PM from everybody" you are lucky,
1b) if the user has "no PMs" that's easy too,
1c) if the has "allow PMs only from buddies" SMF has to query *his* buddy list and see if *you* are there
1d) if the user has "don't allow from deny" SMF has to query *his* deny list to see if *you* are these
2) repeat 1 (including either 1a or b or c or d) for each poster in a topic on each and every page load.
Arantor was faster, but I already wrote it, so I posted...
