Forum OpenACS Q&A: Is anyone interested in download reports for file storage?

A client has asked me to add reporting to file storage so that they can tell who has downloaded what files.  This is for a corporate eLearning installation where they need to be able to keep an eye on students and make sure they are participating.

I thought that this would be of general interest but Don is a bit dubious and suggested that I post the idea for public comment.  My proposed changes consist of adding a table to file storage, writing a row to it each time someone downloads a file, and adding a link for admins to access a simple report.  This is actually a dotLRN install, so I would provide the link at the group, community and site-wide levels.  It can be turned off by a package parameter.

Comments?  Is this something that should be added to the toolkit?

On , we would probably use this feature. I think that if the feature is turned off, even the logging should be turned off, so as to not slow down file-storage installations that don't use the feature.
I would think logging  a row would be negligibly fast compared to serving a file...
We would use this feature.
I can think of different special cases when it would be a helpful feature to know who downloaded a file.
Hi Janine,

I implemented this about 1.5 years ago on an OACS3.2.5 site for a corporate client.  So this is at least the second time its been requested.

I implemented it with user_content_map by adding the file storage pages to the static content pages.  I don't know if this approach would be applicable in 4x.

I think you shoudl consider the suggestions in this thread:

It would be good to try to find a more general solution then adding a table to File Storage.  For instance what if next semseter dotLRN has expanded and your client puts class content into ETP, Photo Album, FAQ etc. then wants to know if the students have viewed this content?

I was under the assumption there is (going to be) a general user tracking module? If not, would you consider to write such a module, which stores the user, the object_id, the number of times the object has been visited by the user and the last_time the object has been seen by that particular user or would this be out of scope?

Then you could maybe enable a service contract with file storage that add's an entry (or increases it) for that particular object.

In the long run you would not only have the valuable information, which user has viewed what document, but also what documents are the most popular. This would be a valuable addition to an universal grading system in that sense, that you could see, what object has been viewed by  which user, but not yet rated by him. It would be especially interesting to get his/her rating/comments, if the file was downloaded a couple of times. But I'm sure I'm way out of scope here :).

So, my request / suggestion would be to keep the table as general as possible and use a counter with this table. If you can go one step further, make a seperate service package out of it. And make sure you can turn this off site wide and on a per user basis (if your client is keen on getting this data, but not all his users agree to it, and have the legal right to decline the collection of this data).

Last but not least, thanks for letting us know and getting the discussion out in the open!

Whoa, there! :)  I will make sure my client reads this thread and find out what approach they want me to take, but my assumption at this point is that they aren't going to want to fund a major effort.  If it will be useful to people to have this simple report in place until someone does have the resources to fund something more ambitious then I'll put it in, if not then I won't.
We would use a file storage download tracker for one of our clients as well.

For our purposes, a very basic solution would be sufficient i.e. just see the number of downloads for a particular file. To see who's downloaded the file would also be nice.

Denis, what you're talking about is the opposite of what I need to do (a file-centric view instead of a user-centric one).  However, it ought to be easy enough to do it both ways, so I will make it at least that fancy. :)
The download package already tracks some download statistics. It might only be the number of downloads per file. I know it at least records the various reasons people downloaded, and it might also record the IP address and time of a download.
Janine, do you have any concrete timeline for this?
Janine, thanks for your effort here. I guess it really makes sense to have a user-centric as well as a file-centric view.

Do you have any concrete timeline for this to happen?

We would have use for it, but it would be much more valuble to do what Caroline and Malte suggest. File-Storage is only one piece in the puzzle and eventually we will need a general user tracking solution.
To clarify my "dubiousness" as Janine puts it ... I mentioned that I didn't remember anyone else ever requesting this feature so suggested she raise it here to see what level of interest there'd be.  Looks like a lot!
Aristoi would be interested in participating in coding/funding a joint project to create a general package, not a file storage specific solution. For our requirements the solution needs to be scalable and not affect performance. We do not need it to be real time; the data can be 24 hours old.

We do require both page based and a user based views. Our requirements are to track probably 2 dozen or so different pages, we do not require a solution that tracks every click.

We've been looking at the idea's Don and others have proposed for analyizing logs possibly using an open source log analyzer tool such as anlalog or webalize. aD used to have an old package for 3x called Reportee that was a wrapper for analog, which might be worth looking at as a starting point.

Does anyone else have similar requirements and an interest in this kind of approach?

Are there any news on either the file-storage specific solution or the general approach?
I will be working on the file-storage specific solution soon - hopefully within the next week or so.  No promises, though, because higher priority tasks keep coming up.  For this work someone else is setting the priorities so I have to go with what the client needs first.