SearchHandler::authors PHP Method

authors() public method

Show index of published articles by author.
public authors ( $args, $request )
$args array
$request PKPRequest
    function authors($args, $request)
    {
        $this->validate(null, $request);
        $this->setupTemplate($request);
        $journal = $request->getJournal();
        $authorDao = DAORegistry::getDAO('AuthorDAO');
        if (isset($args[0]) && $args[0] == 'view') {
            // View a specific author
            $firstName = $request->getUserVar('firstName');
            $middleName = $request->getUserVar('middleName');
            $lastName = $request->getUserVar('lastName');
            $affiliation = $request->getUserVar('affiliation');
            $country = $request->getUserVar('country');
            $publishedArticles = $authorDao->getPublishedArticlesForAuthor($journal ? $journal->getId() : null, $firstName, $middleName, $lastName, $affiliation, $country);
            // Load information associated with each article.
            $journals = array();
            $issues = array();
            $sections = array();
            $issuesUnavailable = array();
            $issueDao = DAORegistry::getDAO('IssueDAO');
            $sectionDao = DAORegistry::getDAO('SectionDAO');
            $journalDao = DAORegistry::getDAO('JournalDAO');
            foreach ($publishedArticles as $article) {
                $articleId = $article->getId();
                $issueId = $article->getIssueId();
                $sectionId = $article->getSectionId();
                $journalId = $article->getJournalId();
                if (!isset($issues[$issueId])) {
                    import('classes.issue.IssueAction');
                    $issue = $issueDao->getById($issueId);
                    $issues[$issueId] = $issue;
                    $issueAction = new IssueAction();
                    $issuesUnavailable[$issueId] = $issueAction->subscriptionRequired($issue) && (!$issueAction->subscribedUser($journal, $issueId, $articleId) && !$issueAction->subscribedDomain($journal, $issueId, $articleId));
                }
                if (!isset($journals[$journalId])) {
                    $journals[$journalId] = $journalDao->getById($journalId);
                }
                if (!isset($sections[$sectionId])) {
                    $sections[$sectionId] = $sectionDao->getById($sectionId, $journalId, true);
                }
            }
            if (empty($publishedArticles)) {
                $request->redirect(null, $request->getRequestedPage());
            }
            $templateMgr = TemplateManager::getManager($request);
            $templateMgr->assign(array('publishedArticles' => $publishedArticles, 'issues' => $issues, 'issuesUnavailable' => $issuesUnavailable, 'sections' => $sections, 'journals' => $journals, 'firstName' => $firstName, 'middleName' => $middleName, 'lastName' => $lastName, 'affiliation' => $affiliation));
            $countryDao = DAORegistry::getDAO('CountryDAO');
            $country = $countryDao->getCountry($country);
            $templateMgr->assign('country', $country);
            $templateMgr->display('frontend/pages/searchAuthorDetails.tpl');
        } else {
            // Show the author index
            $searchInitial = $request->getUserVar('searchInitial');
            $rangeInfo = $this->getRangeInfo($request, 'authors');
            $authors = $authorDao->getAuthorsAlphabetizedByJournal(isset($journal) ? $journal->getId() : null, $searchInitial, $rangeInfo);
            $templateMgr = TemplateManager::getManager($request);
            $templateMgr->assign(array('searchInitial' => $request->getUserVar('searchInitial'), 'alphaList' => explode(' ', __('common.alphaList')), 'authors' => $authors));
            $templateMgr->display('frontend/pages/searchAuthorIndex.tpl');
        }
    }