foreach ($tcase_set as $tcase_platform) {
     foreach ($tcase_platform as $tcase) {
         $current_row = array();
         $tcase_id = $tcase['testcase_id'];
         $tcversion_id = $tcase['tcversion_id'];
         $current_row[] = htmlspecialchars($tcase['login']);
         $current_row[] = htmlspecialchars($tcase['tcase_full_path']);
         // create linked icons
         $exec_history_link = "<a href=\"javascript:openExecHistoryWindow({$tcase_id});\">" . "<img title=\"{$l18n['execution_history']}\" src=\"{$history_img}\" /></a> ";
         $edit_link = "<a href=\"javascript:openTCEditWindow({$gui->tproject_id},{$tcase_id});\">" . "<img title=\"{$l18n['design']}\" src=\"{$edit_img}\" /></a> ";
         $current_row[] = "<!-- " . sprintf("%010d", $tcase['tc_external_id']) . " -->" . $exec_history_link . $edit_link . htmlspecialchars($tcase['prefix']) . $gui->glueChar . $tcase['tc_external_id'] . " : " . htmlspecialchars($tcase['name']) . sprintf($l18n['tcversion_indicator'], $tcase['version']);
         if ($args->priority_enabled) {
             //BUGID 4418 - clean up priority usage
             $current_row[] = "<!-- " . $tcase['priority'] . " -->" . $priority[priority_to_level($tcase['priority'])];
         }
         $last_execution = $tcase_mgr->get_last_execution($tcase_id, $tcversion_id, $tplan_id, $tcase['build_id'], $tcase['platform_id']);
         $status = $last_execution[$tcversion_id]['status'];
         if (!$status) {
             $status = $map_status_code['not_run'];
         }
         $current_row[] = array("value" => $status, "text" => $map_statuscode_css[$status]['translation'], "cssClass" => $map_statuscode_css[$status]['css_class']);
         $current_row[] = $tcase['creation_ts'];
         $current_row[] = $tcase['modification_ts'];
         // add this row to the others
         $rows[] = $current_row;
     }
 }
 /* different table id for different reports:
  * - Assignment Overview if $args->show_all_users is set
  * - Test Cases assigned to user if $args->build_id > 0
  * - Test Cases assigned to me else
$result = $tcase_mgr->{$fname}($pathName);
new dBug($result);
die;
$tcase_id = 318;
$tplan_id = 389;
$build_id = 21;
$platform_id = 5;
$version_id = testcase::ALL_VERSIONS;
// $options = array('getNoExecutions' => true);
$options = null;
// function get_last_execution($id,$version_id,$tplan_id,$build_id,$platform_id,$options=null)
echo "<pre> testcase - get_last_execution(\$id,\$version_id,\$tplan_id,\$build_id,\$platform_id\$options=null)";
echo "</pre>";
echo "<pre>            get_last_execution({$tcase_id},{$version_id},{$tplan_id},{$build_id},{$platform_id},{$options})";
echo "</pre>";
$last_execution = $tcase_mgr->get_last_execution($tcase_id, $version_id, $tplan_id, $build_id, $platform_id, $options);
new dBug($last_execution);
die;
$tcase_id = 4;
echo "<pre> testcase - get_by_id(\$id,\$version_id = TC_ALL_VERSIONS, \$active_status='ALL',\$open_status='ALL')";
echo "</pre>";
echo "<pre>            get_by_id({$tcase_id})";
echo "</pre>";
$tcase_info = $tcase_mgr->get_by_id($tcase_id);
new dBug($tcase_info);
$set_of_tcase_id = array(4, 6);
echo "<pre>            get_by_id({$set_of_tcase_id})";
echo "</pre>";
$set_of_tcase_info = $tcase_mgr->get_by_id($set_of_tcase_id);
new dBug($set_of_tcase_info);
$tcase_name = 'Configuration';
function getLastExecutions(&$db, $tcaseSet, $tplanId)
{
    $execMap = array();
    if (sizeof($tcaseSet)) {
        $tcase_mgr = new testcase($db);
        $items = array_keys($tcaseSet);
        $path_info = $tcase_mgr->tree_manager->get_full_path_verbose($items);
        $options = array('getNoExecutions' => 1, 'groupByBuild' => 0);
        foreach ($tcaseSet as $tcaseId => $tcInfo) {
            $execMap[$tcaseId] = $tcase_mgr->get_last_execution($tcaseId, $tcInfo['tcversion_id'], $tplanId, testcase::ANY_BUILD, testcase::ANY_PLATFORM, $options);
            unset($path_info[$tcaseId][0]);
            // remove test project name
            $path_info[$tcaseId][] = '';
            $execMap[$tcaseId][$tcInfo['tcversion_id']]['tcase_path'] = implode(' / ', $path_info[$tcaseId]);
        }
        unset($tcase_mgr);
    }
    return $execMap;
}
/**
* initialize Gui
*/
function initializeGui(&$db, &$args, $dateFormat)
{
    $gui = new stdClass();
    $gui->glueChar = config_get('testcase_cfg')->glue_character;
    $gui->tproject_id = $args->tproject_id;
    $gui->tproject_name = $args->tproject_name;
    $gui->warning_msg = '';
    $gui->tableSet = null;
    $history_img = TL_THEME_IMG_DIR . "history_small.png";
    $exec_img = TL_THEME_IMG_DIR . "exec_icon.png";
    $edit_img = TL_THEME_IMG_DIR . "edit_icon.png";
    $l18n = init_labels(array('tcversion_indicator' => null, 'goto_testspec' => null, 'version' => null, 'testplan' => null, 'assigned_tc_overview' => null, 'testcases_created_per_user' => null, 'design' => null, 'execution' => null, 'execution_history' => null, 'low_priority' => null, 'medium_priority' => null, 'high_priority' => null));
    $gui->pageTitle = sprintf($l18n['testcases_created_per_user'], $gui->tproject_name);
    $results_config = config_get('results');
    $map_status_code = $results_config['status_code'];
    $map_code_status = $results_config['code_status'];
    $map_status_label = $results_config['status_label'];
    $map_statuscode_css = array();
    foreach ($map_code_status as $code => $status) {
        if (isset($map_status_label[$status])) {
            $label = $map_status_label[$status];
            $map_statuscode_css[$code] = array();
            $map_statuscode_css[$code]['translation'] = lang_get($label);
            $map_statuscode_css[$code]['css_class'] = $map_code_status[$code] . '_text';
        }
    }
    $options = new stdClass();
    // convert starttime to iso format for database usage
    if (isset($args->selected_start_date) && sizeof($args->selected_start_date) > 0) {
        $date_array = split_localized_date($args->selected_start_date[0], $dateFormat);
        if ($date_array != null) {
            // set date in iso format
            $options->startTime = $date_array['year'] . "-" . $date_array['month'] . "-" . $date_array['day'];
        }
    }
    // convert starttime to iso format for database usage
    if (isset($args->selected_end_date) && sizeof($args->selected_end_date) > 0) {
        $date_array = split_localized_date($args->selected_end_date[0], $dateFormat);
        if ($date_array != null) {
            // set date in iso format
            $options->endTime = $date_array['year'] . "-" . $date_array['month'] . "-" . $date_array['day'];
        }
    }
    $start_hour = isset($args->start_Hour) ? $args->start_Hour : "00";
    $options->startTime = $options->startTime . " " . $start_hour . ":00:00";
    $end_hour = isset($args->end_Hour) ? $args->end_Hour : "00";
    $options->endTime = $options->endTime . " " . $end_hour . ":59:59";
    $options->mode = 'full_path';
    // TBD: remove it
    $options->tplan_id = $args->tplan_id;
    // used to retrieve test cases from
    $tcase_mgr = new testcase($db);
    $gui->resultSet = $tcase_mgr->get_created_per_user($args->user_id, $args->tproject_id, $options);
    if (!is_null($gui->resultSet)) {
        $tables = tlObjectWithDB::getDBTables(array('nodes_hierarchy'));
        $tplanSet = array_keys($gui->resultSet);
        $sql = "SELECT name,id FROM {$tables['nodes_hierarchy']} " . "WHERE id IN (" . implode(',', $tplanSet) . ")";
        $gui->tplanNames = $db->fetchRowsIntoMap($sql, 'id');
        $optColumns = array('priority' => $args->priority_enabled);
        // For each test case set under a test plan ID, create the rows and columns
        foreach ($gui->resultSet as $tplan_id => $tcase_set) {
            list($columns, $sortByColumn) = getColumnsDefinition($optColumns);
            $rows = array();
            foreach ($tcase_set as $tcase_platform) {
                foreach ($tcase_platform as $tcase) {
                    $current_row = array();
                    $tcase_id = $tcase['testcase_id'];
                    $tcversion_id = $tcase['tcversion_id'];
                    $current_row[] = htmlspecialchars($tcase['login']);
                    $current_row[] = htmlspecialchars($tcase['tcase_full_path']);
                    // Create linked icons
                    $exec_history_link = "<a href=\"javascript:openExecHistoryWindow({$tcase_id});\">" . "<img title=\"{$l18n['execution_history']}\" src=\"{$history_img}\" /></a> ";
                    $edit_link = "<a href=\"javascript:openTCEditWindow({$tcase_id});\">" . "<img title=\"{$l18n['design']}\" src=\"{$edit_img}\" /></a> ";
                    $current_row[] = "<!-- " . sprintf("%010d", $tcase['tc_external_id']) . " -->" . $exec_history_link . $edit_link . htmlspecialchars($tcase['prefix']) . $gui->glueChar . $tcase['tc_external_id'] . " : " . htmlspecialchars($tcase['name']) . sprintf($l18n['tcversion_indicator'], $tcase['version']);
                    $last_execution = $tcase_mgr->get_last_execution($tcase_id, $tcversion_id, $tplan_id, $tcase['build_id'], $tcase['platform_id']);
                    $status = $last_execution[$tcversion_id]['status'];
                    if (!$status) {
                        $status = $map_status_code['not_run'];
                    }
                    $current_row[] = array("value" => $status, "text" => $map_statuscode_css[$status]['translation'], "cssClass" => $map_statuscode_css[$status]['css_class']);
                    $current_row[] = $tcase['creation_ts'];
                    $current_row[] = $tcase['modification_ts'];
                    // add this row to the others
                    $rows[] = $current_row;
                }
            }
            // Different table ID for different reports:
            $table_id = "tl_table_tc_created_per_user_";
            // Add test plan ID to table ID
            $table_id .= $tplan_id;
            $matrix = new tlExtTable($columns, $rows, $table_id);
            $matrix->title = $l18n['testplan'] . ": " . htmlspecialchars($gui->tplanNames[$tplan_id]['name']);
            // Default grouping by first column, which is user for overview, build otherwise
            $matrix->setGroupByColumnName(lang_get($columns[0]['title_key']));
            // Make table collapsible if more than 1 table is shown and surround by frame
            if (count($tplanSet) > 1) {
                $matrix->collapsible = true;
                $matrix->frame = true;
            }
            // Define toolbar
            $matrix->showToolbar = true;
            $matrix->toolbarExpandCollapseGroupsButton = true;
            $matrix->toolbarShowAllColumnsButton = true;
            $matrix->setSortByColumnName($sortByColumn);
            $matrix->sortDirection = 'DESC';
            $gui->tableSet[$tplan_id] = $matrix;
        }
    }
    return $gui;
}