IssueHandler::userCanViewGalley PHP Méthode

userCanViewGalley() public méthode

Determines whether or not a user can view an issue galley.
public userCanViewGalley ( $request )
$request Request
    function userCanViewGalley($request)
    {
        import('classes.issue.IssueAction');
        $issueAction = new IssueAction();
        $journal = $request->getJournal();
        $user = $request->getUser();
        $userId = $user ? $user->getId() : 0;
        $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
        $galley = $this->getGalley();
        // If this is an editorial user who can view unpublished issue galleys,
        // bypass further validation
        if ($issueAction->allowedIssuePrePublicationAccess($journal)) {
            return true;
        }
        // Ensure reader has rights to view the issue galley
        if ($issue->getPublished()) {
            $subscriptionRequired = $issueAction->subscriptionRequired($issue);
            $isSubscribedDomain = $issueAction->subscribedDomain($journal, $issue->getId());
            // Check if login is required for viewing.
            if (!$isSubscribedDomain && !Validation::isLoggedIn() && $journal->getSetting('restrictArticleAccess')) {
                Validation::redirectLogin();
            }
            // If no domain/ip subscription, check if user has a valid subscription
            // or if the user has previously purchased the issue
            if (!$isSubscribedDomain && $subscriptionRequired) {
                // Check if user has a valid subscription
                $subscribedUser = $issueAction->subscribedUser($journal, $issue->getId());
                if (!$subscribedUser) {
                    // Check if payments are enabled,
                    import('classes.payment.ojs.OJSPaymentManager');
                    $paymentManager = new OJSPaymentManager($request);
                    if ($paymentManager->purchaseIssueEnabled() || $paymentManager->membershipEnabled()) {
                        // If only pdf files are being restricted, then approve all non-pdf galleys
                        // and continue checking if it is a pdf galley
                        if ($paymentManager->onlyPdfEnabled() && !$galley->isPdfGalley()) {
                            return true;
                        }
                        if (!Validation::isLoggedIn()) {
                            Validation::redirectLogin("payment.loginRequired.forIssue");
                        }
                        // If the issue galley has been purchased, then allow reader access
                        $completedPaymentDao = DAORegistry::getDAO('OJSCompletedPaymentDAO');
                        $dateEndMembership = $user->getSetting('dateEndMembership', 0);
                        if ($completedPaymentDao->hasPaidPurchaseIssue($userId, $issue->getId()) || !is_null($dateEndMembership) && $dateEndMembership > time()) {
                            return true;
                        } else {
                            // Otherwise queue an issue purchase payment and display payment form
                            $queuedPayment =& $paymentManager->createQueuedPayment($journal->getId(), PAYMENT_TYPE_PURCHASE_ISSUE, $userId, $issue->getId(), $journal->getSetting('purchaseIssueFee'));
                            $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
                            $paymentManager->displayPaymentForm($queuedPaymentId, $queuedPayment);
                            exit;
                        }
                    }
                    if (!Validation::isLoggedIn()) {
                        Validation::redirectLogin("reader.subscriptionRequiredLoginText");
                    }
                    $request->redirect(null, 'about', 'subscriptions');
                }
            }
        } else {
            $request->redirect(null, 'index');
        }
        return true;
    }