function getOrderedBookContents() { $book_contents = \Pressbooks\Book::getBookContents(); $ordered = array(); foreach ($book_contents as $type => $struct) { if (strpos($type, '__') === 0) { continue; // Skip __magic keys } switch ($type) { case 'part': foreach ($struct as $part) { $part_content = trim(get_post_meta($part['ID'], 'pb_part_content', true)); if ($part_content || $this->atLeastOneExport($part['chapters'])) { if (!empty($part['post_content'])) { $part['mpdf_level'] = 1; $part['post_content'] .= $part_content; } else { $part['post_content'] = $part_content; $part['mpdf_level'] = 0; } $ordered[] = $part; foreach ($part['chapters'] as $chapter) { if (!$chapter['export']) { continue; } $chapter['mpdf_level'] = $part['mpdf_level'] + 1; $ordered[] = $chapter; if (\Pressbooks\Modules\Export\Export::isParsingSubsections() == true) { $sections = \Pressbooks\Book::getSubsections($chapter['ID']); if ($sections) { foreach ($sections as $section) { $section['mpdf_level'] = $part['mpdf_level'] + 2; $ordered[] = $section; } } } } } } break; default: foreach ($struct as $item) { if (!$item['export']) { continue; } $item['mpdf_level'] = 1; $ordered[] = $item; if (\Pressbooks\Modules\Export\Export::isParsingSubsections() == true) { $sections = \Pressbooks\Book::getSubsections($item['ID']); if ($sections) { foreach ($sections as $section) { $section['mpdf_level'] = 2; $ordered[] = $section; } } } } break; } } return $ordered; }