/**
 * @param $print_flag
 */
function calculate_page_content($print_flag)
{
    $specmanagement_database_api = new specmanagement_database_api();
    $specmanagement_print_api = new specmanagement_print_api();
    $specmanagement_editor_api = new specmanagement_editor_api();
    $version_id = $_POST['version_id'];
    $version_spec_bug_ids = $specmanagement_database_api->get_version_spec_bugs(version_get_field($version_id, 'version'));
    if (!is_null($version_spec_bug_ids)) {
        /** get bug and work package data */
        $plugin_version_obj = $specmanagement_database_api->get_plugin_version_row_by_version_id($version_id);
        $p_version_id = $plugin_version_obj[0];
        foreach ($version_spec_bug_ids as $version_spec_bug_id) {
            $p_source_row = $specmanagement_database_api->get_source_row($version_spec_bug_id);
            if (is_null($p_source_row[2])) {
                $specmanagement_database_api->update_source_row($version_spec_bug_id, $p_version_id, '');
            }
        }
        $work_packages = $specmanagement_database_api->get_document_spec_workpackages($p_version_id);
        asort($work_packages);
        $no_work_package_bug_ids = $specmanagement_database_api->get_workpackage_spec_bugs($p_version_id, '');
        /** get type options */
        $type_string = $specmanagement_database_api->get_type_string($specmanagement_database_api->get_type_by_version($version_id));
        $type_id = $specmanagement_database_api->get_type_id($type_string);
        $type_row = $specmanagement_database_api->get_type_row($type_id);
        $type_options = explode(';', $type_row[2]);
        /** generate and print page content */
        $specmanagement_editor_api->print_document_head($type_string, $version_id, $version_spec_bug_ids, $print_flag);
        if ($type_options[2] == '1') {
            $specmanagement_editor_api->print_directory($p_version_id, $work_packages, $no_work_package_bug_ids, $type_options[0], $print_flag);
        }
        $specmanagement_editor_api->print_editor_table_head($print_flag);
        $specmanagement_editor_api->generate_content($p_version_id, $work_packages, $no_work_package_bug_ids, $type_options[0], true, $print_flag);
        echo '</table>';
        if ($type_options[1] == '1') {
            $specmanagement_editor_api->print_expenses_overview($work_packages, $p_version_id, $print_flag, $no_work_package_bug_ids);
        }
    } else {
        echo '<br/>';
        $specmanagement_editor_api->print_editor_table_head($print_flag);
        echo '<tr><td class="center">';
        echo plugin_lang_get('editor_no_issues');
        echo '</td></tr>';
        $specmanagement_print_api->printTableFoot();
    }
}
 /**
  * Print table body from directory
  *
  * @param $p_version_id
  * @param $work_packages
  * @param $no_work_package_bug_ids
  * @param $option_show_duration
  * @param $detail_flag
  * @param $print_flag
  */
 public function generate_content($p_version_id, $work_packages, $no_work_package_bug_ids, $option_show_duration, $detail_flag, $print_flag)
 {
     $specmanagement_database_api = new specmanagement_database_api();
     $directory_depth = $this->calculate_directory_depth($work_packages);
     $chapter_counter_array = $this->prepare_chapter_counter($directory_depth);
     $last_chapter_depth = 0;
     $version_id = $_POST['version_id'];
     $version = version_get($version_id);
     $version_date = $version->date_order;
     /** Iterate through defined work packages */
     if (!is_null($work_packages)) {
         foreach ($work_packages as $work_package) {
             if (strlen($work_package) > 0) {
                 $work_package_spec_bug_ids = $specmanagement_database_api->get_workpackage_spec_bugs($p_version_id, $work_package);
                 $chapters = explode('/', $work_package);
                 $chapter_depth = count($chapters);
                 if ($chapter_depth == 1) {
                     $this->reset_chapter_counter($chapter_counter_array);
                 }
                 $chapter_prefix_data = $this->generate_chapter_prefix($chapter_counter_array, $chapter_depth, $last_chapter_depth);
                 $chapter_counter_array = $chapter_prefix_data[0];
                 $chapter_prefix = $chapter_prefix_data[1];
                 $chapter_suffix = $this->generate_chapter_suffix($chapters, $chapter_depth);
                 $this->process_chapter($p_version_id, $work_package, $chapter_prefix, $chapter_suffix, $option_show_duration, $detail_flag, $print_flag);
                 $this->process_content($work_package_spec_bug_ids, $version_date, $chapter_prefix, $chapter_suffix, $option_show_duration, $detail_flag, $print_flag);
                 $last_chapter_depth = $chapter_depth;
             }
         }
     }
     /** Iterate through issues without defined work package */
     $chapter_prefix = $chapter_counter_array[0] + 1;
     $chapter_suffix = plugin_lang_get('editor_no_workpackage');
     if (count($no_work_package_bug_ids) > 0) {
         $this->process_chapter($p_version_id, '', $chapter_prefix, $chapter_suffix, $option_show_duration, $detail_flag, $print_flag);
         $this->process_content($no_work_package_bug_ids, $version_date, $chapter_prefix, $chapter_suffix, $option_show_duration, $detail_flag, $print_flag);
     }
 }
/**
 * Print table body from directory
 *
 * @param $pdf
 * @param $p_version_id
 * @param $work_packages
 * @param $no_work_package_bug_ids
 * @param $option_show_duration
 * @param $detail_flag
 * @return Array
 */
function generate_content(PDF $pdf, $p_version_id, $work_packages, $no_work_package_bug_ids, $option_show_duration, $detail_flag)
{
    $specmanagement_database_api = new specmanagement_database_api();
    $specmanagement_editor_api = new specmanagement_editor_api();
    $directory_depth = $specmanagement_editor_api->calculate_directory_depth($work_packages);
    $chapter_counter_array = $specmanagement_editor_api->prepare_chapter_counter($directory_depth);
    $last_chapter_depth = 0;
    $version_id = $_POST['version_id'];
    $version = version_get($version_id);
    $version_date = $version->date_order;
    /** Iterate through defined work packages */
    if (!is_null($work_packages)) {
        foreach ($work_packages as $work_package) {
            if (strlen($work_package) > 0) {
                $work_package_spec_bug_ids = $specmanagement_database_api->get_workpackage_spec_bugs($p_version_id, $work_package);
                $chapters = explode('/', $work_package);
                $chapter_depth = count($chapters);
                if ($chapter_depth == 1) {
                    $specmanagement_editor_api->reset_chapter_counter($chapter_counter_array);
                }
                $chapter_prefix_data = $specmanagement_editor_api->generate_chapter_prefix($chapter_counter_array, $chapter_depth, $last_chapter_depth);
                $chapter_counter_array = $chapter_prefix_data[0];
                $chapter_prefix = $chapter_prefix_data[1];
                $chapter_suffix = $specmanagement_editor_api->generate_chapter_suffix($chapters, $chapter_depth);
                $chapter_duration = $specmanagement_database_api->get_workpackage_duration($p_version_id, $work_package);
                if ($detail_flag) {
                    $pdf->ChapterTitle($chapter_prefix, utf8_decode($chapter_suffix), $option_show_duration, $chapter_duration);
                } else {
                    $pdf->SetFont('Arial', 'B', 12);
                    $pdf->SetFillColor(255, 255, 255);
                    $pdf->Cell(95, 6, $chapter_prefix . ' ' . utf8_decode($chapter_suffix), 0, 0, 'L', 1);
                    $pdf->Cell(95, 6, $pdf->PageNo(), 0, 0, 'R', 1);
                    $pdf->SetFont('Arial', '', 12);
                    $pdf->Ln();
                }
                process_content($pdf, $work_package_spec_bug_ids, $version_date, $chapter_prefix, $option_show_duration, $detail_flag);
                $last_chapter_depth = $chapter_depth;
            }
            if ($detail_flag) {
                $pdf->Cell(0, 0, '', 'T');
            }
            $pdf->Ln(7);
        }
    }
    /** Iterate through issues without defined work package */
    $chapter_prefix = $chapter_counter_array[0] + 1;
    if (count($no_work_package_bug_ids) > 0) {
        $chapter_suffix = plugin_lang_get('editor_no_workpackage');
        $chapter_duration = $specmanagement_database_api->get_workpackage_duration($p_version_id, '');
        if ($detail_flag) {
            $pdf->ChapterTitle($chapter_prefix, utf8_decode($chapter_suffix), $option_show_duration, $chapter_duration);
        } else {
            $pdf->SetFont('Arial', 'B', 12);
            $pdf->SetFillColor(255, 255, 255);
            $pdf->Cell(0, 6, $chapter_prefix . ' ' . utf8_decode($chapter_suffix), 0, 0, 'L', 1);
            $pdf->SetFont('Arial', '', 12);
            $pdf->Ln();
        }
        process_content($pdf, $no_work_package_bug_ids, $version_date, $chapter_prefix, $option_show_duration, $detail_flag);
        if ($detail_flag) {
            $pdf->Cell(0, 0, '', 'T');
        }
        $pdf->Ln(7);
        $chapter_prefix++;
    }
    $content_package = array();
    $content_package[0] = $pdf;
    $content_package[1] = $chapter_prefix;
    return $content_package;
}