Merge remote-tracking branch 'cyberalien/feature/append_var' into develop

* cyberalien/feature/append_var:
  [feature/append_var] Adding test case
  [feature/append_var] Adding append_var template class function
This commit is contained in:
Oleg Pudeyev 2012-03-07 18:20:49 -05:00
commit 65e711cbb0
3 changed files with 70 additions and 2 deletions

View file

@ -53,7 +53,9 @@ class phpbb_template_context
} }
/** /**
* Assign a single variable to a single key * Assign a single scalar value to a single key.
*
* Value can be a string, an integer or a boolean.
* *
* @param string $varname Variable name * @param string $varname Variable name
* @param string $varval Value to assign to variable * @param string $varval Value to assign to variable
@ -65,6 +67,21 @@ class phpbb_template_context
return true; return true;
} }
/**
* Append text to the string value stored in a key.
*
* Text is appended using the string concatenation operator (.).
*
* @param string $varname Variable name
* @param string $varval Value to append to variable
*/
public function append_var($varname, $varval)
{
$this->rootref[$varname] = (isset($this->rootref[$varname]) ? $this->rootref[$varname] : '') . $varval;
return true;
}
/** /**
* Returns a reference to template data array. * Returns a reference to template data array.
* *

View file

@ -378,7 +378,9 @@ class phpbb_template
} }
/** /**
* Assign a single variable to a single key * Assign a single scalar value to a single key.
*
* Value can be a string, an integer or a boolean.
* *
* @param string $varname Variable name * @param string $varname Variable name
* @param string $varval Value to assign to variable * @param string $varval Value to assign to variable
@ -388,6 +390,19 @@ class phpbb_template
$this->context->assign_var($varname, $varval); $this->context->assign_var($varname, $varval);
} }
/**
* Append text to the string value stored in a key.
*
* Text is appended using the string concatenation operator (.).
*
* @param string $varname Variable name
* @param string $varval Value to append to variable
*/
public function append_var($varname, $varval)
{
$this->context->append_var($varname, $varval);
}
// Docstring is copied from phpbb_template_context method with the same name. // Docstring is copied from phpbb_template_context method with the same name.
/** /**
* Assign key variable pairs from an array to a specified block * Assign key variable pairs from an array to a specified block

View file

@ -347,6 +347,42 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
$this->assertEquals($expected, $this->display('container'), "Testing assign_display($file)"); $this->assertEquals($expected, $this->display('container'), "Testing assign_display($file)");
} }
public function test_append_var_without_assign_var()
{
$this->template->set_filenames(array(
'append_var' => 'variable.html'
));
$items = array('This ', 'is ', 'a ', 'test');
$expecting = implode('', $items);
foreach ($items as $word)
{
$this->template->append_var('VARIABLE', $word);
}
$this->assertEquals($expecting, $this->display('append_var'));
}
public function test_append_var_with_assign_var()
{
$this->template->set_filenames(array(
'append_var' => 'variable.html'
));
$start = 'This ';
$items = array('is ', 'a ', 'test');
$expecting = $start . implode('', $items);
$this->template->assign_var('VARIABLE', $start);
foreach ($items as $word)
{
$this->template->append_var('VARIABLE', $word);
}
$this->assertEquals($expecting, $this->display('append_var'));
}
public function test_php() public function test_php()
{ {
$this->setup_engine(array('tpl_allow_php' => true)); $this->setup_engine(array('tpl_allow_php' => true));