/**
 * @param $edit_page
 * @param $obsolete_flag
 */
function print_versions($edit_page, $obsolete_flag)
{
    $specmanagement_database_api = new specmanagement_database_api();
    $specmanagement_print_api = new specmanagement_print_api();
    $obsolote = false;
    if ($obsolete_flag) {
        $obsolote = null;
    }
    if ($edit_page) {
        $versions = version_get_all_rows_with_subs(helper_get_current_project(), null, null);
    } else {
        $versions = version_get_all_rows_with_subs(helper_get_current_project(), null, $obsolote);
    }
    for ($version_index = 0; $version_index < count($versions); $version_index++) {
        $version = $versions[$version_index];
        $current_type = $specmanagement_database_api->get_type_string($specmanagement_database_api->get_type_by_version($version['id']));
        $specmanagement_print_api->printRow();
        echo '<input type="hidden" name="version_ids[]" value="' . $version['id'] . '"/>';
        print_name($edit_page, $version);
        print_released($edit_page, $version_index, $version);
        print_obsolete($edit_page, $version_index, $version);
        print_date($edit_page, $version);
        print_type($edit_page, $current_type, $version);
        print_description($edit_page, $version);
        print_action($edit_page, $version);
        echo '</tr>';
    }
}
/**
 * @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;
 }
/**
 * @param $print_flag
 */
function calculate_page_content($print_flag)
{
    $specmanagement_print_api = new specmanagement_print_api();
    html_page_top1(plugin_lang_get('menu_versgraph'));
    echo '<link rel="stylesheet" href="' . SPECMANAGEMENT_PLUGIN_URL . 'files/specmanagement.css">';
    if (!$print_flag) {
        html_page_top2();
        if (plugin_is_installed('WhiteboardMenu') && file_exists(config_get_global('plugin_path') . 'WhiteboardMenu')) {
            require_once WHITEBOARDMENU_CORE_URI . 'whiteboard_print_api.php';
            $whiteboard_print_api = new whiteboard_print_api();
            $whiteboard_print_api->printWhiteboardMenu();
        }
        $specmanagement_print_api->print_plugin_menu();
        echo '<div align="center">';
        echo '<hr size="1" width="100%" />';
    }
    print_table($print_flag);
    if (!$print_flag) {
        html_page_bottom1();
    }
}
/**
 * @param $amount_stat_columns
 * @param $print_flag
 * @param $show_zero_issues
 * @param $versions
 */
function print_tablebody($amount_stat_columns, $print_flag, $show_zero_issues, $versions)
{
    $specmanagement_database_api = new specmanagement_database_api();
    $specmanagement_print_api = new specmanagement_print_api();
    echo '<tbody>';
    for ($version_index = 0; $version_index < count($versions); $version_index++) {
        $version = $versions[$version_index];
        $version_spec_bug_ids = $specmanagement_database_api->get_version_spec_bugs($version['version']);
        if (is_null($version_spec_bug_ids) && !$show_zero_issues) {
            continue;
        }
        $version_deadline = date_is_null($version['date_order']) ? '' : string_attribute(date(config_get('calendar_date_format'), $version['date_order']));
        $timeleft = time() - $version['date_order'];
        $unsolved_bug_duration = null;
        $add_rel_duration = 0;
        $status_process = null;
        $uncertainty_bug_ids = array();
        $add_rel_uncertainty_bug_ids = array();
        $sum_duration = 0;
        $uncertainty_status_process = null;
        $unsolved_bug_finished_date = null;
        $null_issues_flag = true;
        if (!is_null($version_spec_bug_ids)) {
            $unsolveld_bug_ids = get_unsolved_issues($version_spec_bug_ids);
            $unsolved_bug_duration = $specmanagement_database_api->get_bug_array_duration($unsolveld_bug_ids);
            $rel_based_data = calculate_rel_based_data($unsolveld_bug_ids);
            $add_rel_duration = $rel_based_data[0];
            $add_rel_uncertainty_bug_ids = $rel_based_data[1];
            $sum_duration = $unsolved_bug_duration + $add_rel_duration;
            $status_process = 100 * round(1 - count($unsolveld_bug_ids) / count($version_spec_bug_ids), 2);
            $uncertainty_bug_ids = get_uncertainty_issues($unsolveld_bug_ids);
            $uncertainty_status_process = 100 * round(count($uncertainty_bug_ids) / count($version_spec_bug_ids), 2);
            $null_issues_flag = false;
        }
        $time_delay = calc_time_delay($timeleft, $sum_duration);
        $specmanagement_print_api->printRow();
        print_version($version);
        print_date($version_deadline, $time_delay[0]);
        print_issue_amount($amount_stat_columns, $print_flag, $version, $version_spec_bug_ids, $null_issues_flag);
        print_process($status_process, $null_issues_flag);
        print_duration($sum_duration, $add_rel_duration, $null_issues_flag);
        print_uncertainty($uncertainty_bug_ids, $add_rel_uncertainty_bug_ids, $uncertainty_status_process, $null_issues_flag);
        //print_information( $version, $null_issues_flag, $time_delay[1] );
        echo '</tr>';
    }
    echo '</tbody>';
}
function calculate_page_content()
{
    $specmanagement_database_api = new specmanagement_database_api();
    $specmanagement_print_api = new specmanagement_print_api();
    $types = array();
    $types_rows = $specmanagement_database_api->get_full_types();
    foreach ($types_rows as $types_row) {
        $types[] = $types_row[1];
    }
    html_page_top1(plugin_lang_get('select_doc_title'));
    echo '<link rel="stylesheet" href="' . SPECMANAGEMENT_PLUGIN_URL . 'files/specmanagement.css">';
    html_page_top2();
    //   if ( plugin_is_installed( 'WhiteboardMenu' ) && file_exists ( config_get_global ( 'plugin_path' ) . 'WhiteboardMenu' ) )
    //   {
    //      require_once WHITEBOARDMENU_CORE_URI . 'whiteboard_print_api.php';
    //      $whiteboard_print_api = new whiteboard_print_api();
    //      $whiteboard_print_api->printWhiteboardMenu();
    //   }
    if (project_includes_user(helper_get_current_project(), auth_get_current_user_id()) || helper_get_current_project() == 0 || user_is_administrator(auth_get_current_user_id())) {
        echo '<div align="center">';
        echo '<hr size="1" width="50%" />';
        $specmanagement_print_api->printTableTop('50');
        $specmanagement_print_api->printFormTitle(2, 'menu_title');
        $specmanagement_print_api->printCategoryField(1, 1, 'select_type');
        echo '<td>';
        echo '<form method="post" name="form_set_source" action="' . plugin_page('editor') . '">';
        print_document_selection($types);
        $specmanagement_print_api->printRow();
        echo '<td class="center" colspan="2">';
        echo '<input type="submit" name="formSubmit" class="button" value="' . plugin_lang_get('select_confirm') . '"/>';
        echo '</td>';
        echo '</tr>';
        echo '</form>';
        echo '</td>';
        $specmanagement_print_api->printTableFoot();
    } else {
        echo '<table class="width60"><tr><td class="center">' . lang_get('access_denied') . '</td></tr></table>';
    }
    html_page_bottom1();
}
/**
 * @param $relevant_issue_ids
 * @return array
 */
function calculate_status($relevant_issue_ids)
{
    $specmanagement_print_api = new specmanagement_print_api();
    $status_process = null;
    if (count($relevant_issue_ids) > 0) {
        $relevant_issue_ids = array_merge($relevant_issue_ids);
        $status_process = $specmanagement_print_api->calculate_status_doc_progress($relevant_issue_ids);
    }
    return $status_process;
}
 /**
  * @param $allRelevantBugs
  * @return string
  */
 public function get_process($allRelevantBugs)
 {
     $specmanagement_print_api = new specmanagement_print_api();
     $status_flag = $this->check_status_flag($allRelevantBugs);
     if ($status_flag) {
         return round($specmanagement_print_api->calculate_status_doc_progress($allRelevantBugs), 2);
     } else {
         return $this->calculate_pt_doc_progress($allRelevantBugs);
     }
 }
function print_tablehead()
{
    $specmanagement_print_api = new specmanagement_print_api();
    $col_width = 100 / COLS;
    echo '<thead>';
    $specmanagement_print_api->printFormTitle(COLS, 'mantypes_thead');
    echo '<tr class="row-category2">';
    echo '<th class="form-title" colspan="1" width="' . $col_width . '">' . plugin_lang_get('manversions_thdoctype') . '</th>';
    echo '<th class="form-title" colspan="1" width="' . $col_width . '">' . plugin_lang_get('mantypes_show_print_duration') . '</th>';
    echo '<th class="form-title" colspan="1" width="' . $col_width . '">' . plugin_lang_get('mantypes_show_expenses_overview') . '</th>';
    echo '<th class="form-title" colspan="1" width="' . $col_width . '">' . plugin_lang_get('mantypes_show_directory') . '</th>';
    echo '</tr>';
    echo '</thead>';
}
<?php

require_once SPECMANAGEMENT_CORE_URI . 'specmanagement_constant_api.php';
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();
auth_reauthenticate();
access_ensure_global_level(plugin_config_get('AccessLevel'));
html_page_top1(plugin_lang_get('config_title'));
html_page_top2();
print_manage_menu();
echo '<br/>';
echo '<form action="' . plugin_page('config_update') . '" method="post">';
echo form_security_field('plugin_SpecManagement_config_update');
if ($specmanagement_print_api->getMantisVersion() == '1.2.') {
    echo '<table align="center" class="width75" cellspacing="1">';
} else {
    echo '<div class="form-container">';
    echo '<table>';
}
$specmanagement_print_api->printFormTitle(2, 'config_caption');
$specmanagement_print_api->printRow();
echo '<td class="category" width="30%" colspan="1">';
echo '<span class="required">*</span>' . plugin_lang_get('config_accesslevel');
echo '</td>';
echo '<td width="200px" colspan="1">';
echo '<select name="AccessLevel">';
print_enum_string_option_list('access_levels', plugin_config_get('AccessLevel', PLUGINS_SPECMANAGEMENT_THRESHOLD_LEVEL_DEFAULT));
echo '</select>';
echo '</td>';