Skip to content
Snippets Groups Projects
Commit d9e9c1bb authored by Andreas Gohr's avatar Andreas Gohr
Browse files

extract method for Input class

makes it easier to access our do parameters
parent 80a47290
No related branches found
No related tags found
No related merge requests found
......@@ -12,7 +12,8 @@ class input_test extends DokuWikiTest {
'zero' => '0',
'one' => '1',
'empty' => '',
'emptya' => array()
'emptya' => array(),
'do' => array('save' => 'Speichern'),
);
public function test_str() {
......@@ -213,4 +214,20 @@ class input_test extends DokuWikiTest {
$this->assertEquals('bla',$test);
}
public function test_extract(){
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$this->assertEquals('save', $INPUT->extract('do')->str('do'));
$this->assertEquals('', $INPUT->extract('emptya')->str('emptya'));
$this->assertEquals('foo', $INPUT->extract('string')->str('string'));
$this->assertEquals('foo', $INPUT->extract('array')->str('array'));
$this->assertEquals('save', $INPUT->post->extract('do')->str('do'));
$this->assertEquals('', $INPUT->post->extract('emptya')->str('emptya'));
$this->assertEquals('foo', $INPUT->post->extract('string')->str('string'));
$this->assertEquals('foo', $INPUT->post->extract('array')->str('array'));
}
}
......@@ -175,6 +175,40 @@ class Input {
return (array) $this->access[$name];
}
/**
* Create a simple key from an array key
*
* This is useful to access keys where the information is given as an array key or as a single array value.
* For example when the information was submitted as the name of a submit button.
*
* This function directly changes the access array.
*
* Eg. $_REQUEST['do']['save']='Speichern' becomes $_REQUEST['do'] = 'save'
*
* This function returns the $INPUT object itself for easy chaining
*
* @param $name
* @return Input
*/
public function extract($name){
if(!isset($this->access[$name])) return $this;
if(!is_array($this->access[$name])) return $this;
$keys = array_keys($this->access[$name]);
if(!$keys){
// this was an empty array
$this->remove($name);
return $this;
}
// get the first key
$value = array_shift($keys);
if($value === 0){
// we had a numeric array, assume the value is not in the key
$value = array_shift($this->access[$name]);
}
$this->set($name, $value);
return $this;
}
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment