protected function buildEnvironmentRows(array $tree, $indent = true, $indicateCurrent = true, $indentAmount = 0)
    {
        $rows = [];
        foreach ($tree as $environment) {
            $row = [];

            // Format the environment ID.
            $id = $environment->id;
            if ($indent) {
                $id = str_repeat('   ', $indentAmount) . $id;
            }

            // Add an indicator for the current environment.
            $cellOptions = [];
            if ($indicateCurrent && $this->currentEnvironment && $environment->id == $this->currentEnvironment->id) {
                $id .= '<info>*</info>';

                // Prevent table cell wrapping so formatting is not broken.
                $cellOptions['wrap'] = false;
            }

            $row[] = new AdaptiveTableCell($id, $cellOptions);

            if ($branch = array_search($environment->id, $this->mapping)) {
                $row[] = sprintf('%s (%s)', $environment->title, $branch);
            } else {
                $row[] = $environment->title;
            }

            $row[] = $this->formatEnvironmentStatus($environment->status);

            $row[] = $this->formatter->format($environment->created_at, 'created_at');
            $row[] = $this->formatter->format($environment->updated_at, 'updated_at');

            $rows[] = $row;
            if (isset($this->children[$environment->id])) {
                $childRows = $this->buildEnvironmentRows(
                    $this->children[$environment->id],
                    $indent,
                    $indicateCurrent,
                    $indentAmount + 1
                );
                $rows = array_merge($rows, $childRows);
            }
        }

        return $rows;
    }
protected function buildEnvironmentRows(array $tree, $indent = true, $indicateCurrent = true, $indentAmount = 0)
    {
        $rows = [];
        foreach ($tree as $environment) {
            $row = [];

            // Format the environment ID.
            $id = $environment->id;
            if ($indent) {
                $id = str_repeat('   ', $indentAmount) . $id;
            }

            // Add an indicator for the current environment.
            $cellOptions = [];
            if ($indicateCurrent && $this->currentEnvironment && $environment->id == $this->currentEnvironment->id) {
                $id .= '<info>*</info>';

                // Prevent table cell wrapping so formatting is not broken.
                $cellOptions['wrap'] = false;
            }

            $row[] = new AdaptiveTableCell($id, $cellOptions);

            if ($branch = array_search($environment->id, $this->mapping)) {
                $row[] = sprintf('%s (%s)', $environment->title, $branch);
            } else {
                $row[] = $environment->title;
            }

            $row[] = $this->formatEnvironmentStatus($environment->status);

            $row[] = $this->formatter->format($environment->created_at, 'created_at');
            $row[] = $this->formatter->format($environment->updated_at, 'updated_at');

            $rows[] = $row;
            if (isset($this->children[$environment->id])) {
                $childRows = $this->buildEnvironmentRows(
                    $this->children[$environment->id],
                    $indent,
                    $indicateCurrent,
                    $indentAmount + 1
                );
                $rows = array_merge($rows, $childRows);
            }
        }

        return $rows;
    }
protected function buildEnvironmentRows ( array $ tree , $ indent = true , $ indicateCurrent = true , $ indentAmount = 0 ) { $ rows = [ ] ; foreach ( $ tree as $ environment ) { $ row = [ ] ; // Format the environment ID. $ id = $ environment -> id ; if ( $ indent ) { $ id = str_repeat ( '   ' , $ indentAmount ) . $ id ; } // Add an indicator for the current environment. $ cellOptions = [ ] ; if ( $ indicateCurrent && $ this -> currentEnvironment && $ environment -> id == $ this -> currentEnvironment -> id ) { $ id .= '<info>*</info>' ; // Prevent table cell wrapping so formatting is not broken. $ cellOptions [ 'wrap' ] = false ; } $ row [ ] = new AdaptiveTableCell ( $ id , $ cellOptions ) ; if ( $ branch = array_search ( $ environment -> id , $ this -> mapping ) ) { $ row [ ] = sprintf ( '%s (%s)' , $ environment -> title , $ branch ) ; } else { $ row [ ] = $ environment -> title ; } $ row [ ] = $ this -> formatEnvironmentStatus ( $ environment -> status ) ; $ row [ ] = $ this -> formatter -> format ( $ environment -> created_at , 'created_at' ) ; $ row [ ] = $ this -> formatter -> format ( $ environment -> updated_at , 'updated_at' ) ; $ rows [ ] = $ row ; if ( isset ( $ this -> children [ $ environment -> id ] ) ) { $ childRows = $ this -> buildEnvironmentRows ( $ this -> children [ $ environment -> id ] , $ indent , $ indicateCurrent , $ indentAmount + 1 ) ; $ rows = array_merge ( $ rows , $ childRows ) ; } } return $ rows ; }
Recursively build rows of the environment table.

@param Environment[] $tree
@param bool $indent
@param int $indentAmount
@param bool $indicateCurrent

@return array
Recursively build rows of the environment table .