/**
 * @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();
    }
}
 /**
  * Add custom plugin fields to bug-specific sites (bug_report, bug_update, bug_view)
  *
  * @param $event
  * @return null
  */
 function bugViewFields($event)
 {
     require_once SPECMANAGEMENT_CORE_URI . 'specmanagement_database_api.php';
     require_once SPECMANAGEMENT_CORE_URI . 'specmanagement_print_api.php';
     $specmanagement_database_api = new specmanagement_database_api();
     $specmanagement_print_api = new specmanagement_print_api();
     $bug_id = null;
     $type = null;
     $work_package = null;
     $ptime = null;
     switch ($event) {
         case 'EVENT_UPDATE_BUG_FORM':
             $bug_id = gpc_get_int('bug_id');
             break;
         case 'EVENT_VIEW_BUG_DETAILS':
             $bug_id = gpc_get_int('id');
             break;
     }
     if ($bug_id != null) {
         $source_obj = $specmanagement_database_api->get_source_row($bug_id);
         $work_package = $source_obj[3];
         $ptime_obj = $specmanagement_database_api->get_ptime_row($bug_id);
         $ptime = $ptime_obj[2];
         if (0 == strlen(bug_get_field($bug_id, 'target_version'))) {
             $specmanagement_database_api->update_source_version($bug_id, null);
         }
         $p_version_id = $source_obj[2];
         if (!is_null($p_version_id)) {
             $version_obj = $specmanagement_database_api->get_version_row_by_primary($p_version_id);
             $type_id = $version_obj[3];
             $type = $specmanagement_database_api->get_type_string($type_id);
         }
     }
     if (plugin_config_get('ShowFields')) {
         switch ($event) {
             case 'EVENT_VIEW_BUG_DETAILS':
                 if ($this->getReadLevel() || $this->getWriteLevel() || $this->getUserHasLevel()) {
                     $specmanagement_print_api->printBugViewFields($type, $work_package, $ptime);
                 }
                 break;
             case 'EVENT_REPORT_BUG_FORM':
                 if ($this->getWriteLevel() || $this->getUserHasLevel()) {
                     $specmanagement_print_api->printBugReportFields();
                 }
                 break;
             case 'EVENT_UPDATE_BUG_FORM':
                 if ($this->getWriteLevel() || $this->getUserHasLevel()) {
                     $specmanagement_print_api->printBugUpdateFields($type, $work_package, $ptime);
                 }
                 break;
         }
     }
     return null;
 }
}
$specmanagement_database_api = new specmanagement_database_api();
$specmanagement_print_api = new specmanagement_print_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)) {
    /** generate and print page content */
    $pdf = new PDF();
    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont('Arial', '', 12);
    /** 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]);
    /** print document head */
    $pdf = generate_document_head($pdf, $type_string, $version_id, $version_spec_bug_ids);
    $pdf->Ln(10);