4 * GForge Extra Field Conversion Script
6 * Copyright 2004 GForge, LLC
9 * This file is part of FusionForge.
11 * GForge is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * GForge is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with GForge; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US
26 require_once dirname(__FILE__).'/../www/env.inc.php';
27 require_once $gfcommon.'include/pre.php';
28 require_once $gfcommon.'tracker/ArtifactExtraField.class.php';
29 require_once $gfcommon.'tracker/ArtifactExtraFieldElement.class.php';
31 // First of all, try to create the "alias" field if it doesn't exist
32 $res = db_query_params ('SELECT alias FROM artifact_extra_field_list',
35 if (!$res) { // error, the field doesn't exist
36 $res = db_query_params ('ALTER TABLE artifact_extra_field_list ADD COLUMN alias TEXT',
46 // Set up this script to run as the site admin
49 $res = db_query_params ('SELECT user_id FROM user_group WHERE admin_flags=$1 AND group_id=$2',
59 if (db_numrows($res) == 0) {
60 // There are no Admins yet, aborting without failing
65 $id=db_result($res,0,0);
70 $res=db_query_params ('SELECT group_id,group_artifact_id,use_resolution FROM artifact_group_list',
74 for ($i=0; $i<db_numrows($res); $i++) {
76 $group_id=db_result($res,$i,'group_id');
77 $gaid=db_result($res,$i,'group_artifact_id');
78 $ur=db_result($res,$i,'use_resolution');
80 $g = group_get_object($group_id);
81 if (!$g || !is_object($g)) {
82 echo "\nCould Not Get Group: $group_id";
87 $at = new ArtifactType($g,$gaid);
88 if (!$at || !is_object($at)) {
89 echo "\nCould Not Get ArtifactType: $gaid";
94 // Convert ArtifactCategory To Extra Field
96 $aef=new ArtifactExtraField($at);
97 $aef->create('Category',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
98 $catbox_id=$aef->getID();
100 echo "\nCould Not Get New Category Box ID: $gaid ".$aef->getErrorMessage();
104 $resc=db_query_params ('SELECT * FROM artifact_category WHERE group_artifact_id=$1',
107 for ($j=0; $j<db_numrows($resc); $j++) {
108 $cat_id=db_result($resc,$j,'id');
109 $cat_name=addslashes(db_result($resc,$j,'category_name'));
110 if (strlen($cat_name) < 1) {
114 $efe=new ArtifactExtraFieldElement($aef);
116 #$efe->create($cat_name);
117 if (!$efe->create($cat_name)) {
118 echo 'Group: '.$group_id.' Could not create category element: '.$cat_name.' '.$efe->getErrorMessage();
122 $efe_id=$efe->getID();
123 //echo 'Artifact Category: Group: '.$group_id;
124 //print_r($efe->data_array);
126 #DEBUG echo "\nDid Not Get efe_id";
127 echo "\nDid Not Get efe_id (group_id: $group_id)";
131 $res2=db_query_params ('INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
132 SELECT artifact_id,$efe_id,$catbox_id FROM artifact
133 WHERE category_id=$1 AND group_artifact_id=$2',
138 echo "Could Not Insert AEFD for category " . db_error();
142 $res3=db_query_params ('UPDATE artifact_history SET old_value=$1,field_name=$2
143 WHERE old_value=$3 AND field_name=$4 AND artifact_id IN
144 (SELECT artifact_id FROM artifact WHERE group_artifact_id=$5)',
152 echo "Could Not update history category " . db_error();
159 // Convert ArtifactGroup To Extra Field
161 $aef=new ArtifactExtraField($at);
162 $aef->create('Group',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
163 $groupbox_id=$aef->getID();
165 echo "\nCould Not Get groupbox_id ".$aef->getErrorMessage();
169 $resc=db_query_params ('SELECT * FROM artifact_group WHERE group_artifact_id=$1',
172 for ($j=0; $j<db_numrows($resc); $j++) {
173 $artgroup_id=db_result($resc,$j,'id');
174 $group_name=addslashes(db_result($resc,$j,'group_name'));
175 if (strlen($group_name) < 1) {
176 $group_name='[empty]';
179 $efe=new ArtifactExtraFieldElement($aef);
180 //$efe->create($group_name);
181 if (!$efe->create($group_name)) {
182 echo 'Group: '.$group_id.' Could not create group element: '.$group_name.' '.$efe->getErrorMessage();
186 //echo 'Artifact Group: Group: '.$group_id;
187 //print_r($efe->data_array);
188 $efe_id=$efe->getID();
190 echo "\nDid Not Get efe_id";
194 $res2=db_query_params ('INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
195 SELECT artifact_id,$efe_id,$groupbox_id FROM artifact
196 WHERE artifact_group_id=$1 AND group_artifact_id=$2',
201 echo "Could Not Insert AEFD for artifactgroup " . db_error();
205 $res3=db_query_params ('UPDATE artifact_history SET old_value=$1,field_name=$2
206 WHERE old_value=$3 AND field_name=$4 AND artifact_id IN
207 (SELECT artifact_id FROM artifact WHERE group_artifact_id=$5)',
215 echo "Could Not update history artifactgroup " . db_error();
223 // Convert ArtifactResolution To Extra Field
225 $aef=new ArtifactExtraField($at);
226 $aef->create('Resolution',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
227 $resolutionbox_id=$aef->getID();
228 if (!$resolutionbox_id) {
229 echo "\nCould Not Get resolutionbox_id ".$aef->getErrorMessage();
233 $resc=db_query_params ('SELECT * FROM artifact_resolution',
236 for ($j=0; $j<db_numrows($resc); $j++) {
237 $resolution_id=db_result($resc,$j,'id');
238 $resolution_name=addslashes(db_result($resc,$j,'resolution_name'));
239 if (strlen($resolution_name) < 1) {
240 $resolution_name='[empty]';
242 $efe=new ArtifactExtraFieldElement($aef);
243 // $efe->create($resolution_name);
244 if (!$efe->create($resolution_name)) {
245 echo 'Group: '.$group_id.' Could not create resolution element: '.$resolution_name.' '.$efe->getErrorMessage();
249 //echo 'Artifact Group: Group: '.$group_id;
250 //print_r($efe->data_array);
251 $efe_id=$efe->getID();
253 echo "\nDid Not Get efe_id";
257 $res2=db_query_params ('INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
258 SELECT artifact_id,$efe_id,$resolutionbox_id FROM artifact
259 WHERE resolution_id=$1 AND group_artifact_id=$2',
260 array($resolution_id,
264 echo "Could Not Insert AEFD for resolution " . db_error();
268 $res3=db_query_params ('UPDATE artifact_history SET old_value=$1,field_name=$2
269 WHERE old_value=$3 AND field_name=$4 AND artifact_id IN
270 (SELECT artifact_id FROM artifact WHERE group_artifact_id=$5)',
271 array($resolution_name,
278 echo "Could Not update history resolution " . db_error();