public function testGetIterator() { // Remove the following lines when you implement this test. $it = $this->object->getIterator(); $this->assertTrue($it instanceof \Iterator); $i = 0; $assert = false; foreach ($this->object as $val) { $assert = true; $this->assertTrue($val->toNative() == $i); $i++; } $this->assertTrue($assert); $it->next(); $this->assertTrue($it->current()->toNative() === 1); $it->next(); $it->next(); $it->next(); $it->remove(); }
/** * @return array */ public function getTags() { if ($blog = $this->Blog()) { $escapedID = Convert::raw2sql($blog->ID); $sql = 'SELECT DISTINCT "BlogTag"."URLSegment","BlogTag"."Title",Count("BlogTagID") AS "TagCount" from "BlogPost_Tags" INNER JOIN "BlogPost" ON "BlogPost"."ID" = "BlogPost_Tags"."BlogPostID" INNER JOIN "BlogTag" ON "BlogTag"."ID" = "BlogPost_Tags"."BlogTagID" WHERE "BlogID" = ' . $escapedID . ' GROUP By "BlogTag"."URLSegment","BlogTag"."Title" ORDER BY "Title"'; $records = DB::query($sql); $bloglink = $blog->Link(); $maxTagCount = 0; // create DataObjects that can be used to render the tag cloud $tags = new ArrayList(); foreach ($records as $record) { $tag = new DataObject(); $tag->TagName = $record['Title']; $link = $bloglink . 'tag/' . $record['URLSegment']; $tag->Link = $link; if ($record['TagCount'] > $maxTagCount) { $maxTagCount = $record['TagCount']; } $tag->TagCount = $record['TagCount']; $tags->push($tag); } // normalize the tag counts from 1 to 10 if ($maxTagCount) { $tagfactor = 10 / $maxTagCount; foreach ($tags->getIterator() as $tag) { $normalized = round($tagfactor * $tag->TagCount); $tag->NormalizedTag = $normalized; } } return $tags; } return array(); }