As the developers of Open Journal Systems, Open Conference Systems, Open Harvester Systems, and Open Monograph Press, the PKP team are experts in helping journal managers and conference organizers make the most of their online publishing projects. PKP Publishing Services offers support for:

As a customer of PKP Publishing Services, you will not only receive direct, personalized support from the PKP Development Team, but will be contributing to the ongoing development of the PKP applications. All funds raised by PKP Publishing Services go directly toward enhancing our free, open source software. For more information, please contact us.

Looking at the codes of OJS, it's complicated. Can some here give me a good starting point. What files should I look into, what modifications should I do. What I need to do is to limit pdf downloads per user , show report of download per user and ip. Thanks

OK, I look in to the database, I think the status in subscription table tells if the user has paid an individual journal subscription. I am right? My question is where in the database tells if a user has paid an article in a pay per view subscription? What is the class/functions that check if a user has a paid individual subscription of a journal or paid pay per view articles.I read the app guidelines, but it is not clear what class/functions check if a user has paid individual journal subscription/paid pay per view article. I need to know these things. Thanks, hope someone will answer this.

pay-per-views are not handled as subscriptions in OJS. While you found subscriptions in the DB table called "subscriptions", you'll have to take a look at the DB table "completed_payments" for information about all single-article-purchases.

The classes for handling subscriptions are to be found in the folder /classes/subscription. The function for validating access to a certain PDF file is in the file /pages/article/ArticleHandler.inc.php, it's called validate(). It first checks, if a user is subscriber to the journal, and if that's not the case, it checks if the article has been individually purchased.