Development

Changeset 27716 for plugins/diemPlugin

You must first sign up to be able to contribute.

Show
Ignore:
Timestamp:
02/08/10 11:37:12 (3 years ago)
Author:
ornicar2
Message:

[Diem]
- refactored dmFront actions to support user integration and be more extensible

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/diemPlugin/trunk/dmFrontPlugin/modules/dmFront/lib/BasedmFrontActions.class.php

    r27551 r27716  
    66  public function executePage(dmWebRequest $request) 
    77  { 
    8     $slug = $request->getParameter('slug'); 
    9  
    10     // find matching page_route for this slug 
    11     $pageRoute = $this->getService('page_routing')->find($slug); 
    12      
    13     if ($pageRoute) 
    14     { 
    15       $this->page = $pageRoute->getPage(); 
    16        
    17       // found a page on another culture 
    18       if($pageRoute->getCulture() !== $this->getUser()->getCulture()) 
    19       { 
    20         $this->getUser()->setCulture($pageRoute->getCulture()); 
    21       } 
    22     } 
    23     // the page does not exist 
    24     else 
    25     { 
    26       // if page_not_found_handler suggest a redirection 
    27       if ($redirectionUrl = $this->getService('page_not_found_handler')->getRedirection($slug)) 
    28       { 
    29         return $this->redirect($redirectionUrl, 301); 
    30       } 
    31        
    32       // else use main.error404 page 
    33       $this->page = dmDb::table('DmPage')->fetchError404(); 
    34     } 
     8    $this->page = $this->getPageFromRequest($request); 
    359 
    3610    $this->secure(); 
     
    3913  } 
    4014 
     15  protected function getPageFromRequest(dmWebRequest $request) 
     16  { 
     17    if($request->hasParameter('dm_page')) 
     18    { 
     19      return $request->getParameter('dm_page'); 
     20    } 
     21 
     22    $slug = $request->getParameter('slug'); 
     23 
     24    // find matching page_route for this slug 
     25    $pageRoute = $this->getService('page_routing')->find($slug); 
     26 
     27    if ($pageRoute) 
     28    { 
     29      $page = $pageRoute->getPage(); 
     30 
     31      // found a page on another culture 
     32      if($pageRoute->getCulture() !== $this->getUser()->getCulture()) 
     33      { 
     34        $this->getUser()->setCulture($pageRoute->getCulture()); 
     35      } 
     36    } 
     37    // the page does not exist 
     38    else 
     39    { 
     40      // if page_not_found_handler suggest a redirection 
     41      if ($redirectionUrl = $this->getService('page_not_found_handler')->getRedirection($slug)) 
     42      { 
     43        return $this->redirect($redirectionUrl, 301); 
     44      } 
     45 
     46      // else use main.error404 page 
     47      $page = dmDb::table('DmPage')->fetchError404(); 
     48    } 
     49 
     50    return $page; 
     51  } 
     52 
    4153  protected function secure() 
    4254  { 
     55    $user = $this->getUser(); 
     56     
    4357    if ( 
    44           // the site is not active and requires the view_site permission to be displayed 
    45           (!dmConfig::get('site_active') && !$this->getUser()->can('site_view')) 
    46           // the page is not active and requires the view_site permission to be displayed 
    47       ||  (!$this->page->get('is_active') && !$this->getUser()->can('site_view')) 
     58          // the site is not active and requires the site_view permission to be displayed 
     59          (!dmConfig::get('site_active') && !$user->can('site_view')) 
     60          // the page is not active and requires the site_view permission to be displayed 
     61      ||  (!$this->page->get('is_active') && !$user->can('site_view')) 
    4862          // the page is secured and requires authentication to be displayed 
    49       ||  ($this->page->get('is_secure') && !$this->getUser()->isAuthenticated()) 
     63      ||  ($this->page->get('is_secure') && !$user->isAuthenticated()) 
    5064          // the page is secured and the user has not required credentials 
    51       ||  ($this->page->get('is_secure') && $this->page->get('credentials') && !$this->getUser()->can($this->page->get('credentials'))) 
     65      ||  ($this->page->get('is_secure') && $this->page->get('credentials') && !$user->can($this->page->get('credentials'))) 
    5266    ) 
    5367    { 
    54       // use main.login page 
    55       $this->page = dmDb::table('DmPage')->fetchLogin(); 
     68      $this->getResponse()->setStatusCode($user->isAuthenticated() ? 403 : 401); 
     69       
     70      // use main.signin page 
     71      $this->page = dmDb::table('DmPage')->fetchSignin(); 
    5672    } 
    5773  } 
     
    6278     
    6379    return $this->renderPage(); 
    64   } 
    65    
    66   public function executeLogin(dmWebRequest $request) 
    67   { 
    68     $this->page = dmDb::table('DmPage')->fetchLogin(); 
    69      
    70     return $this->renderPage(); 
    71   } 
    72    
    73   public function executeSecure(dmWebRequest $request) 
    74   { 
    75     return $this->executeLogin($request); 
    7680  } 
    7781   
     
    8589      $this->response->setStatusCode(404);  
    8690    } 
    87     elseif($this->page->isModuleAction('main', 'login')) 
    88     { 
    89       $this->getResponse()->setStatusCode(401); 
    90     } 
    91  
     91     
    9292    $template = $this->page->getPageView()->getLayout()->get('template'); 
    93      
     93 
    9494    if (empty($template)) 
    9595    { 
     
    9999    $this->setTemplate($template); 
    100100     
    101     $userLayout = dmProject::rootify('apps/front/modules/dmFront/templates/layout')
     101    $userLayout = sfConfig::get('sf_root_dir').'/apps/front/modules/dmFront/templates/layout'
    102102    if (file_exists($userLayout.'.php')) 
    103103    { 
     
    106106    else 
    107107    { 
    108       $this->setLayout(dmOs::join(sfConfig::get('dm_front_dir'), 'modules/dmFront/templates/layout')); 
     108      $this->setLayout(sfConfig::get('dm_front_dir').'/modules/dmFront/templates/layout'); 
    109109    } 
    110110     
     
    181181  } 
    182182 
    183  
    184183  public function executeEditToggle(sfWebRequest $request) 
    185184  {