Great!
What I would do, if I were your programmer, would be to create a “links” table (or other such appropriately named table) in my WordPress installation. Then, in my header.php file I would run a SQL query as the very first thing to update my table with the user’s ID (of the logged in user), and the ID of the page/post/whatever they are currently looking at.
I would probably keep the ID’s of the pages and the user ID as one row instead of separate rows, to keep the database small, but that’s just me an I’m not a database engineer. This way the table will only be the same number of rows as there are registered users.
You could probably get away with two columns, one for the user’s ID and another for a comma separated list of page/post/whatever ids. Example:
userID postIDs
21 1,2,32,45
If, however, you wanted to record the date a page was first/last access, you’ll need to put each entry in it’s own row. Example:
userID postID dateFirstViewed dateLastViewed
21 1 12345678912 53627848956
21 2 12345678332 53627848956
21 32 12345678912 53627848956
Note that the same userID is used for all three entries to indicate this user visited these three pages/posts/whatever. Also note that the dates are timestamps, not actual dates. Better to store timestamps in a database then something like 8/2/13 4:32pm.
So first, my function would update my table, then my function would update a new session variable to contain all of the information we just put into the database. This way I can reference the session variable to notify the user of where they have already been on my site without taxing the server by constantly querying the database. Looping through one variable 10 times is way easier than querying a database 10 times.
Using for loops, if/else statements, or whatever other means I need, I could add class names to links, make “new” or “old” content tags, or whatever other creative way to show distinctions in the content.
I’m sure there are plenty of other ways to do this, and some more efficient than mine, but this is off the top of my head without too much thought and time put in. This should at least get your programmer started in the right direction.