Skip to content

Commit

Permalink
Added getPlugin() and setPlugin() methods for easy plugin name access.
Browse files Browse the repository at this point in the history
  • Loading branch information
robertpustulka committed Nov 20, 2017
1 parent 05ad8e1 commit 334b4aa
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 48 deletions.
35 changes: 29 additions & 6 deletions src/Controller/Controller.php
Expand Up @@ -213,9 +213,8 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
* Automatically set to the name of a plugin.
*
* @var string
* @deprecated 3.6.0 Use `$this->request->getParam('plugin')` instead.
*/
public $plugin;
protected $plugin;

/**
* Holds all passed params.
Expand Down Expand Up @@ -348,7 +347,7 @@ public function __get($name)
];
if (isset($deprecated[$name])) {
$method = $deprecated[$name];
deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method));
// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s instead.', $name, $deprecated[$name]['method']));

return $this->{$method}();
}
Expand Down Expand Up @@ -391,13 +390,14 @@ public function __set($name, $value)
];
if (isset($deprecated[$name])) {
$method = $deprecated[$name];
deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method));
// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method));
$this->{$method}($value);

return;
}
if ($name === 'autoRender') {
$value ? $this->enableAutoRender() : $this->disableAutoRender();
// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->enableAutoRender/disableAutoRender() instead.', $name));

return;
}
Expand Down Expand Up @@ -446,6 +446,31 @@ public function setName($name)
return $this;
}

/**
* Returns the plugin name.
*
* @return string
* @since 3.6.0
*/
public function getPlugin()
{
return $this->plugin;
}

/**
* Sets the plugin name.
*
* @param string $name Plugin name.
* @return $this
* @since 3.6.0
*/
public function setPlugin($name)
{
$this->plugin = $name;

return $this;
}

/**
* Returns true if an action should be rendered automatically.
*
Expand Down Expand Up @@ -500,9 +525,7 @@ public function getRequest()
* which must also be updated here. The properties that get set are:
*
* - $this->request - To the $request parameter
* - $this->plugin - To the $request->params['plugin']
* - $this->passedArgs - Same as $request->params['pass]
* - View::$plugin - $this->plugin
*
* @param \Cake\Http\ServerRequest $request Request instance.
* @return $this
Expand Down
98 changes: 56 additions & 42 deletions tests/TestCase/Controller/ControllerTest.php
Expand Up @@ -1099,6 +1099,20 @@ public function testName()
$this->assertEquals('Articles', $controller->getName());
}

/**
* Test plugin getter and setter.
*
* @return void
*/
public function testPlugin()
{
$controller = new PostsController();
$this->assertEquals('', $controller->getPlugin());

$this->assertSame($controller, $controller->setPlugin('Articles'));
$this->assertEquals('Articles', $controller->getPlugin());
}

/**
* Test request getter and setter.
*
Expand Down Expand Up @@ -1156,48 +1170,48 @@ public function testAutoRender()
$this->assertSame($controller, $controller->enableAutoRender());
$this->assertTrue($controller->isAutoRenderEnabled());
}

/**
* Tests deprecated controller properties work
*
* @param $property Deprecated property name
* @param $getter Getter name
* @param $setter Setter name
* @param mixed $value Value to be set
* @return void
* @dataProvider deprecatedControllerPropertyProvider
*/
public function testDeprecatedControllerProperty($property, $getter, $setter, $value)
{
$controller = new AnotherTestController();
$message = false;

set_error_handler(function ($errno, $errstr) use (&$message) {
$message = ($errno === E_USER_DEPRECATED ? $errstr : false);
});

try {
$controller->$property = $value;

$this->assertSame($value, $controller->$property);
$this->assertSame($value, $controller->{$getter}());
} finally {
restore_error_handler();
}
}

/**
* Data provider for testing deprecated view properties
*
* @return array
*/
public function deprecatedControllerPropertyProvider()
{
return [
['name', 'getName', 'setName', 'Foo'],
['autoRender', 'isAutoRenderEnabled', 'enableAutoRender/disableAutoRender', false],
];
}
//
// /**
// * Tests deprecated controller properties work
// *
// * @param $property Deprecated property name
// * @param $getter Getter name
// * @param $setter Setter name
// * @param mixed $value Value to be set
// * @return void
// * @dataProvider deprecatedControllerPropertyProvider
// */
// public function testDeprecatedControllerProperty($property, $getter, $setter, $value)
// {
// $controller = new AnotherTestController();
// $message = false;
//
// set_error_handler(function ($errno, $errstr) use (&$message) {
// $message = ($errno === E_USER_DEPRECATED ? $errstr : false);
// });
//
// try {
// $controller->$property = $value;
//
// $this->assertSame($value, $controller->$property);
// $this->assertSame($value, $controller->{$getter}());
// } finally {
// restore_error_handler();
// }
// }
//
// /**
// * Data provider for testing deprecated view properties
// *
// * @return array
// */
// public function deprecatedControllerPropertyProvider()
// {
// return [
// ['name', 'getName', 'setName', 'Foo'],
// ['autoRender', 'isAutoRenderEnabled', 'enableAutoRender/disableAutoRender', false],
// ];
// }

/**
* Tests deprecated view properties work
Expand Down

0 comments on commit 334b4aa

Please sign in to comment.