• Main Page
  • Modules
  • Classes
  • Files
  • File List

pages/index/IndexHandler.inc.php

00001 <?php
00002 
00016 import('classes.handler.Handler');
00017 
00018 class IndexHandler extends Handler {
00022    function IndexHandler() {
00023       parent::Handler();
00024    }
00025 
00026 
00027    //
00028    // Public handler operations
00029    //
00038    function index($args, &$request) {
00039       $targetPress = $this->getTargetPress($request);
00040       $press =& $request->getPress();
00041       $user =& $request->getUser();
00042 
00043       if ($user && !$targetPress && Validation::isSiteAdmin()) {
00044          // If the user is a site admin and no press exists,
00045          // send them to press administration to create one.
00046          return $request->redirect(null, 'admin', 'presses');
00047       }
00048 
00049       // Public access.
00050       $this->setupTemplate();
00051       $templateMgr =& TemplateManager::getManager($request);
00052       $templateMgr->assign('helpTopicId', 'user.home');
00053 
00054       if ($press) {
00055          // Display the current press home.
00056          $this->_displayPressIndexPage($press, $templateMgr);
00057       } elseif ($targetPress) {
00058          // We're not on a press homepage, but there's one
00059          // available; redirect there.
00060          $request->redirect($targetPress->getPath());
00061       } else {
00062          // A target press couldn't be determined for some reason.
00063          if ($user) {
00064             // Redirect to user profile.
00065             $request->redirect(null, 'user', 'profile');
00066          } else {
00067             // Not logged in. Redirect to login page.
00068             $request->redirect(null, 'login');
00069          }
00070       }
00071    }
00072 
00073 
00074    //
00075    // Private helper methods.
00076    //
00082    function _displayPressIndexPage($press, &$templateMgr) {
00083 
00084       // Assign header and content for home page.
00085       $templateMgr->assign('displayPageHeaderTitle', $press->getPressPageHeaderTitle(true));
00086       $templateMgr->assign('displayPageHeaderLogo', $press->getPressPageHeaderLogo(true));
00087       $templateMgr->assign('additionalHomeContent', $press->getLocalizedSetting('additionalHomeContent'));
00088       $templateMgr->assign('homepageImage', $press->getLocalizedSetting('homepageImage'));
00089 
00090       // Display creative commons logo/licence if enabled.
00091       $templateMgr->assign('displayCreativeCommons', $press->getSetting('includeCreativeCommons'));
00092 
00093       // Display announcements if enabled.
00094       $enableAnnouncements = $press->getSetting('enableAnnouncements');
00095       if ($enableAnnouncements) {
00096          $enableAnnouncementsHomepage = $press->getSetting('enableAnnouncementsHomepage');
00097          if ($enableAnnouncementsHomepage) {
00098             $numAnnouncementsHomepage = $press->getSetting('numAnnouncementsHomepage');
00099             $templateMgr->assign('enableAnnouncementsHomepage', true);
00100             $announcementDao =& DAORegistry::getDAO('AnnouncementDAO');
00101             $announcements =& $announcementDao->getAnnouncementsNotExpiredByAssocId(ASSOC_TYPE_PRESS, $press->getId());
00102             $templateMgr->assign_by_ref('announcements', $announcements);
00103             if (isset($numAnnouncementsHomepage)) {
00104                $templateMgr->assign('numAnnouncementsHomepage', $numAnnouncementsHomepage);
00105             }
00106          }
00107       }
00108 
00109       // Include random spotlight items for the press home page.
00110       $spotlightDao =& DAORegistry::getDAO('SpotlightDAO');
00111       $spotlights = $spotlightDao->getRandomByPressId($press->getId(), MAX_SPOTLIGHTS_VISIBLE);
00112       $templateMgr->assign('spotlights', $spotlights);
00113 
00114       // Include any social media items that are configured for the press itself.
00115       $socialMediaDao =& DAORegistry::getDAO('SocialMediaDAO');
00116       $socialMedia =& $socialMediaDao->getEnabledForPressByPressId($press->getId());
00117       $blocks = array();
00118       while ($media =& $socialMedia->next()) {
00119          $media->replaceCodeVars();
00120          $blocks[] = $media->getCode();
00121       }
00122 
00123       $templateMgr->assign_by_ref('socialMediaBlocks', $blocks);
00124 
00125       $templateMgr->display('index/press.tpl');
00126    }
00127 }
00128 
00129 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1