SoylentNews/slashcode — pull request #266 by paulej72 (2014-08-10 13:59:20+00:00)
Title: Subscriptions

Well here it is the massive update to the Subscribe Plugin.
The old slash subscription code was designed to give users that subscribe ad free pages as well as early access to stories. The majority of our community did not want subscribers to have early access to posts, because it was thought that some users would abuse this functionality. Also since we do not have ads, we wanted to change the subscription length from number of pages to number of days. These two changes should have been easy to do.

The problem was that the slash subscription module was missing functionality like many of the systems that we have fixed. The PayPal payment system was missing the back end payment processing code, so although a user could pay for a subscription there was nothing to tie the completed transaction back to the website to give the user their subscription. Being PayPal this code was not straight forward to implement, and as of this writing we only have the real-time component working. This required creating the ipnd daemon, which is a small Perl based web engine that listens for and processes PayPal Instant Payment Notifications. Slash had to be bypassed as we needed the post string sent by PayPal to be returned to them in the same exact order without any modifications. This could not be done within the Slash mod_perl framework.

Other subscriber bonuses were also added to the code. One of the biggest is that subscribers will not be throttled by slash's formkeys. They will no longer get the "Slow down cowboy" messages. Another community requested feature was the ability to turn off the subscriber indication. This was a * that was beside a user name next to a comment. It is now a star and goes well with our new Zoo icons. But the indicator status was stored with the comment at the time it was made. I had to rewrite the code so that the check would happen at display time and it would check the author of the comment to see if they are a subscriber and they do not have the hide_subscription status checked.

Work was also done to clean up the subscription preference page and to add in subscription specific message preferences.