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
00034 $router =& $request->getRouter();
00035 $requestedPath = $router->getRequestedContextPath($request);
00036 $press = null;
00037
00038 if ($requestedPath === 'index' || $requestedPath === '') {
00039
00040 $pressDao =& DAORegistry::getDAO('PressDAO');
00041 $presses =& $pressDao->getPresses();
00042 $pressesCount = $presses->getCount();
00043 $press = null;
00044 if ($pressesCount === 1) {
00045
00046 $press =& $presses->next();
00047 }
00048 if (!$press && $pressesCount > 1) {
00049
00050 $user =& $request->getUser();
00051 if ($user) {
00052
00053 $press =& $this->_getFirstUserPress($user, $presses->toArray());
00054 }
00055 if (!$press) {
00056
00057 $press =& $this->_getSiteRedirectPress($request);
00058 }
00059 }
00060 } else {
00061
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');
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 ?>