/lib/testcases/tcAssign2Tplan.php
PHP | 242 lines | 129 code | 21 blank | 92 comment | 13 complexity | 2f2f30de6616fb77386e16f1096d4673 MD5 | raw file
- <?php
- /**
- * TestLink Open Source Project - http://testlink.sourceforge.net/
- * This script is distributed under the GNU General Public License 2 or later.
- *
- * While in test specification feature, assign TEST CASE version to multiple
- * ACTIVE test plans
- *
- * @package TestLink
- * @author Amit Khullar - amkhullar@gmail.com
- * @copyright 2007-2009, TestLink community
- * @version CVS: $Id: tcAssign2Tplan.php,v 1.8 2010/05/20 18:20:46 franciscom Exp $
- * @link http://www.teamst.org/index.php
- *
- *
- * @internal revisions
- * 20100520 - franciscom - BUGID 3480 - add to test plan problem when platforms exist
- * 20100514 - franciscom - BUGID 3189
- * 20100124 - franciscom - BUGID 3064 - add logic to manage ONLY ACTIVE test plans
- **/
-
- require_once("../../config.inc.php");
- require_once("common.php");
- testlinkInitPage($db);
- $templateCfg = templateConfiguration();
-
- $tcase_mgr=new testcase($db);
- $tplan_mgr=new testplan($db);
- $tproject_mgr=new testproject($db);
-
- $glue = config_get('testcase_cfg')->glue_character;
- $args = init_args();
- $gui = initializeGui($args);
- $getOpt = array('outputFormat' => 'map', 'addIfNull' => true);
- $gui->platformSet = $tplan_mgr->getPlatforms($args->tplan_id,$getOpt);
-
- $options['output'] = 'essential';
- $tcase_all_info = $tcase_mgr->get_by_id($args->tcase_id,testcase::ALL_VERSIONS,null,$options);
-
- if( !is_null($tcase_all_info) )
- {
- foreach($tcase_all_info as $tcversion_info)
- {
- if($tcversion_info['id'] == $args->tcversion_id )
- {
- $version = $tcversion_info['version'];
- $gui->pageTitle=lang_get('test_case') . ':' . $tcversion_info['name'];
- $gui->tcaseIdentity = $tproject_mgr->getTestCasePrefix($args->tproject_id);
- $gui->tcaseIdentity .= $glue . $tcversion_info['tc_external_id'] . ':' . $tcversion_info['name'];
- break;
- }
- }
- }
-
- // 20100514 - franciscom
- // Why I'm filter on NOT_EXECUTED ??? -> this causes BUGID 3189
- // $link_info = $tcase_mgr->get_linked_versions($args->tcase_id,'NOT_EXECUTED');
- $link_info = $tcase_mgr->get_linked_versions($args->tcase_id);
- // 20100124 - work only on ACTIVE TEST PLANS => array('plan_status' => 1)
- if( !is_null($tplanSet = $tproject_mgr->get_all_testplans($args->tproject_id,array('plan_status' => 1))) )
- {
- $has_links = array_fill_keys(array_keys($tplanSet),false);
- $linked_tplans = null;
- if( !is_null($link_info) )
- {
- foreach($link_info as $tcversion_id => $info)
- {
- foreach($info as $tplan_id => $platform_info)
- {
- $has_links[$tplan_id] = true;
- foreach($platform_info as $platform_id => $value)
- {
- // $gui->tplans[$tplan_id][$platform_id]['tcversion_id']=$value['id'];
- $linked_tplans[$tplan_id][$platform_id]['tcversion_id']=$value['tcversion_id'];
- $linked_tplans[$tplan_id][$platform_id]['version']=$value['version'];
- $linked_tplans[$tplan_id][$platform_id]['draw_checkbox'] = false;
- }
- }
- }
- }
-
- // Initial situation, enable link of target test case version to all test plans
- $getOpt = array('outputFormat' => 'map', 'addIfNull' => true);
- foreach($tplanSet as $tplan_id => $value)
- {
- $gui->tplans[$tplan_id] = array();
- $platformSet = $tplan_mgr->getPlatforms($tplan_id,$getOpt);
-
- // $target_version_number = 0;
- // $target_version_id = 0;
- $target_version_number = $version;
- $target_version_id = $args->tcversion_id;
- $linked_platforms = null;
-
- // if a version of this Test Case has been linked to test plan, get it.
- if( $has_links[$tplan_id] )
- {
- $linked_platforms = array_flip(array_keys($linked_tplans[$tplan_id]));
- $dummy = current($linked_tplans[$tplan_id]);
- $target_version_number = $dummy['version'];
- $target_version_id = $dummy['tcversion_id'];
- }
-
- // do logic on test plan linked platforms to understand what to display
- // For situation like
- // Test Plan TPX - Platforms: P1,P2,P3
- // Test Case A - version 1 -> Test Plan TPX - Platform P1
- //
- // Create Test Case A - version 2
- //
- // Add to test plan on version 2
- // We CAN NOT DISPLAY Platforms P2 and P3, because P1 has been linked to version 1
- // and we DO NOT ALLOW different test case versions to be linked to ONE TEST PLAN.
- // Then we need to display only
- // [x](read only) version 1 - test plan TPX - platform P1
- //
- // But if we go to version 1 and choose add to test plan, will display:
- // [x](read only) version 1 - test plan TPX - platform P1
- // [ ] version 1 - test plan TPX - platform P2
- // [ ] version 1 - test plan TPX - platform P3
- //
- // Then we can add version 1 to other platform
- // Following logic try to implement this.
- //
- foreach($platformSet as $platform_id => $platform_info)
- {
- $doAdd = true;
- $draw_checkbox = true;
- if( $has_links[$tplan_id] )
- {
- if( isset($linked_platforms[$platform_id]) )
- {
- $draw_checkbox = false;
- }
- else if($target_version_number == $version)
- {
- $draw_checkbox = true;
- }
- else
- {
- $doAdd = false;
- }
- }
- if( $doAdd )
- {
- $gui->tplans[$tplan_id][$platform_id] = $value;
- $gui->tplans[$tplan_id][$platform_id]['tcversion_id'] = $target_version_id;
- $gui->tplans[$tplan_id][$platform_id]['version'] = $target_version_number;
- $gui->tplans[$tplan_id][$platform_id]['draw_checkbox'] = $draw_checkbox;
- $gui->tplans[$tplan_id][$platform_id]['platform'] = $platform_info;
- }
-
- // -------------------------------------------------------------------------------
- // if( !$has_links[$tplan_id] )
- // {
- // $gui->tplans[$tplan_id][$platform_id] = $value;
- // $gui->tplans[$tplan_id][$platform_id]['tcversion_id'] = $args->tcversion_id;
- // $gui->tplans[$tplan_id][$platform_id]['version'] = $version;
- // $gui->tplans[$tplan_id][$platform_id]['draw_checkbox'] = true;
- // $gui->tplans[$tplan_id][$platform_id]['platform'] = $platform_info;
- // }
- // else
- // {
- //
- // if( isset($linked_platforms[$platform_id]) )
- // {
- // $gui->tplans[$tplan_id][$platform_id] = $value;
- // $gui->tplans[$tplan_id][$platform_id]['tcversion_id'] = $target_version_id;
- // $gui->tplans[$tplan_id][$platform_id]['version'] = $target_version_number;
- // $gui->tplans[$tplan_id][$platform_id]['draw_checkbox'] = false;
- // $gui->tplans[$tplan_id][$platform_id]['platform'] = $platform_info;
- // }
- // else if($target_version_number == $version)
- // {
- // $gui->tplans[$tplan_id][$platform_id] = $value;
- // $gui->tplans[$tplan_id][$platform_id]['tcversion_id'] = $target_version_id;
- // $gui->tplans[$tplan_id][$platform_id]['version'] = $target_version_number;
- // $gui->tplans[$tplan_id][$platform_id]['draw_checkbox'] = true;
- // $gui->tplans[$tplan_id][$platform_id]['platform'] = $platform_info;
- // }
- // }
- }
- }
-
- // Check if submit button can be displayed.
- // Condition there is at least one test plan where no version of
- // target test cases has been linked.
- $gui->can_do=false; // because an OR logic will be used
- foreach($gui->tplans as $tplan_id => $platform_info)
- {
- foreach($platform_info as $platform_id => $value)
- {
- $gui->can_do = $gui->can_do || $gui->tplans[$tplan_id][$platform_id]['draw_checkbox'];
- }
-
- }
- }
- $smarty = new TLSmarty();
- $smarty->assign('gui',$gui);
- $smarty->display($templateCfg->template_dir . $templateCfg->default_template);
-
-
-
- /**
- * init_args
- * creates a sort of namespace
- *
- * @return object with some REQUEST and SESSION values as members.
- */
- function init_args()
- {
- $_REQUEST = strings_stripSlashes($_REQUEST);
-
- $args = new stdClass();
- $args->tplan_id = isset($_REQUEST['tplan_id']) ? $_REQUEST['tplan_id'] : $_SESSION['testplanID'];
- $args->tproject_id = isset($_REQUEST['tproject_id']) ? $_REQUEST['tproject_id'] : $_SESSION['testprojectID'];
- $args->tcase_id = isset($_REQUEST['tcase_id']) ? $_REQUEST['tcase_id'] : 0;
- $args->tcversion_id = isset($_REQUEST['tcversion_id']) ? $_REQUEST['tcversion_id'] : 0;
- // $args->goback_url = isset($_REQUEST['goback_url']) ? $_REQUEST['goback_url'] : null;
-
- return $args;
- }
-
-
- /**
- *
- *
- */
- function initializeGui($argsObj)
- {
- $guiObj = new stdClass();
- $guiObj->pageTitle='';
- $guiObj->tcaseIdentity='';
- $guiObj->mainDescription=lang_get('add_tcversion_to_plans');;
- $guiObj->tcase_id=$argsObj->tcase_id;
- $guiObj->tcversion_id=$argsObj->tcversion_id;
- $guiObj->can_do=false;
- $guiObj->item_sep=config_get('gui')->title_separator_2;
- return $guiObj;
- }
-
- ?>