mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #485 from halkyon/deprecate_director_statics_for_controller
Deprecate director controller static functions
This commit is contained in:
commit
1ed5e3c9be
@ -164,7 +164,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Allow customisation of the access check by a extension
|
// Allow customisation of the access check by a extension
|
||||||
// Also all the canView() check to execute Director::redirect()
|
// Also all the canView() check to execute Controller::redirect()
|
||||||
if(!$this->canView() && !$this->response->isFinished()) {
|
if(!$this->canView() && !$this->response->isFinished()) {
|
||||||
// When access /admin/, we should try a redirect to another part of the admin rather than be locked out
|
// When access /admin/, we should try a redirect to another part of the admin rather than be locked out
|
||||||
$menu = $this->MainMenu();
|
$menu = $this->MainMenu();
|
||||||
@ -175,7 +175,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
|
|||||||
&& $candidate->MenuItem->controller
|
&& $candidate->MenuItem->controller
|
||||||
&& singleton($candidate->MenuItem->controller)->canView()
|
&& singleton($candidate->MenuItem->controller)->canView()
|
||||||
) {
|
) {
|
||||||
return Director::redirect($candidate->Link);
|
return $this->redirect($candidate->Link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Don't continue if there's already been a redirection request.
|
// Don't continue if there's already been a redirection request.
|
||||||
if(Director::redirected_to()) return;
|
if($this->redirectedTo()) return;
|
||||||
|
|
||||||
// Audit logging hook
|
// Audit logging hook
|
||||||
if(empty($_REQUEST['executeForm']) && !$this->request->isAjax()) $this->extend('accessedCMS');
|
if(empty($_REQUEST['executeForm']) && !$this->request->isAjax()) $this->extend('accessedCMS');
|
||||||
|
@ -434,8 +434,7 @@ class Controller extends RequestHandler implements TemplateGlobalProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Redirct to the given URL.
|
* Redirect to the given URL.
|
||||||
* It is generally recommended to call Director::redirect() rather than calling this function directly.
|
|
||||||
*/
|
*/
|
||||||
function redirect($url, $code=302) {
|
function redirect($url, $code=302) {
|
||||||
if(!$this->response) $this->response = new SS_HTTPResponse();
|
if(!$this->response) $this->response = new SS_HTTPResponse();
|
||||||
|
@ -397,33 +397,41 @@ class Director implements TemplateGlobalProvider {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Redirect to another page.
|
* Redirect to another page.
|
||||||
|
* @deprecated 2.5 Use Controller->redirect()
|
||||||
* - $url can be an absolute URL
|
* - $url can be an absolute URL
|
||||||
* - or it can be a URL relative to the "site base"
|
* - or it can be a URL relative to the "site base"
|
||||||
* - if it is just a word without an slashes, then it redirects to another action on the current controller.
|
* - if it is just a word without an slashes, then it redirects to another action on the current controller.
|
||||||
*/
|
*/
|
||||||
static function redirect($url, $code=302) {
|
static function redirect($url, $code=302) {
|
||||||
|
Deprecation::notice('2.5', 'Use Controller->redirect() instead.');
|
||||||
Controller::curr()->redirect($url, $code);
|
Controller::curr()->redirect($url, $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests whether a redirection has been requested.
|
* Tests whether a redirection has been requested.
|
||||||
|
* @deprecated 2.5 Use Controller->redirectedTo() instead
|
||||||
* @return string If redirect() has been called, it will return the URL redirected to. Otherwise, it will return null;
|
* @return string If redirect() has been called, it will return the URL redirected to. Otherwise, it will return null;
|
||||||
*/
|
*/
|
||||||
static function redirected_to() {
|
static function redirected_to() {
|
||||||
|
Deprecation::notice('2.5', 'Use Controller->redirectedTo() instead.');
|
||||||
return Controller::curr()->redirectedTo();
|
return Controller::curr()->redirectedTo();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the HTTP status code
|
* Sets the HTTP status code
|
||||||
|
* @deprecated 2.5 Use Controller->getResponse()->setStatusCode() instead
|
||||||
*/
|
*/
|
||||||
static function set_status_code($code) {
|
static function set_status_code($code) {
|
||||||
|
Deprecation::notice('2.5', 'Use Controller->getResponse()->setStatusCode() instead');
|
||||||
return Controller::curr()->getResponse()->setStatusCode($code);
|
return Controller::curr()->getResponse()->setStatusCode($code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current HTTP status code
|
* Returns the current HTTP status code
|
||||||
|
* @deprecated 2.5 Use Controller->getResponse()->getStatusCode() instead
|
||||||
*/
|
*/
|
||||||
static function get_status_code() {
|
static function get_status_code() {
|
||||||
|
Deprecation::notice('2.5', 'Use Controller->getResponse()->getStatusCode() instead');
|
||||||
return Controller::curr()->getResponse()->getStatusCode();
|
return Controller::curr()->getResponse()->getStatusCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,6 +180,6 @@ class DevelopmentAdmin extends Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function errors() {
|
function errors() {
|
||||||
Director::redirect("Debug_");
|
$this->redirect("Debug_");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,11 +175,12 @@ class FileIFrameField extends FileField {
|
|||||||
|| ($data['FileSource'] == 'existing' && (!isset($data['ExistingFile']) || !$data['ExistingFile']))
|
|| ($data['FileSource'] == 'existing' && (!isset($data['ExistingFile']) || !$data['ExistingFile']))
|
||||||
) {
|
) {
|
||||||
$form->sessionMessage(_t('FileIFrameField.NOSOURCE', 'Please select a source file to attach'), 'required');
|
$form->sessionMessage(_t('FileIFrameField.NOSOURCE', 'Please select a source file to attach'), 'required');
|
||||||
Director::redirectBack();
|
$form->getController()->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$desiredClass = $this->dataClass();
|
$desiredClass = $this->dataClass();
|
||||||
|
$controller = $this->form->getController();
|
||||||
|
|
||||||
// upload a new file
|
// upload a new file
|
||||||
if($data['FileSource'] == 'new') {
|
if($data['FileSource'] == 'new') {
|
||||||
@ -189,12 +190,12 @@ class FileIFrameField extends FileField {
|
|||||||
$this->upload->loadIntoFile($_FILES['Upload'], $fileObject, $this->folderName);
|
$this->upload->loadIntoFile($_FILES['Upload'], $fileObject, $this->folderName);
|
||||||
} catch (Exception $e){
|
} catch (Exception $e){
|
||||||
$form->sessionMessage(_t('FileIFrameField.DISALLOWEDFILETYPE', 'This filetype is not allowed to be uploaded'), 'bad');
|
$form->sessionMessage(_t('FileIFrameField.DISALLOWEDFILETYPE', 'This filetype is not allowed to be uploaded'), 'bad');
|
||||||
Director::redirectBack();
|
$controller->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->upload->isError()) {
|
if($this->upload->isError()) {
|
||||||
Director::redirectBack();
|
$controller->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +210,7 @@ class FileIFrameField extends FileField {
|
|||||||
|
|
||||||
// dont allow the user to attach a folder by default
|
// dont allow the user to attach a folder by default
|
||||||
if(!$fileObject || ($fileObject instanceof Folder && $desiredClass != 'Folder')) {
|
if(!$fileObject || ($fileObject instanceof Folder && $desiredClass != 'Folder')) {
|
||||||
Director::redirectBack();
|
$controller->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,7 +223,7 @@ class FileIFrameField extends FileField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->form->getRecord()->write();
|
$this->form->getRecord()->write();
|
||||||
Director::redirectBack();
|
$controller->redirectBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -260,7 +261,7 @@ class FileIFrameField extends FileField {
|
|||||||
$this->form->getRecord()->{$this->getName() . 'ID'} = 0;
|
$this->form->getRecord()->{$this->getName() . 'ID'} = 0;
|
||||||
$this->form->getRecord()->write();
|
$this->form->getRecord()->write();
|
||||||
|
|
||||||
Director::redirectBack();
|
$this->form->getController()->redirectBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,7 +277,7 @@ class Form extends RequestHandler {
|
|||||||
$this->controller->hasMethod($funcName)
|
$this->controller->hasMethod($funcName)
|
||||||
&& !$this->controller->checkAccessAction($funcName)
|
&& !$this->controller->checkAccessAction($funcName)
|
||||||
// If a button exists, allow it on the controller
|
// If a button exists, allow it on the controller
|
||||||
&& !$this->Actions()->fieldByName('action_' . $funcName)
|
&& !$this->actions->fieldByName('action_' . $funcName)
|
||||||
) {
|
) {
|
||||||
return $this->httpError(
|
return $this->httpError(
|
||||||
403,
|
403,
|
||||||
@ -291,7 +291,7 @@ class Form extends RequestHandler {
|
|||||||
) {
|
) {
|
||||||
return $this->httpError(
|
return $this->httpError(
|
||||||
403,
|
403,
|
||||||
sprintf('Action "%s" not allowed on form (Name: "%s")', $funcName, $this->Name())
|
sprintf('Action "%s" not allowed on form (Name: "%s")', $funcName, $this->name)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// TODO : Once we switch to a stricter policy regarding allowed_actions (meaning actions must be set explicitly in allowed_actions in order to run)
|
// TODO : Once we switch to a stricter policy regarding allowed_actions (meaning actions must be set explicitly in allowed_actions in order to run)
|
||||||
@ -888,19 +888,57 @@ class Form extends RequestHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this form's controller
|
* Returns this form's controller.
|
||||||
|
* This is used in the templates.
|
||||||
*/
|
*/
|
||||||
public function Controller() {
|
public function Controller() {
|
||||||
|
return $this->getController();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the controller.
|
||||||
|
* @return Controller
|
||||||
|
*/
|
||||||
|
public function getController() {
|
||||||
return $this->controller;
|
return $this->controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the controller.
|
||||||
|
* @param Controller $controller
|
||||||
|
* @return Form
|
||||||
|
*/
|
||||||
|
public function setController($controller) {
|
||||||
|
$this->controller = $controller;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function Name() {
|
public function Name() {
|
||||||
|
Deprecation::notice('3.0', 'Use getName() instead.');
|
||||||
|
return $this->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the form.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName() {
|
||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the name of the form.
|
||||||
|
* @param string $name
|
||||||
|
* @return Form
|
||||||
|
*/
|
||||||
|
public function setName($name) {
|
||||||
|
$this->name = $name;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an object where there is a method with the same name as each data field on the form.
|
* Returns an object where there is a method with the same name as each data field on the form.
|
||||||
* That method will return the field itself.
|
* That method will return the field itself.
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
* $file->loadUploaded($_FILES['FileTypeID']);
|
* $file->loadUploaded($_FILES['FileTypeID']);
|
||||||
*
|
*
|
||||||
* // Redirect to a page thanking people for registering
|
* // Redirect to a page thanking people for registering
|
||||||
* Director::redirect('thanks-for-your-submission/');
|
* $this->redirect('thanks-for-your-submission/');
|
||||||
* }
|
* }
|
||||||
* </code>
|
* </code>
|
||||||
*
|
*
|
||||||
|
@ -284,7 +284,7 @@ class GridFieldDetailForm_ItemRequest extends RequestHandler {
|
|||||||
$controller = Controller::curr();
|
$controller = Controller::curr();
|
||||||
$noActionURL = $controller->removeAction($_REQUEST['url']);
|
$noActionURL = $controller->removeAction($_REQUEST['url']);
|
||||||
$controller->getResponse()->removeHeader('Location'); //clear the existing redirect
|
$controller->getResponse()->removeHeader('Location'); //clear the existing redirect
|
||||||
return Director::redirect($noActionURL, 302);
|
return $controller->redirect($noActionURL, 302);
|
||||||
}
|
}
|
||||||
|
|
||||||
$actions = new FieldList();
|
$actions = new FieldList();
|
||||||
@ -406,7 +406,7 @@ class GridFieldDetailForm_ItemRequest extends RequestHandler {
|
|||||||
$controller = Controller::curr();
|
$controller = Controller::curr();
|
||||||
$noActionURL = $controller->removeAction($data['url']);
|
$noActionURL = $controller->removeAction($data['url']);
|
||||||
|
|
||||||
return Director::redirect($noActionURL, 302); //redirect back to admin section
|
return $controller->redirect($noActionURL, 302); //redirect back to admin section
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,7 +97,7 @@ class DatabaseAdmin extends Controller {
|
|||||||
echo "<p>Setting up the database; you will be returned to your site shortly....</p>";
|
echo "<p>Setting up the database; you will be returned to your site shortly....</p>";
|
||||||
$this->doBuild(true);
|
$this->doBuild(true);
|
||||||
echo "<p>Done!</p>";
|
echo "<p>Done!</p>";
|
||||||
Director::redirect($_GET['returnURL']);
|
$this->redirect($_GET['returnURL']);
|
||||||
} else {
|
} else {
|
||||||
$this->doBuild(isset($_REQUEST['quiet']) || isset($_REQUEST['from_installer']), !isset($_REQUEST['dont_populate']));
|
$this->doBuild(isset($_REQUEST['quiet']) || isset($_REQUEST['from_installer']), !isset($_REQUEST['dont_populate']));
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ class ChangePasswordForm extends Form {
|
|||||||
_t('Member.ERRORPASSWORDNOTMATCH', "Your current password does not match, please try again"),
|
_t('Member.ERRORPASSWORDNOTMATCH', "Your current password does not match, please try again"),
|
||||||
"bad"
|
"bad"
|
||||||
);
|
);
|
||||||
Director::redirectBack();
|
$this->controller->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ class ChangePasswordForm extends Form {
|
|||||||
// The user is not logged in and no valid auto login hash is available
|
// The user is not logged in and no valid auto login hash is available
|
||||||
if(!$member) {
|
if(!$member) {
|
||||||
Session::clear('AutoLoginHash');
|
Session::clear('AutoLoginHash');
|
||||||
Director::redirect('loginpage');
|
$this->controller->redirect('loginpage');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,7 +91,7 @@ class ChangePasswordForm extends Form {
|
|||||||
$this->sessionMessage(
|
$this->sessionMessage(
|
||||||
_t('Member.EMPTYNEWPASSWORD', "The new password can't be empty, please try again"),
|
_t('Member.EMPTYNEWPASSWORD', "The new password can't be empty, please try again"),
|
||||||
"bad");
|
"bad");
|
||||||
Director::redirectBack();
|
$this->controller->redirectBack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if($data['NewPassword1'] == $data['NewPassword2']) {
|
else if($data['NewPassword1'] == $data['NewPassword2']) {
|
||||||
@ -107,12 +107,12 @@ class ChangePasswordForm extends Form {
|
|||||||
// absolute redirection URLs may cause spoofing
|
// absolute redirection URLs may cause spoofing
|
||||||
&& Director::is_site_url($_REQUEST['BackURL'])
|
&& Director::is_site_url($_REQUEST['BackURL'])
|
||||||
) {
|
) {
|
||||||
Director::redirect($_REQUEST['BackURL']);
|
$this->controller->redirect($_REQUEST['BackURL']);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Redirect to default location - the login form saying "You are logged in as..."
|
// Redirect to default location - the login form saying "You are logged in as..."
|
||||||
$redirectURL = HTTP::setGetVar('BackURL', Director::absoluteBaseURL(), $this->controller->Link('login'));
|
$redirectURL = HTTP::setGetVar('BackURL', Director::absoluteBaseURL(), $this->controller->Link('login'));
|
||||||
Director::redirect($redirectURL);
|
$this->controller->redirect($redirectURL);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->clearMessage();
|
$this->clearMessage();
|
||||||
@ -124,7 +124,7 @@ class ChangePasswordForm extends Form {
|
|||||||
),
|
),
|
||||||
"bad"
|
"bad"
|
||||||
);
|
);
|
||||||
Director::redirectBack();
|
$this->controller->redirectBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -132,7 +132,7 @@ class ChangePasswordForm extends Form {
|
|||||||
$this->sessionMessage(
|
$this->sessionMessage(
|
||||||
_t('Member.ERRORNEWPASSWORD', "You have entered your new password differently, try again"),
|
_t('Member.ERRORNEWPASSWORD', "You have entered your new password differently, try again"),
|
||||||
"bad");
|
"bad");
|
||||||
Director::redirectBack();
|
$this->controller->redirectBack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,9 +230,9 @@ class Security extends Controller {
|
|||||||
|
|
||||||
// TODO AccessLogEntry needs an extension to handle permission denied errors
|
// TODO AccessLogEntry needs an extension to handle permission denied errors
|
||||||
// Audit logging hook
|
// Audit logging hook
|
||||||
if($controller) $controller->extend('permissionDenied', $member);
|
$controller->extend('permissionDenied', $member);
|
||||||
|
|
||||||
Director::redirect("Security/login?BackURL=" . urlencode($_SERVER['REQUEST_URI']));
|
$controller->redirect("Security/login?BackURL=" . urlencode($_SERVER['REQUEST_URI']));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -319,7 +319,7 @@ class Security extends Controller {
|
|||||||
// Event handler for pre-login, with an option to let it break you out of the login form
|
// Event handler for pre-login, with an option to let it break you out of the login form
|
||||||
$eventResults = $this->extend('onBeforeSecurityLogin');
|
$eventResults = $this->extend('onBeforeSecurityLogin');
|
||||||
// If there was a redirection, return
|
// If there was a redirection, return
|
||||||
if(Director::redirected_to()) return;
|
if($this->redirectedTo()) return;
|
||||||
// If there was an SS_HTTPResponse object returned, then return that
|
// If there was an SS_HTTPResponse object returned, then return that
|
||||||
else if($eventResults) {
|
else if($eventResults) {
|
||||||
foreach($eventResults as $result) {
|
foreach($eventResults as $result) {
|
||||||
|
Loading…
Reference in New Issue
Block a user