Skip to content
Snippets Groups Projects
Commit 62c64260 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Added config wildcards

parent 62a6d09e
Branches
No related merge requests found
......@@ -74,7 +74,12 @@ class Restful_Model {
return new stdClass();
$response = new stdClass();
foreach($this->_configuration->getFields() as $field)
$fields = $this->_configuration->getFields();
if (isset($fields[1]) && '*' == $fields[1])
$fields = array_keys($model->getRawAttributes());
foreach($fields as $field)
$response->$field = $model->$field;
return $response;
}
......
......@@ -37,11 +37,18 @@ class Restful_Model_Configuration {
protected $_fields = ['id'];
public static function newFor($model) {
if (!isset(self::$_loaded_instances[$model])) {
self::$_loaded_instances[$model] = new self(
$model,
self::$_config->models->get($model, null));
if (isset(self::$_loaded_instances[$model]))
return self::$_loaded_instances[$model];
if (null !== self::$_config->models->get($model, null)) {
self::$_loaded_instances[$model] = new self(
$model, self::$_config->models->get($model));
return self::$_loaded_instances[$model];
}
self::$_loaded_instances[$model] = new self(
$model, self::$_config->models->get('*', null));
return self::$_loaded_instances[$model];
}
......@@ -79,10 +86,7 @@ class Restful_Model_Configuration {
if (!$conf)
return;
$caps = explode(';', $conf->get('caps', ''));
foreach($caps as $cap)
if (isset($this->_caps[$cap]))
$this->_caps[$cap] = true;
$this->_loadCaps($conf);
$fields = explode(';', $conf->get('fields', ''));
foreach($fields as $field)
......@@ -91,6 +95,21 @@ class Restful_Model_Configuration {
}
protected function _loadCaps($conf) {
$caps = $conf->get('caps', '');
if ('*' == $caps) {
foreach($this->_caps as &$cap)
$cap = true;
return;
}
$caps = explode(';', $caps);
foreach($caps as $cap)
if (isset($this->_caps[$cap]))
$this->_caps[$cap] = true;
}
public function getFields() {
return $this->_fields;
}
......
......@@ -94,6 +94,35 @@ class IndexControllerNotInCatalogIndexTest extends RestfulControllerTestCase {
}
class IndexControllerNotInCatalogWithWildCardsIndexTest extends RestfulControllerTestCase {
public function setUp() {
parent::setUp();
$this->fixture('Model_Testing', ['id' => 1, 'model_id' => 24]);
$this->fixture('Model_Testing', ['id' => 2, 'model_id' => 28]);
Restful_Model_Configuration::setConfig(new Zend_Config(['models' => ['*' => ['caps' => '*', 'fields' => '*']]]));
$this->dispatch('/Model_Testing', true);
$this->results = json_decode($this->_response->getBody());
}
/** @test */
public function shouldReturn2Results() {
$this->assertEquals(2, count($this->results));
}
/** @test */
public function firstResultModelIdShouldBePresent() {
$this->assertEquals(24, $this->results[0]->model_id);
}
}
class IndexControllerInCatalogIndexTest extends RestfulControllerTestCase {
public function setUp() {
parent::setUp();
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment