<?php 
 
 
namespace Domain; 
 
 
use Infrastructure\Repository\PageRepository; 
 
class ImgCountReport implements Report 
{ 
    /** 
     * @var PageRepository 
     */ 
    protected $repository; 
 
    /** 
     * @var string|null 
     */ 
    protected $html; 
 
    public function __construct(PageRepository $repository) 
    { 
        $this->repository = $repository; 
        $repository->order( 
            static function (Page $a, Page $b) { 
                if ($a->getImgCount() === $b->getImgCount()) { 
                    return 0; 
                } 
                return ($a->getImgCount() > $b->getImgCount()) ? -1 : 1; 
            } 
        ); 
    } 
 
    /** 
     * Get default report filename 
     * 
     * @return string 
     */ 
    public function getDefaultFilename(): string 
    { 
        return 'report_' . date('d.m.Y') . '.html'; 
    } 
 
    public function getContent(): string 
    { 
        if ($this->html === null) { 
            $strings = ''; 
            /** @var Page $page */ 
            foreach ($this->repository->getPagesIterator() as $page) { 
                $strings .= "<tr>\n\t<td>{$page->getUrl()}</td>\n\t<td>{$page->getImgCount()}</td>\n\t<td>{$page->getProcessingTime()}</td>\n</tr>\n"; 
            } 
 
            $this->html = 
                "<table>\n<tr>\n\t<th>URL</th>\n\t<th>number of tags <img></th>\n\t<th>processing time, sec.</th>\n</tr>\n" . 
                $strings . "</table>\n"; 
        } 
 
        return $this->html; 
    } 
} 
 
 |