FEATURE Added MultipleOf and Modulus methods to ViewableData - useful for templating work (from r94063)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@95584 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Sean Harvey 2009-12-16 05:35:32 +00:00
parent 737701007a
commit d6e9931eb4
2 changed files with 39 additions and 1 deletions

View File

@ -621,6 +621,22 @@ class ViewableData extends Object implements IteratorAggregate {
return $this->iteratorTotalItems;
}
/**
* Returns the modulus of the numerical position of the item in the data set.
* The count starts from $startIndex, which defaults to 1.
* @param int $Mod The number to perform Mod operation to.
* @param int $startIndex Number to start count from.
* @return int
*/
public function Modulus($mod, $startIndex = 1) {
return ($this->iteratorPos + $startIndex) % $mod;
}
public function MultipleOf($factor, $offset = 1) {
return ($this->Modulus($factor, $offset) == 0);
}
// UTILITY METHODS -------------------------------------------------------------------------------------------------
/**

View File

@ -70,6 +70,28 @@ class DataObjectSetTest extends SapphireTest {
$this->assertFalse($four->Odd());
}
public function testMultipleOf() {
$comments = DataObject::get('PageComment', '', "\"ID\" ASC");
$commArr = $comments->toArray();
$multiplesOf3 = 0;
foreach($comments as $comment) {
if($comment->MultipleOf(3)) {
$comment->IsMultipleOf3 = true;
$multiplesOf3++;
} else {
$comment->IsMultipleOf3 = false;
}
}
$this->assertEquals(2, $multiplesOf3);
$this->assertFalse($commArr[0]->IsMultipleOf3);
$this->assertFalse($commArr[1]->IsMultipleOf3);
$this->assertTrue($commArr[2]->IsMultipleOf3);
$this->assertTrue($commArr[5]->IsMultipleOf3);
}
/**
* Test {@link DataObjectSet->Count()}
*/