<?php

/**
 * This file contains package_quiqqer_bricks_ajax_brick_infinite_row
 */

use QUI\Bricks\Controls\Children\Infinite;

/**
 * Return the children of the infinite brick row
 *
 * @param string|integer $brickId - Brick-ID
 * @param string|integer $row - Row number
 */
QUI::$Ajax->registerFunction(
    'package_quiqqer_bricks_ajax_brick_infinite_row',
    function ($brickId, $brickUID, $row) {
        $BrickManager = QUI\Bricks\Manager::init();

        if (isset($brickUID) && !empty($brickUID)) {
            $Brick = $BrickManager->getBrickById($brickUID);
        } else {
            $Brick = $BrickManager->getBrickById($brickId);
        }

        $settings = array_merge(
            $Brick->getAttributes(),
            $Brick->getSettings()
        );

        $Engine   = QUI::getTemplateManager()->getEngine();
        $Infinite = new Infinite($settings);

        // bad fix for getting the right attributes - like gridClass
        $Infinite->getBody();


        // generate rows
        $loadingRows = 1;

        if (isset($settings['loadingrows'])
            && !empty($settings['loadingrows'])
            && (int)$settings['loadingrows']
        ) {
            $loadingRows = (int)$settings['loadingrows'];
        }

        $result = '';

        for ($i = 0; $i < $loadingRows; $i++) {
            $Engine->assign(array(
                'children'  => $Infinite->getRow((int)$row),
                'row'       => (int)$row,
                'this'      => $Infinite,
                'gridClass' => $Infinite->getAttribute('gridClass')
            ));

            $result .= $Engine->fetch($Infinite->getRowTemplate());
            $row++;
        }

        return $result;
    },
    array('brickId', 'brickUID', 'row'),
    false
);