/** * createTrackers - creates all the standard trackers for a given Group. * * @return boolean success. */ function createTrackers() { // first, check if trackers already exist $res = db_query("SELECT * FROM artifact_group_list \n\t\t\tWHERE group_id='" . $this->Group->getID() . "' AND datatype > 0"); if (db_numrows($res) > 0) { return true; } include $GLOBALS['gfcommon'] . 'tracker/artifact_type_definitions.php'; db_begin(); foreach ($trackers as $trk) { $at = new ArtifactType($this->Group); if (!$at || !is_object($at)) { db_rollback(); $this->setError('Error Getting Tracker Object'); return false; } // // Create a tracker // if (!$at->create(addslashes($trk[0]), addslashes($trk[1]), $trk[2], $trk[3], $trk[4], $trk[5], $trk[6], $trk[7], $trk[8], $trk[9], $trk[10])) { db_rollback(); $this->setError('Error Creating Tracker: ' . $at->getErrorMessage()); return false; } else { // // Create each field in the tracker // foreach ($trk[11] as $fld) { $aef = new ArtifactExtraField($at); //print($fld[0])."***|"; if (!$aef->create(addslashes($fld[0]), $fld[1], $fld[2], $fld[3], $fld[4])) { db_rollback(); $this->setError('Error Creating Extra Field: ' . $aef->getErrorMessage()); return false; } else { // // create each element in the field // foreach ($fld[5] as $el) { //print($el)."**"; $aefe = new ArtifactExtraFieldElement($aef); /* Allow us to provide a list as an element value - in doing so, we can provide a status field value for people wanting to set up custom statuses. The first element of any given array is the name, the second is the status_id (0, 1 or 2)*/ $el_name = $el; $el_status = 0; if (is_array($el) && $fld[1] == ARTIFACT_EXTRAFIELDTYPE_STATUS) { $el_name = $el[0]; $el_status = $el[1]; } if (!$aefe->create(addslashes($el_name), $el_status)) { db_rollback(); $this->setError('Error Creating Extra Field Element: ' . $aefe->getErrorMessage()); return false; } } } } } } db_commit(); return true; }
<?php // // FORM TO COPY Choices configured by admin for extra_field BOXES // $id = getIntFromRequest('id'); $fb = new ArtifactExtraField($ath, $id); $title = sprintf(_('Copy choices from custom field %1$s'), $fb->getName()); $ath->adminHeader(array('title' => $title)); echo "<h3>" . $title . "</h3>"; $efearr =& $ath->getExtraFieldElements($id); for ($i = 0; $i < count($efearr); $i++) { $field_id_arr[] = $efearr[$i]['element_id']; $field_arr[] = $efearr[$i]['element_name']; } echo '<table>'; echo '<tr>'; echo '<td></td><td><center><strong>'; echo _('Copy From'); echo '<br />'; echo $fb->getName(); echo '</center></strong></td><td></td><td><strong><center>'; echo _('Into trackers and custom fields'); echo '</center></strong></tr><tr><td><strong><center>'; echo '</center></strong></td>'; echo '<td valign=top>'; ?> <form action="<?php echo getStringFromServer('PHP_SELF') . '?group_id=' . $group_id . '&atid=' . $ath->getID(); ?>
echo "Could Not Insert AEFD for artifactgroup " . db_error(); db_rollback(); exit(10); } $res3 = db_query("UPDATE artifact_history SET old_value='{$group_name}',field_name='Group'\n\t\t\tWHERE old_value='{$artgroup_id}' AND field_name='artifact_group_id' AND artifact_id IN\n (SELECT artifact_id FROM artifact WHERE group_artifact_id='{$gaid}')"); if (!$res3) { echo "Could Not update history artifactgroup " . db_error(); db_rollback(); exit(11); } } if ($ur) { // // Convert ArtifactResolution To Extra Field // $aef = new ArtifactExtraField($at); $aef->create('Resolution', ARTIFACT_EXTRAFIELDTYPE_SELECT, 0, 0); $resolutionbox_id = $aef->getID(); if (!$resolutionbox_id) { echo "\nCould Not Get resolutionbox_id " . $aef->getErrorMessage(); db_rollback(); exit(12); } $resc = db_query("SELECT * FROM artifact_resolution"); for ($j = 0; $j < db_numrows($resc); $j++) { $resolution_id = db_result($resc, $j, 'id'); $resolution_name = addslashes(db_result($resc, $j, 'resolution_name')); if (strlen($resolution_name) < 1) { $resolution_name = '[empty]'; } $efe = new ArtifactExtraFieldElement($aef);
function artifacttype_to_soap($at_arr) { $return = array(); for ($i = 0; $i < count($at_arr); $i++) { if ($at_arr[$i]->isError()) { //skip if error } else { // Get list of extra fields for this artifact $extrafields = array(); $tmpextrafields = $at_arr[$i]->getExtraFields(); foreach ($tmpextrafields as $extrafield) { $aefobj = new ArtifactExtraField($at_arr[$i], $extrafield["extra_field_id"]); // array of available values $avtmp = $aefobj->getAvailableValues(); $avs = array(); for ($j = 0; $j < count($avtmp); $j++) { $avs[$j]["element_id"] = $avtmp[$j]["element_id"]; $avs[$j]["element_name"] = $avtmp[$j]["element_name"]; $avs[$j]["status_id"] = $avtmp[$j]["status_id"]; } $extrafields[] = array("extra_field_id" => $aefobj->getID(), "field_name" => $aefobj->getName(), "field_type" => $aefobj->getType(), "attribute1" => $aefobj->getAttribute1(), "attribute2" => $aefobj->getAttribute2(), "is_required" => $aefobj->isRequired(), "alias" => $aefobj->getAlias(), "available_values" => $avs, "default_selected_id" => 0); } $return[] = array('group_artifact_id' => $at_arr[$i]->data_array['group_artifact_id'], 'group_id' => $at_arr[$i]->data_array['group_id'], 'name' => $at_arr[$i]->data_array['name'], 'description' => $at_arr[$i]->data_array['description'], 'is_public' => $at_arr[$i]->data_array['is_public'], 'allow_anon' => $at_arr[$i]->data_array['allow_anon'], 'due_period' => $at_arr[$i]->data_array['due_period'], 'datatype' => $at_arr[$i]->data_array['datatype'], 'status_timeout' => $at_arr[$i]->data_array['status_timeout'], 'extra_fields' => $extrafields, 'custom_status_field' => $at_arr[$i]->data_array['custom_status_field']); } } return $return; }
<?php // // FORM TO BUILD SELECTION BOXES // $title = sprintf(_('Manage Custom Fields for %s'), $ath->getName()); $ath->adminHeader(array('title' => $title)); echo "<h2>" . $title . "</h2>"; /* List of possible user built Selection Boxes for an ArtifactType */ $efarr =& $ath->getExtraFields(); $eftypes = ArtifactExtraField::getAvailableTypes(); $keys = array_keys($efarr); echo "<br />"; $rows = count($keys); if ($rows > 0) { $title_arr = array(); $title_arr[] = _('Custom Fields Defined'); $title_arr[] = _('Type'); $title_arr[] = _('Elements Defined'); $title_arr[] = _('Add Options'); echo $GLOBALS['HTML']->listTableTop($title_arr); for ($k = 0; $k < $rows; $k++) { $i = $keys[$k]; echo '<tr ' . $GLOBALS['HTML']->boxGetAltRowStyle($i) . '>' . '<td>' . $efarr[$i]['field_name'] . '<a href="' . getStringFromServer('PHP_SELF') . '?update_box=1&id=' . $efarr[$i]['extra_field_id'] . '&group_id=' . $group_id . '&atid=' . $ath->getID() . '">' . ' [' . _('Edit') . ']</a>' . '<a href="' . getStringFromServer('PHP_SELF') . '?deleteextrafield=1&id=' . $efarr[$i]['extra_field_id'] . '&group_id=' . $group_id . '&atid=' . $ath->getID() . '">' . ' [' . _('Delete') . ']</a>' . '<a href="' . getStringFromServer('PHP_SELF') . '?copy_opt=1&id=' . $efarr[$i]['extra_field_id'] . '&group_id=' . $group_id . '&atid=' . $ath->getID() . '">' . ' [' . _('Copy') . ']</a>' . '</td>'; echo '<td>' . $eftypes[$efarr[$i]['field_type']] . '</td>'; /* List of possible options for a user built Selection Box */ $elearray = $ath->getExtraFieldElements($efarr[$i]['extra_field_id']);
/** * cloneFieldsFrom - clone all the fields and elements from another tracker * * @return boolean true/false on success */ function cloneFieldsFrom($clone_tracker_id) { global $sys_template_group; $g =& group_get_object($sys_template_group); if (!$g || !is_object($g)) { $this->setError('Could Not Get Template Group'); return false; } elseif ($g->isError()) { $this->setError('Template Group Error ' . $g->getErrorMessage()); return false; } $at =& new ArtifactType($g, $clone_tracker_id); if (!$at || !is_object($at)) { $this->setError('Could Not Get Tracker To Clone'); return false; } elseif ($at->isError()) { $this->setError('Clone Tracker Error ' . $at->getErrorMessage()); return false; } $efs =& $at->getExtraFields(); // // Iterate list of extra fields // db_begin(); foreach ($efs as $ef) { //new field in this tracker $nef = new ArtifactExtraField($this); if (!$nef->create(addslashes(util_unconvert_htmlspecialchars($ef['field_name'])), $ef['field_type'], $ef['attribute1'], $ef['attribute2'], $ef['is_required'], $ef['alias'])) { db_rollback(); $this->setError('Error Creating New Extra Field: ' . $nef->getErrorMessage()); return false; } // // Iterate the elements // $resel = db_query("SELECT * FROM artifact_extra_field_elements WHERE extra_field_id='" . $ef['extra_field_id'] . "'"); while ($el =& db_fetch_array($resel)) { //new element $nel = new ArtifactExtraFieldElement($nef); if (!$nel->create(addslashes(util_unconvert_htmlspecialchars($el['element_name'])), $el['status_id'])) { db_rollback(); $this->setError('Error Creating New Extra Field Element: ' . $nel->getErrorMessage()); return false; } } } db_commit(); return true; }