getID(), 'read') ; $query_id = getIntFromRequest('query_id'); $start = getIntFromRequest('start'); $paging = 0; // // The browse page can be powered by a pre-saved query // or by select boxes chosen by the user // // If there is a $query_id coming from the request OR the pref // was already saved, use the artifact factory that way. // // If the query_id = -1, unset the pref and use regular browse boxes // if (session_loggedin()) { $u =& session_get_user(); if (getStringFromRequest('setpaging')) { /* store paging preferences */ $paging = getIntFromRequest('nres'); if (!$paging) { $paging = 25; } $u->setPreference("paging", $paging); } if($query_id) { if ($query_id == '-1') { $u->setPreference('art_query'.$ath->getID(),''); } else { $aq = new ArtifactQuery($ath,$query_id); if (!$aq || !is_object($aq)) { exit_error($aq->getErrorMessage(),'tracker'); } $aq->makeDefault(); } } else { $query_id=$u->getPreference('art_query'.$ath->getID(),''); } } elseif ($query_id) { // If user is not logged, then use a cookie to store the current query. if (isset($_COOKIE["GFTrackerQuery"])) { $gf_tracker = unserialize($_COOKIE["GFTrackerQuery"]); } else { $gf_tracker = array(); } $gf_tracker[$ath->getID()] = $query_id; // Send the query_id as a cookie to save it. setcookie("GFTrackerQuery", serialize($gf_tracker)); $_COOKIE["GFTrackerQuery"] = serialize($gf_tracker); } elseif (isset($_COOKIE["GFTrackerQuery"])) { $gf_tracker = unserialize($_COOKIE["GFTrackerQuery"]); $query_id = (int)$gf_tracker[$ath->getID()]; } $af = new ArtifactFactory($ath); if (!$af || !is_object($af)) { exit_error(_('Could Not Get Factory'),'tracker'); } elseif ($af->isError()) { exit_error($af->getErrorMessage(),'tracker'); } if (!isset($_sort_col)) { /* default sort order: highest priority first */ $_sort_col = 'priority'; $_sort_ord = 'DESC'; } $offset = getStringFromRequest('offset'); $_sort_col = getStringFromRequest('_sort_col',$_sort_col); $_sort_ord = getStringFromRequest('_sort_ord',$_sort_ord); $max_rows = getIntFromRequest('max_rows', 25); $set = getStringFromRequest('set'); $_assigned_to = getIntFromRequest('_assigned_to'); $_status = getIntFromRequest('_status'); $_extra_fields = array() ; $aux_extra_fields = array() ; if ($set == 'custom') { /* may be past in next/prev url */ $i = $ath->getCustomStatusField(); $tmp_extra_fields = getArrayFromRequest('extra_fields'); if (isset($tmp_extra_fields[$i])) { $_extra_fields[$i] = $tmp_extra_fields[$i]; } } if (is_array($_extra_fields)){ $keys=array_keys($_extra_fields); foreach ($keys as $key) { if ($_extra_fields[$key] != 'Array') { $aux_extra_fields[$key] = $_extra_fields[$key]; } } } else { if (isset($_extra_fields)){ $aux_extra_fields = $_extra_fields; } else { $aux_extra_fields = ''; } } $af->setup($offset,$_sort_col,$_sort_ord,$paging,$set,$_assigned_to,$_status,$aux_extra_fields); // // These vals are sanitized and/or retrieved from ArtifactFactory stored settings // $_sort_col=$af->order_col; $_sort_ord=$af->sort; $_status=$af->status; $_assigned_to=$af->assigned_to; $_extra_fields=$af->extra_fields; $art_arr = $af->getArtifacts(); if (!$art_arr && $af->isError()) { exit_error($af->getErrorMessage(),'tracker'); } //build page title to make bookmarking easier //if a user was selected, add the user_name to the title //same for status use_javascript('/tabber/tabber.js'); $ath->header(array('atid'=>$ath->getID(), 'title'=>$ath->getName())); /** * * Build the powerful browsing options pop-up boxes * */ // // creating a custom technician box which includes "any" and "unassigned" // $engine = RBACEngine::getInstance () ; $techs = $engine->getUsersByAllowedAction ('tracker', $ath->getID(), 'tech') ; $tech_id_arr = array () ; $tech_name_arr = array () ; foreach ($techs as $tech) { $tech_id_arr[] = $tech->getID() ; $tech_name_arr[] = $tech->getRealName() ; } $tech_id_arr[]='0'; //this will be the 'any' row $tech_name_arr[]=_('Any'); if (is_array($_assigned_to)) { $_assigned_to=''; } $tech_box=html_build_select_box_from_arrays ($tech_id_arr,$tech_name_arr,'_assigned_to',$_assigned_to,true,_('Unassigned')); // // custom order by arrays to build a pop-up box // $order_name_arr=array(); $order_name_arr[]=_('ID'); $order_name_arr[]=_('Priority'); $order_name_arr[]=_('Summary'); $order_name_arr[]=_('Open Date'); $order_name_arr[]=_('Last Modified Date'); $order_name_arr[]=_('Close Date'); $order_name_arr[]=_('Submitter'); $order_name_arr[]=_('Assignee'); $order_arr=array(); $order_arr[]='artifact_id'; $order_arr[]='priority'; $order_arr[]='summary'; $order_arr[]='open_date'; $order_arr[]='last_modified_date'; $order_arr[]='close_date'; $order_arr[]='submitted_by'; $order_arr[]='assigned_to'; // // custom sort arrays to build pop-up box // $sort_name_arr=array(); $sort_name_arr[]=_('Ascending'); $sort_name_arr[]=_('Descending'); $sort_arr=array(); $sort_arr[]='ASC'; $sort_arr[]='DESC'; // // custom changed arrays to build pop-up box // $changed_name_arr=array(); $changed_name_arr[]=_('Any changes'); $changed_name_arr[]=_('Last 24H'); $changed_name_arr[]=_('Last 7days'); $changed_name_arr[]=_('Last 2weeks'); $changed_name_arr[]=_('Last 1month'); $changed_arr=array(); $changed_arr[]= 0x7fffffff; // Any $changed_arr[]= 3600 * 24; // 24 hour $changed_arr[]= 3600 * 24 * 7; // 1 week $changed_arr[]= 3600 * 24 * 14;// 2 week $changed_arr[]= 3600 * 24 * 30;// 1 month if ($art_arr && ($art_cnt = count($art_arr)) > 0) { $focus = getIntFromRequest('focus'); } else { $art_cnt = 0; $start = 0; $focus = 0; } $paging = 0; if (session_loggedin()) { /* logged in users get configurable paging */ $paging = $u->getPreference("paging"); echo '
\n", _('Change'), html_build_select_box_from_array(array( '10', '25', '50', '100', '1000'), 'nres', $paging, 1)); } else { echo "\n"; } /** * * Show the free-form text submitted by the project admin */ echo $ath->renderBrowseInstructions(); // // statuses can be custom in GForge 4.5+ // if ($ath->usesCustomStatuses()) { $aux_extra_fields = array(); if (is_array($_extra_fields)){ $keys=array_keys($_extra_fields); foreach ($keys as $key) { if (!is_array($_extra_fields[$key])) { $aux_extra_fields[$key] = $_extra_fields[$key]; } } } else { $aux_extra_fields = $_extra_fields; } $status_box=$ath->renderSelect ($ath->getCustomStatusField(),$aux_extra_fields[$ath->getCustomStatusField()],false,'',true,_('Any')); } else { if (is_array($_status)) { $_status=''; } $status_box = $ath->statusBox('_status',$_status,true,_('Any')); } // start of RDFa $proj_name = $group->getUnixName(); $proj_url = util_make_url_g($group->getUnixName(),$group_id); // the tracker's URIs are constructed in order to support addition of an OSLC-CM REST server // inside /tracker/cm/. There each tracker has a URL in the form .../project/PROJ_NAME/atid/ATID $tracker_stdzd_uri = util_make_url('/tracker/cm/project/'. $proj_name .'/atid/'. $ath->getID()); print ''._('No items found').'
'; echo db_error(); } $ath->footer(array()); // Local Variables: // mode: php // c-file-style: "bsd" // End: ?>