You are here

function xbbcode_list_render_recursive in Extensible BBCode 6

Same name and namespace in other branches
  1. 5 xbbcode_list/xbbcode_list.module \xbbcode_list_render_recursive()
1 call to xbbcode_list_render_recursive()
xbbcode_list_render in xbbcode_list/xbbcode_list.module

File

xbbcode_list/xbbcode_list.module, line 95

Code

function xbbcode_list_render_recursive($tag, $classes, $items) {

  // Shift one class off the queue.
  $class = array_shift($classes);

  // If the levels run deeper than available classes, continue using the last one.
  if (!$classes) {
    $classes = array(
      $class,
    );
  }

  // Generate an ol or ul element with this class.
  $out = '<' . $tag . ' class="' . $class . '">';

  // The parent was added by the preceding level of recursion. Root-level parent is dumped.
  unset($items['#parent']);
  foreach ($items as $item) {
    if (is_array($item)) {

      // Render each item's sublevels, if they exist.
      $item = $item['#parent'] . xbbcode_list_render_recursive($tag, $classes, $item);
    }

    // Print the item.
    $out .= '<li>' . $item . '</li>';
  }
  $out .= '</' . $tag . '>';
  return $out;
}