mirror of
https://github.com/atlanticbiomedical/portal-legacy.git
synced 2025-07-02 01:47:28 -04:00
458 lines
12 KiB
PHP
458 lines
12 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of the symfony package.
|
||
|
* (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
|
||
|
* (c) 2004-2006 Sean Kerr.
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* sfAction executes all the logic for the current request.
|
||
|
*
|
||
|
* @package symfony
|
||
|
* @subpackage action
|
||
|
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
||
|
* @author Sean Kerr <skerr@mojavi.org>
|
||
|
* @version SVN: $Id: sfAction.class.php 3624 2007-03-17 10:57:03Z fabien $
|
||
|
*/
|
||
|
abstract class sfAction extends sfComponent
|
||
|
{
|
||
|
protected
|
||
|
$security = array();
|
||
|
|
||
|
/**
|
||
|
* Initializes this action.
|
||
|
*
|
||
|
* @param sfContext The current application context.
|
||
|
*
|
||
|
* @return bool true, if initialization completes successfully, otherwise false
|
||
|
*/
|
||
|
public function initialize($context)
|
||
|
{
|
||
|
parent::initialize($context);
|
||
|
|
||
|
// include security configuration
|
||
|
require(sfConfigCache::getInstance()->checkConfig(sfConfig::get('sf_app_module_dir_name').'/'.$this->getModuleName().'/'.sfConfig::get('sf_app_module_config_dir_name').'/security.yml', true));
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Executes an application defined process prior to execution of this sfAction object.
|
||
|
*
|
||
|
* By default, this method is empty.
|
||
|
*/
|
||
|
public function preExecute()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Execute an application defined process immediately after execution of this sfAction object.
|
||
|
*
|
||
|
* By default, this method is empty.
|
||
|
*/
|
||
|
public function postExecute()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Forwards current action to the default 404 error action.
|
||
|
*
|
||
|
* @param string Message of the generated exception
|
||
|
*
|
||
|
* @throws sfError404Exception
|
||
|
*
|
||
|
*/
|
||
|
public function forward404($message = '')
|
||
|
{
|
||
|
throw new sfError404Exception($message);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Forwards current action to the default 404 error action unless the specified condition is true.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string Message of the generated exception
|
||
|
*
|
||
|
* @throws sfError404Exception
|
||
|
*/
|
||
|
public function forward404Unless($condition, $message = '')
|
||
|
{
|
||
|
if (!$condition)
|
||
|
{
|
||
|
throw new sfError404Exception($message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Forwards current action to the default 404 error action if the specified condition is true.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string Message of the generated exception
|
||
|
*
|
||
|
* @throws sfError404Exception
|
||
|
*/
|
||
|
public function forward404If($condition, $message = '')
|
||
|
{
|
||
|
if ($condition)
|
||
|
{
|
||
|
throw new sfError404Exception($message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Redirects current action to the default 404 error action (with browser redirection).
|
||
|
*
|
||
|
* This method stops the current code flow.
|
||
|
*
|
||
|
*/
|
||
|
public function redirect404()
|
||
|
{
|
||
|
return $this->redirect('/'.sfConfig::get('sf_error_404_module').'/'.sfConfig::get('sf_error_404_action'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Forwards current action to a new one (without browser redirection).
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param string A module name
|
||
|
* @param string An action name
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*/
|
||
|
public function forward($module, $action)
|
||
|
{
|
||
|
if (sfConfig::get('sf_logging_enabled'))
|
||
|
{
|
||
|
$this->getContext()->getLogger()->info('{sfAction} forward to action "'.$module.'/'.$action.'"');
|
||
|
}
|
||
|
|
||
|
$this->getController()->forward($module, $action);
|
||
|
|
||
|
throw new sfStopException();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* If the condition is true, forwards current action to a new one (without browser redirection).
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string A module name
|
||
|
* @param string An action name
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*/
|
||
|
public function forwardIf($condition, $module, $action)
|
||
|
{
|
||
|
if ($condition)
|
||
|
{
|
||
|
$this->forward($module, $action);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Unless the condition is true, forwards current action to a new one (without browser redirection).
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string A module name
|
||
|
* @param string An action name
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*/
|
||
|
public function forwardUnless($condition, $module, $action)
|
||
|
{
|
||
|
if (!$condition)
|
||
|
{
|
||
|
$this->forward($module, $action);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Redirects current request to a new URL.
|
||
|
*
|
||
|
* 2 URL formats are accepted :
|
||
|
* - a full URL: http://www.google.com/
|
||
|
* - an internal URL (url_for() format): module/action
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param string Url
|
||
|
* @param string Status code (default to 302)
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*/
|
||
|
public function redirect($url, $statusCode = 302)
|
||
|
{
|
||
|
$url = $this->getController()->genUrl($url, true);
|
||
|
|
||
|
if (sfConfig::get('sf_logging_enabled'))
|
||
|
{
|
||
|
$this->getContext()->getLogger()->info('{sfAction} redirect to "'.$url.'"');
|
||
|
}
|
||
|
|
||
|
$this->getController()->redirect($url, 0, $statusCode);
|
||
|
|
||
|
throw new sfStopException();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Redirects current request to a new URL, only if specified condition is true.
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string url
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*
|
||
|
* @see redirect
|
||
|
*/
|
||
|
public function redirectIf($condition, $url)
|
||
|
{
|
||
|
if ($condition)
|
||
|
{
|
||
|
$this->redirect($url);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Redirects current request to a new URL, unless specified condition is true.
|
||
|
*
|
||
|
* This method stops the action. So, no code is executed after a call to this method.
|
||
|
*
|
||
|
* @param bool A condition that evaluates to true or false
|
||
|
* @param string Url
|
||
|
*
|
||
|
* @throws sfStopException
|
||
|
*
|
||
|
* @see redirect
|
||
|
*/
|
||
|
public function redirectUnless($condition, $url)
|
||
|
{
|
||
|
if (!$condition)
|
||
|
{
|
||
|
$this->redirect($url);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Appends the given text to the response content and bypasses the built-in view system.
|
||
|
*
|
||
|
* This method must be called as with a return:
|
||
|
*
|
||
|
* <code>return $this->renderText('some text')</code>
|
||
|
*
|
||
|
* @param string Text to append to the response
|
||
|
*
|
||
|
* @return sfView::NONE
|
||
|
*/
|
||
|
public function renderText($text)
|
||
|
{
|
||
|
$this->getResponse()->setContent($this->getResponse()->getContent().$text);
|
||
|
|
||
|
return sfView::NONE;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retrieves the default view to be executed when a given request is not served by this action.
|
||
|
*
|
||
|
* @return string A string containing the view name associated with this action
|
||
|
*/
|
||
|
public function getDefaultView()
|
||
|
{
|
||
|
return sfView::INPUT;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retrieves the request methods on which this action will process validation and execution.
|
||
|
*
|
||
|
* @return int One of the following values:
|
||
|
*
|
||
|
* - sfRequest::GET
|
||
|
* - sfRequest::POST
|
||
|
* - sfRequest::PUT
|
||
|
* - sfRequest::DELETE
|
||
|
* - sfRequest::HEAD
|
||
|
* - sfRequest::NONE
|
||
|
*
|
||
|
* @see sfRequest
|
||
|
*/
|
||
|
public function getRequestMethods()
|
||
|
{
|
||
|
return sfRequest::GET
|
||
|
| sfRequest::POST
|
||
|
| sfRequest::PUT
|
||
|
| sfRequest::DELETE
|
||
|
| sfRequest::HEAD
|
||
|
| sfRequest::NONE;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Executes any post-validation error application logic.
|
||
|
*
|
||
|
* @return string A string containing the view name associated with this action
|
||
|
*/
|
||
|
public function handleError()
|
||
|
{
|
||
|
return sfView::ERROR;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Validates manually files and parameters.
|
||
|
*
|
||
|
* @return bool true, if validation completes successfully, otherwise false.
|
||
|
*/
|
||
|
public function validate()
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the security configuration for this module.
|
||
|
*
|
||
|
* @return string Current security configuration as an array
|
||
|
*/
|
||
|
public function getSecurityConfiguration()
|
||
|
{
|
||
|
return $this->security;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Overrides the current security configuration for this module.
|
||
|
*
|
||
|
* @param array The new security configuration
|
||
|
*/
|
||
|
public function setSecurityConfiguration($security)
|
||
|
{
|
||
|
$this->security = $security;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Indicates that this action requires security.
|
||
|
*
|
||
|
* @return bool true, if this action requires security, otherwise false.
|
||
|
*/
|
||
|
public function isSecure()
|
||
|
{
|
||
|
$actionName = strtolower($this->getActionName());
|
||
|
|
||
|
if (isset($this->security[$actionName]['is_secure']))
|
||
|
{
|
||
|
return $this->security[$actionName]['is_secure'];
|
||
|
}
|
||
|
|
||
|
if (isset($this->security['all']['is_secure']))
|
||
|
{
|
||
|
return $this->security['all']['is_secure'];
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets credentials the user must have to access this action.
|
||
|
*
|
||
|
* @return mixed An array or a string describing the credentials the user must have to access this action
|
||
|
*/
|
||
|
public function getCredential()
|
||
|
{
|
||
|
$actionName = strtolower($this->getActionName());
|
||
|
|
||
|
if (isset($this->security[$actionName]['credentials']))
|
||
|
{
|
||
|
$credentials = $this->security[$actionName]['credentials'];
|
||
|
}
|
||
|
else if (isset($this->security['all']['credentials']))
|
||
|
{
|
||
|
$credentials = $this->security['all']['credentials'];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$credentials = null;
|
||
|
}
|
||
|
|
||
|
return $credentials;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets an alternate template for this sfAction.
|
||
|
*
|
||
|
* See 'Naming Conventions' in the 'Symfony View' documentation.
|
||
|
*
|
||
|
* @param string Template name
|
||
|
*/
|
||
|
public function setTemplate($name)
|
||
|
{
|
||
|
if (sfConfig::get('sf_logging_enabled'))
|
||
|
{
|
||
|
$this->getContext()->getLogger()->info('{sfAction} change template to "'.$name.'"');
|
||
|
}
|
||
|
|
||
|
$this->getResponse()->setParameter($this->getModuleName().'_'.$this->getActionName().'_template', $name, 'symfony/action/view');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the name of the alternate template for this sfAction.
|
||
|
*
|
||
|
* WARNING: It only returns the template you set with the setTemplate() method,
|
||
|
* and does not return the template that you configured in your view.yml.
|
||
|
*
|
||
|
* See 'Naming Conventions' in the 'Symfony View' documentation.
|
||
|
*
|
||
|
* @return string Template name. Returns null if no template has been set within the action
|
||
|
*/
|
||
|
public function getTemplate()
|
||
|
{
|
||
|
return $this->getResponse()->getParameter($this->getModuleName().'_'.$this->getActionName().'_template', null, 'symfony/action/view');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets an alternate layout for this sfAction.
|
||
|
*
|
||
|
* To de-activate the layout, set the layout name to false.
|
||
|
*
|
||
|
* To revert the layout to the one configured in the view.yml, set the template name to null.
|
||
|
*
|
||
|
* @param mixed Layout name or false to de-activate the layout
|
||
|
*/
|
||
|
public function setLayout($name)
|
||
|
{
|
||
|
if (sfConfig::get('sf_logging_enabled'))
|
||
|
{
|
||
|
$this->getContext()->getLogger()->info('{sfAction} change layout to "'.$name.'"');
|
||
|
}
|
||
|
|
||
|
$this->getResponse()->setParameter($this->getModuleName().'_'.$this->getActionName().'_layout', $name, 'symfony/action/view');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the name of the alternate layout for this sfAction.
|
||
|
*
|
||
|
* WARNING: It only returns the layout you set with the setLayout() method,
|
||
|
* and does not return the layout that you configured in your view.yml.
|
||
|
*
|
||
|
* @return mixed Layout name. Returns null if no layout has been set within the action
|
||
|
*/
|
||
|
public function getLayout()
|
||
|
{
|
||
|
return $this->getResponse()->getParameter($this->getModuleName().'_'.$this->getActionName().'_layout', null, 'symfony/action/view');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Changes the default view class used for rendering the template associated with the current action.
|
||
|
*
|
||
|
* @param string View class name
|
||
|
*/
|
||
|
public function setViewClass($class)
|
||
|
{
|
||
|
sfConfig::set('mod_'.strtolower($this->getModuleName()).'_view_class', $class);
|
||
|
}
|
||
|
}
|