Redaxscript\Modules\Sitemap\Sitemap::render PHP Method

render() public static method

render
Since: 2.2.0
public static render ( ) : string
return string
    public static function render()
    {
        $output = null;
        /* html elements */
        $titleElement = new Html\Element();
        $titleElement->init('h3', ['class' => self::$_configArray['className']['title']]);
        $linkElement = new Html\Element();
        $linkElement->init('a');
        $listElement = new Html\Element();
        $listElement->init('ul', ['class' => self::$_configArray['className']['list']]);
        /* query articles */
        $articles = Db::forTablePrefix('articles')->where('status', 1)->whereLanguageIs(Registry::get('language'))->orderByDesc('category')->findMany();
        /* process articles */
        if (!$articles) {
            $error = Language::get('article_no') . Language::get('point');
        } else {
            $accessValidator = new Validator\Access();
            $accessDeny = 0;
            $lastCategory = 0;
            foreach ($articles as $value) {
                if ($accessValidator->validate($value->access, Registry::get('myGroups')) === Validator\ValidatorInterface::PASSED) {
                    $currentCategory = $value->category;
                    /* collect output */
                    if ($lastCategory != $currentCategory) {
                        $output .= $titleElement->text($currentCategory < 1 ? Language::get('uncategorized') : Db::forTablePrefix('categories')->whereIdIs($currentCategory)->findOne()->title);
                    }
                    $lastCategory = $currentCategory;
                    /* collect item output */
                    $outputItem = '<li>';
                    $outputItem .= $linkElement->attr(['href' => Registry::get('parameterRoute') . build_route('articles', $value->id), 'title' => $value->description ? $value->description : $value->title])->text($value->title);
                    $outputItem .= '</li>';
                    /* collect list output */
                    $output .= $listElement->html($outputItem);
                } else {
                    $accessDeny++;
                }
            }
            /* handle access */
            if (count($articles) === $accessDeny) {
                $error = Language::get('access_no') . Language::get('point');
            }
        }
        /* handle error */
        if ($error) {
            $output = $listElement->html('<li>' . $error . '</li>');
        }
        return $output;
    }
Sitemap