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

classes/handler/Handler.inc.php

00001 <?php
00002 
00016 import('lib.pkp.classes.handler.PKPHandler');
00017 import('classes.handler.validation.HandlerValidatorPress');
00018 
00019 class Handler extends PKPHandler {
00020    function Handler() {
00021       parent::PKPHandler();
00022    }
00023 
00031    function getTargetPress($request) {
00032 
00033       // Get the requested path.
00034       $router =& $request->getRouter();
00035       $requestedPath = $router->getRequestedContextPath($request);
00036       $press = null;
00037 
00038       if ($requestedPath === 'index' || $requestedPath === '') {
00039          // No press requested. Check how many presses has the site.
00040          $pressDao =& DAORegistry::getDAO('PressDAO'); /* @var $pressDao PressDAO */
00041          $presses =& $pressDao->getPresses();
00042          $pressesCount = $presses->getCount();
00043          $press = null;
00044          if ($pressesCount === 1) {
00045             // Return the unique press.
00046             $press =& $presses->next();
00047          }
00048          if (!$press && $pressesCount > 1) {
00049             // Decide wich press to return.
00050             $user =& $request->getUser();
00051             if ($user) {
00052                // We have a user (private access).
00053                $press =& $this->_getFirstUserPress($user, $presses->toArray());
00054             }
00055             if (!$press) {
00056                // Get the site redirect.
00057                $press =& $this->_getSiteRedirectPress($request);
00058             }
00059          }
00060       } else {
00061          // Return the requested press.
00062          $press =& $router->getContext($request);
00063       }
00064       if (is_a($press, 'Press')) {
00065          return $press;
00066       }
00067       return null;
00068    }
00069 
00076    function _getFirstUserPress($user, $presses) {
00077       $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00078       $press = null;
00079       foreach($presses as $workingPress) {
00080          $userIsEnrolled = $userGroupDao->userInAnyGroup($user->getId(), $workingPress->getId());
00081          if ($userIsEnrolled) {
00082             $press = $workingPress;
00083             break;
00084          }
00085       }
00086       return $press;
00087    }
00088 
00094    function _getSiteRedirectPress($request) {
00095       $pressDao =& DAORegistry::getDAO('PressDAO'); /* @var $pressDao PressDAO */
00096       $site =& $request->getSite();
00097       $press = null;
00098       if ($site) {
00099          if($site->getRedirect()) {
00100             $press = $pressDao->getById($site->getRedirect());
00101          }
00102       }
00103       return $press;
00104    }
00105 }
00106 
00107 ?>

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