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.

When we provide a subscription based access to the reader for current year (e.g. Year 2009, Duration Jan. to Dec.), it seems that the reader can also access the previous years issues (e.g. Year 2008, 2007, 2006 ...) without any subscriptions.

Is there any possibilities in future OJS to give year-wise subscription as

These are actually two separate things:1) a valid subscription, which has a duration (e.g. 12 months), and2) what a subscription provides access to

OJS has been designed in such a way that 2) enables subscription holders to access all subscription-restricted content. What you are asking for is to limit 2) to 1), the subscription duration. This is something that we could consider for future releases of OJS, but at this time there has not been much demand for this sort of limitation.

If you do require something of this sort in the short-term, you should be able to easily modify the subscription check functions (subscribedUser and subscribedDomain) in classes/issue/IssueAction.inc.php

This error is typical if there is a missing brace '{' or '}' or missing semi-colon ';' at the end of the line. Please ensure that you are copy-and-pasting the code in its entirety and/or double-check that these are in place.

You are right, there was a missing brace. Now we are getting following warning:

Warning: Missing argument 2 for IssueAction::allowedPrePublicationAccess(), called in C:\ojs-2.2.3\classes\issue\IssueAction.inc.php on line 120 and defined in C:\ojs-2.2.3\classes\issue\IssueAction.inc.php on line 80

Warning: Cannot modify header information - headers already sent by (output started at C:\ojs-2.2.3\classes\issue\IssueAction.inc.php:80) in C:\ojs-2.2.3\classes\template\TemplateManager.inc.php on line 240

Warning: Cannot modify header information - headers already sent by (output started at C:\ojs-2.2.3\classes\issue\IssueAction.inc.php:80) in C:\ojs-2.2.3\classes\template\TemplateManager.inc.php on line 243

The above code was taken from OJS 2.2.3. It may work against OJS 2.2.2 with little or no modifications, but I would recommend testing it in either case.

Yes, you will need to set your issues as subscription-based and then grant subscriptions to individuals and institutions. There's detailed information about all of the options and settings in the OJS in an Hour guide, available here.

Just to clarify, the above code is not currently in either OJS 2.2.3 or OJS 2.3, but was simply provided as an example of how something like year-based subscription access could be achieved to overrride the current subscription check for an existing OJS instance.

In effect, the required changes are almost identical to that required for OJS 2.2.x. The major difference is that in OJS 2.3 individual and institutional subscriptions have been separated in the database and code such that calls to the old isValidSubscription are now differentiated between isValidIndividualSubscription and isValidInstitutionalSubscription.