/lib/requirements/reqExport.php
https://github.com/viglesiasce/testlink · PHP · 178 lines · 121 code · 26 blank · 31 comment · 8 complexity · a5dd3e85db74469a63c458808fe021f0 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.
- *
- * Filename $RCSfile: reqExport.php,v $
- *
- * @version $Revision: 1.10 $
- * @modified $Date: 2010/03/21 19:28:34 $ by $Author: franciscom $
- *
- * Allows users to export requirements.
- *
- * 20100321 - franciscom - manage export of :
- * req. spec => full tree or branch (new to 1.9)
- * child (direct children) requirements inside a req. spec
- **/
- require_once("../../config.inc.php");
- require_once("csv.inc.php");
- require_once("xml.inc.php");
- require_once("common.php");
- require_once("requirements.inc.php");
-
- testlinkInitPage($db,false,false,"checkRights");
- $templateCfg = templateConfiguration();
- $req_spec_mgr = new requirement_spec_mgr($db);
-
- $args = init_args();
- $gui = initializeGui($args,$req_spec_mgr);
-
- switch($args->doAction)
- {
- case 'export':
- $smarty = new TLSmarty();
- $smarty->assign('gui', $gui);
- $smarty->display($templateCfg->template_dir . $templateCfg->default_template);
- break;
-
- case 'doExport':
- doExport($args,$req_spec_mgr);
- break;
-
- }
-
-
- /**
- * checkRights
- *
- */
- function checkRights(&$db,&$user)
- {
- return $user->hasRight($db,'mgt_view_req');
- }
-
-
- /**
- * init_args
- *
- */
- function init_args()
- {
- $_REQUEST = strings_stripSlashes($_REQUEST);
- $args = new stdClass();
- $args->doAction = isset($_REQUEST['doAction']) ? $_REQUEST['doAction'] : 'export';
- $args->exportType = isset($_REQUEST['exportType']) ? $_REQUEST['exportType'] : null;
- $args->req_spec_id = isset($_REQUEST['req_spec_id']) ? $_REQUEST['req_spec_id'] : null;
- $args->export_filename = isset($_REQUEST['export_filename']) ? $_REQUEST['export_filename'] : "";
-
- $args->tproject_id = isset($_REQUEST['tproject_id']) ? $_REQUEST['tproject_id'] : 0;
- if( $args->tproject_id == 0 )
- {
- $args->tproject_id = isset($_SESSION['testprojectID']) ? $_SESSION['testprojectID'] : 0;
- }
- $args->scope = isset($_REQUEST['scope']) ? $_REQUEST['scope'] : 'items';
- return $args;
- }
-
-
- /**
- * initializeGui
- *
- */
- function initializeGui(&$argsObj,&$req_spec_mgr)
- {
- $gui = new stdClass();
- $gui->exportTypes = $req_spec_mgr->get_export_file_types();
- $gui->exportType = $argsObj->exportType;
- $gui->scope = $argsObj->scope;
- $gui->tproject_id = $argsObj->tproject_id;
-
- switch($argsObj->scope)
- {
- case 'tree':
- $gui->req_spec['title'] = lang_get('all_reqspecs_in_tproject');
- $gui->req_spec_id = 0;
- $exportFileName = 'all-req.xml';
- break;
-
- case 'branch':
- $gui->req_spec = $req_spec_mgr->get_by_id($argsObj->req_spec_id);
- $gui->req_spec_id = $argsObj->req_spec_id;
- $exportFileName = $gui->req_spec['title'] . '-req-spec.xml';
- break;
-
- case 'items':
- $gui->req_spec = $req_spec_mgr->get_by_id($argsObj->req_spec_id);
- $gui->req_spec_id = $argsObj->req_spec_id;
- $exportFileName = $gui->req_spec['title'] . '-child_req.xml';
- break;
-
- }
-
- $gui->export_filename = trim($argsObj->export_filename);
- if($gui->export_filename == "")
- {
- $gui->export_filename = $exportFileName;
- }
- return $gui;
- }
-
-
-
- /**
- * doExport
- *
- */
- function doExport(&$argsObj,&$req_spec_mgr)
- {
- $pfn = null;
- switch($argsObj->exportType)
- {
- case 'csv':
- $requirements_map = $req_spec_mgr->get_requirements($argsObj->req_spec_id);
- $pfn = "exportReqDataToCSV";
- $fileName = 'reqs.csv';
- $content = $pfn($requirements_map);
- break;
-
- case 'XML':
- $pfn = "exportReqSpecToXML";
- $fileName = 'reqs.xml';
- $content = TL_XMLEXPORT_HEADER;
- $optionsForExport['RECURSIVE'] = $argsObj->scope == 'items' ? false : true;
- $openTag = $argsObj->scope == 'items' ? "requirements>" : 'requirement-specification>';
-
- switch($argsObj->scope)
- {
- case 'tree':
- $reqSpecSet = $req_spec_mgr->getFirstLevelInTestProject($argsObj->tproject_id);
- $reqSpecSet = array_keys($reqSpecSet);
-
- break;
-
- case 'branch':
- case 'items':
- $reqSpecSet = array($argsObj->req_spec_id);
- break;
- }
-
- $content .= "<" . $openTag . "\n";
- if(!is_null($reqSpecSet))
- {
- foreach($reqSpecSet as $reqSpecID)
- {
- $content .= $req_spec_mgr->$pfn($reqSpecID,$argsObj->tproject_id,$optionsForExport);
- }
- }
- $content .= "</" . $openTag . "\n";
- break;
- }
-
- if ($pfn)
- {
- $fileName = is_null($argsObj->export_filename) ? $fileName : $argsObj->export_filename;
- downloadContentsToFile($content,$fileName);
- exit();
- }
- }
- ?>