Exemplo n.º 1
0
 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();
    }